Was ich sehe, ist, dass die Numpy-Routine deutlich schneller ist als meine Routine, wenn beide seriell ausgeführt werden (wie erwartet).
Wenn ich jedoch dieselben Routinen innerhalb einer Multiprocessing-Aufgabe verwende, ist die Numpy-Routine etwa 100x langsamer. Und nur bei my_inv sehe ich eine parallele Beschleunigung.
Ich würde mich über jede Erklärung freuen – auch über offensichtliche.
Code: Select all
from numpy import eye, inf
from numpy.linalg import norm, inv
from numpy.random import rand, seed
import time
import multiprocessing as mp
mp.set_start_method('fork',force=True)
def task(N):
S = eye(N)
# inv(S) # Very slow
my_inv(S) # okay
def process_serial(N,num_tasks):
for _ in range(num_tasks):
task(N,)
def process_parallel(N,num_tasks):
itlist = [(N,)]*num_tasks
with mp.Pool() as pool:
pool.starmap(task,itlist)
pool.close()
pool.join()
num_tasks = 1
Mobile version