我必须用固定的时间步长来求解ODE系统。在每一个时间步,我必须计算出一些类似的方程的输出(我正在编程一个神经网络,我必须计算每个神经元的值)。这些神经元由一个ODE系统表示)。因此,我想在循环内并行计算。我试着使用线程包,但我应该做错事,因为它不起作用。。。(在下面的代码中,为了清晰起见,我跳过了输入的生成)class EBNMCPU(threading.Thread):

def __init__(self, threadID, Ts, OnDir):

self.threadID = threadID

self.Neuron=NM.EBN(Ts,Dir=OnDir)

threading.Thread.__init__(self)

def run(self,Glu=[np.array([1.0],dtype='float'),0.0],GlyOPN=np.array([1.0],dtype='float'),GlyIBN=np.array([0.0],dtype='float')):

threadLock.acquire()

self.Neuron.NextStep(Glu, GlyOPN, GlyIBN)

threadLock.release()

def getOutput(self):

return self.Neuron.getOutput()

if __name__ == '__main__':

Ts=np.array( [0.005] , dtype=float)

threadLock = threading.Lock()

EBN=[]

for ii in np.arange(0,10):

EBN.append(EBNMCPU(ii,Ts,OnDir=0.0))

for tc in EBN:

tc.start()

for ii in np.arange(0,NSample):

for tc in EBN:

tc.run([np.array([AllY[ii,1]]),0.0],np.array([AllY[ii,2]]),np.array([AllY[ii,3]]))

for tc in EBN:

tc.join()

问题是我在我的系统管理器中没有看到任何并行活动。。。在

感谢您的意见/帮助

皮埃尔

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐