2014-12-23 2 views
0

나는 운동 몬테 카를로 코드가 있습니다. 이제 kinetic 및 따라서 각 루프는 현재 상태를 미래 상태로 업데이트하여 for 루프에 종속되게 만듭니다.종속 루프에 대한 MATLAB 병렬 처리

matlab의 병렬 컴퓨팅 기능을 사용하고 싶지만 유명한 'parfor'명령은 독립 루프에서만 작동합니다.

내 질문에, 루프가 독립적이지 않은 코드를 병렬 처리하기 위해 matlab에서 병렬 컴퓨팅을 사용할 수 있습니까?

+0

이러한 병렬 처리는 어떻게 작동합니까? n 번째 반복에 대한 입력은 (n-1) 번째 반복이 완료 될 때까지 알 수 없습니다. – Daniel

+0

나는 당신의 요지를 이해합니다. 그러나 분자 동역학에서는 입자의 현재 상태를 기반으로 입자의 위치와 운동량을 업데이트하고 사람들은 클러스터에서이를 실행합니다. 어떻게 작동합니까? – nitin

답변

2

일반적으로 이러한 종류의 계산은 그리드에서 수행되며, 그리드는 각 작업자가 계산할 그리드의 자체 부분을 가지고 작업자에게 분산됩니다. 그리드의 한 지점에있는 값은 인접한 점에 의존하기 때문에 일반적으로 독립적으로 수행 할 수는 없습니다. 이러한 경계 값은 메시지 전달 또는 공유 메모리와 같은 메커니즘을 사용하여 작업자간에 전달됩니다.

MATLAB에서 spmd or communicating jobs with the labSend and labReceive functions을 사용하거나 distributed arrays을 사용할 수 있습니다.