Ich schreibe ein Makro in Julia, die eine bestimmte Funktion zwischen vielen Prozessoren aufteilen kann. Ich habe folgende:Makro mit Funktion als Eingabe in Julia
macro parallel_calc(N::Int,proc::Int=4)
n=round(Int,N/proc);
proc_sum = @parallel (+) for i=1:proc
f(n)
end
return proc_sum/proc
end
Das Problem ist, ich das Makro schreiben will, so dass
@parallel_calc f(n)
Und dann wird es in der Lage sein, den Job automatisch zwischen meinen Prozessoren aufgeteilt. Gibt es einen Weg in Julia, ein Makro zu schreiben, das eine Funktion als Eingabe nimmt? Ich habe versucht, online zu suchen, aber ich habe nichts gefunden, was helfen könnte. Ich habe auch versucht mit
@everywhere f(n)
Nach dem Hinzufügen meiner Prozessoren, aber es läuft deutlich langsamer als das oben definierte Makro. Ich muss ein neues Makro definieren, das die Rechenlast gleichmäßig (oder fast gleich) auf meine verschiedenen Prozessoren aufteilt.