나는 대학 신입생이며 파이썬 초보자이기 때문에 나와 함께 곰. 일부 행렬 작업을 병렬 처리하려고합니다.병렬화 된 파이썬 코드에서 메모리 공유
def testfunc(connectionMatrix, qCount, iCount, Htry, tStepCount):
test = connectionMatrix[0:qCount,0:iCount].dot(Htry[tStepCount-1, 0:iCount])
return test
f1 = job_server.submit(testfunc, (self.connectionMatrix, self.qCount, self.iCount, self.iHtry, self.tStepCount), modules = ("scipy.sparse",))
f2 = job_server.submit(testfunc, (self.connectionMatrix, self.qCount, self.iCount, self.didtHtry, self.tStepCount), modules = ("scipy.sparse",))
r1 = f1()
r2 = f2()
self.qHtry[self.tStepCount, 0:self.qCount] = self.qHtry[self.tStepCount-1, 0:self.qCount] + self.delT * r1 + 0.5 * (self.delT**2) * r2
X 축 및 Y 축상의 백분율 고속화에 행렬의 크기가 정상 커브가 보인다 : 여기 ParallelPython 모듈을 사용하여 내 시도이다. 그것은 100x100 매트릭스에서 30 %의 속도 증가로 모자를 씌운 것 같습니다. 작고 큰 행렬은 증가가 적고 행렬이 충분히 작고 충분한 행렬을 사용하면 직렬 코드가 더 빠릅니다. 제 생각에 문제는 논쟁이 지나가고 있다는 것입니다. 큰 매트릭스를 복사하는 오버 헤드는 실제로 작업 그 자체보다 오래 걸립니다. 이 문제를 해결하려면 어떻게해야합니까? 메모리 공유를 통합하고 참조로 행렬을 전달하는 방법이 있습니까? 보시다시피, 인수가 수정되어 읽기 전용 액세스가 될 수 없습니다.
감사합니다.
와우, 신입생 프로그래밍이 내 하루보다 _easier_라고 생각했습니다. 표준 라이브러리의 절반만으로 C 또는 기괴한 리스프 (lisp) 방언 대신 파이썬을 사용한다는 사실은 여러분이 더 재미있는 프로그램을 작성할 수 있음을 의미합니다. :) – abarnert
나는 내 머리 위로 일종의이지만, 나는 중요한 프로그램 경험을 가진이 여름 프로그램에 적용한 유일한 사람이라고 믿습니다. 그래서 나는 유일한 선택이었고 이상적이었습니다. 그러나, 나는 아직도 아주 근사하다. – Nino