MPI4PY и FFT работают медленнее с каждым ядром

#numpy #scipy #fft #mpi4py

Вопрос:

Я запускаю код, который использует несколько fft и iffts массива numpy, работающих на raspberry pi. Код должен выполняться линейно, но я хочу посмотреть на серию начальных массивов и увидеть результат после нескольких fft / iffts. Я пытаюсь использовать MPI4PY для просмотра серии различных исходных массивов, каждый раз, когда я добавляю n дополнительных ядер, процесс занимает n* больше времени на один цикл, как будто он выполняется линейно, а не параллельно.

Пример кода, где uu-массив numpy, созданный в функции Create_Pulse2

 def testfft2(self):
    start=time.time()
    self.Create_Pulse2()
    for t in range(1,100):
        temp1f=np.fft.ifft(self.uu)
        temp2=np.fft.fft(temp1f)
    print('The loop time is' str(time.time()-start))
    return (time.time()-start)
 

на 1 ядре

 The loop time is7.22299313545
 

на 4 ядрах

 The loop time is27.4755029678
The loop time is28.1344909668
The loop time is28.0918269157
The loop time is28.6027998924
 

Я пробовал использовать numpy и scipy для БПФ, но результат тот же. Используют ли numpy и scipy уже более 1 процессора?

Спасибо