Я пытался распараллелить следующий код, и мое удивление было, по меньшей мере, большим, когда я обнаружил, что для запуска этого кода фактически используются все ядра моего компьютера (numpy 1.15.1, Ubuntu 18.04, 24 ядра) !!!
import numpy as np
if __name__ == '__main__':
q = np.random.rand(200,3)
bi = np.random.rand(2000)
tr = np.random.rand(1000, 2000, 3)
def serial_worker(frame):
exponents = np.tensordot(frame, q, axes=(1, 1))
exponentials = np.exp(1j * exponents)
return np.tensordot(bi, exponentials, axes=1)
amps = np.asarray([serial_worker(frame) for frame in tr])
Оба python2 script.py
и python3 script.py
используют все ядра. Numpy предварительно настроен на использование всех ядер? В противном случае, кто-нибудь может объяснить мне, как определить, какие строки выполняются параллельно?