Распараллелить вложенные циклы с целым числом без изменения вывода - PullRequest
1 голос
/ 31 октября 2019

Я должен запустить этот код для NT = 512. Можете ли вы, люди, помочь мне, как распараллелить эти три для цикла так, чтобы я получил исходный вывод. Это должно занять меньше времени

    import numpy as np
    nt=128
    threed_full=[] 
    threed_real=[]
    threed_img=[]
        for i in range (nt):
            for j in range(nt):
                for k in range (nt):
                    threed=S3resp(t[k],(t[k]-ta[i]),(t[k]-tb[j]),tc,t_inc)
                    threed_full.append(threed)
                    threed_real.append(numpy.real(threed))
                    threed_img.append(numpy.imag(threed))

, где t,ta ,tb - массив длины nt, а tc - просто значение. когда nt=128 этот цикл занимает больше одного часа. S3 resp - это функция, которая определена в другом коде. Можете ли вы помочь мне сделать это быстрее. Я хочу запустить его для nt=512. Не могли бы вы помочь мне найти другой способ найти тот же результат, что и здесь, с более быстрой шкалой времени. Спасибо.

Этот верхний является исходным кодом без распараллеливания.

from itertools import product
threed_real=[]
threed_img=[]

a_grid=range(32)
b_grid=range(32)
for i, j in product(a_grid,b_grid):
    for k in range(nt):
        threed=S3resp(t[k],(t[k]-ta[i]),(t[k]-tb[j]),tc,t_inc)
        threed_real.append(numpy.real(threed))
        threed_img.append(numpy.imag(threed))
numpy.savetxt("paralllel real.out",threed_real,fmt="%25.18f")
numpy.savetxt("parrele ima.out",threed_img,fmt="%25.18f")

С распараллеливанием, но я не получил никакого ответа.


import multiprocessing as mp
p = mp.Pool()
dim1, dim2, dim3 = 32, 32, 32
import itertools
input = ((t[k],(t[k]-ta[i]),(t[k]-tb[j]),tc,t_inc) for i,j,k in itertools.combinations_with_replacement(range(dim3), 3) if i < dim1 and j < dim2)
results = p.map(S3resp, input)
p.close()
p.join()

Это такжея пытался, но все равно провал

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...