From 79a162cfdb597d24351cf617e9e4fed4b42b0dfc Mon Sep 17 00:00:00 2001 From: Francesco Minnocci Date: Thu, 28 Sep 2023 19:07:50 +0200 Subject: [PATCH] feat: temptative distributed code --- report/report.pdf | Bin 272173 -> 274225 bytes report/report.tex | 5 ++--- solve.jl | 12 +++++++++--- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/report/report.pdf b/report/report.pdf index b61f17bea28d66a6a6fb586718104c4670ed1f37..3d281348b766bd94e8a63e935df1304294484276 100644 GIT binary patch delta 42230 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 z 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 Xxb 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 delta 40025 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 diff --git a/report/report.tex b/report/report.tex index 5faf5b1..251c70d 100644 --- a/report/report.tex +++ b/report/report.tex @@ -203,8 +203,8 @@ This was done in Julia by using the \texttt{Threads.@threads} macro, which autom However, in the case of looping over multiple roots, this didn't improve the performance, as the overhead of the multithreading was too big compared to the actual computation time, as the systems were too small to benefit from this kind of parallelization, as can be seen by the results in Appendix \hyperref[sec:mt]{B}. -\subsection{MPI} -Next, we tried to use MPI to parallelize the tracking of the roots. +\subsection{Distributed} +Next, we tried to use \textit{Distributed.jl} to parallelize the tracking of the roots. This was done by using the \texttt{MPI.jl} \cite{JuliaMPI} package, which provides a Julia interface to the MPI library. \section{Appendix A: Implementation} @@ -267,5 +267,4 @@ Here are the plots for the solutions of four different 2x2 systems, with the sin \thebibliography{2} \bibitem{BertiniBook} Bates, Daniel J. \textit{Numerically solving polynomial systems with Bertini}. SIAM, Society for Industrial Applied Mathematics, 2013. -\bibitem{JuliaMPI} Simon Byrne, Lucas C. Wilcox, and Valentin Churavy (2021) "MPI.jl: Julia bindings for the Message Passing Interface". JuliaCon Proceedings, 1(1), 68, doi: 10.21105/jcon.00068 \end{document} diff --git a/solve.jl b/solve.jl index 6e5905a..597ee90 100644 --- a/solve.jl +++ b/solve.jl @@ -1,6 +1,7 @@ # External dependencies using TypedPolynomials using LinearAlgebra +using Distributed # Local dependencies include("random_poly.jl") @@ -16,15 +17,17 @@ using .EulerNewton using .AdaptStep using .Plot +# Launch worker processes +num_cores = parse(Int, ENV["SLURM_CPUS_PER_TASK"]) +addprocs(num_cores) + # Main homotopy continuation loop function solve(F, (G, roots) = start_system(F), maxsteps = 1000) H=homotopy(F,G) solutions = [] step_array = [] - Threads.@threads for r in roots - # for r in roots - println("New root") + @distributed for r in roots t = 1.0 step_size = 0.01 x0 = r @@ -41,6 +44,9 @@ function solve(F, (G, roots) = start_system(F), maxsteps = 1000) push!(step_array, steps) end + # Gather results from worker processes + solutions = fetch(solutions) + step_array = fetch(step_array) return (solutions, step_array) end