문제

거기에 어떤 좋은 논문을 논의하는 방법을 동적 프로그램을 병렬화하지?

도움이 되었습니까?

해결책

IIRC,당신이 일반적으로 수행 가진 동적인 프로그래밍을 재귀적으로 나눌 문제로 서브 문제들,그리고 조립하는 최적의 솔루션에서 최적의 subsolutions.어떻게 효과적이는 모두 최적의 subsolutions 내장되어 있으로 캐시 그래서 그들이 필요로하지 않을 다시 계산됩니다.

는 경우 문제를 나눌 수 있습니다 여러 가지 방법으로,당신할 수 있는 포크에 대한 해석은 각 subsolution.을 경우 각각기(sub)문제가 평균 1+엡실론(에 대한 엡실론 흥미롭게도보다 더 영)가능한 subsolutions,당신을 얻을 것이 많은 병렬 처리 이 방법입니다.당신은 아마이 필요에 잠금을 캐시 항목을 보호하는 개인 솔루션에서 생성되는 한 번 이상.

당신은 언어가 필요할 수 있는 포크 하위 작업을 보다 더 싸게 작업을 해결하는 행복의 많은 갈래에서 작업을 한다.일반적인 병렬로 제공 대부분의 언어에서 이렇게 심;당신은 할 수 없이 많은 갈래의 작업에서 사용하는 시스템이"큰 스택 모델은"(참조하십시오 어떻게 stackless 언어로 작동하는가?).

우리가 구현된 우리의 병렬 프로그래밍 언어,PARLANSE 를 얻을,언어는 특성.

다른 팁

최근 공유 잠금 해시 테이블을 통해 공유 메모리 멀티 코어 컴퓨터에서 DP를 병렬화하는 방법을 보여주는 논문을 발표했습니다.

Stivala, A. 및 Stuckey, PJ 및 Garcia de la Banda, M. 및 Hermenegildo, M. 및 Wirth, A. 2010 "잠금없는 병렬 동적 프로그래밍"J. 병렬 분포. 컴퓨터. 70 : 839-848 doi : 10.1016/j.jpdc.2010.01.004

http://dx.doi.org/10.1016/j.jpdc.2010.01.004

기본적으로 여러 스레드를 시작합니다. 모두 계산하려는 DP의 값으로 시작하여 동일한 코드를 실행하고, 하향식 (재귀 적으로)을 계산하고 공유 잠금 해시 테이블에서 메모를하지만 순서를 무작위로 만드는 것과 동일한 코드를 실행합니다. 하위 문제는 스레드가 계산하는 하위 문제가 분기되도록 계산됩니다.

구현 측면에서, 우리는 UNIX 유형 시스템에서 C와 PTHREADS를 사용했으며, 공유 메모리를 가질 수 있고 스레드 간의 잠금없는 동기화를위한 CAS (CompareAndswap)를 가질 수 있도록 필요합니다.

이 논문은 Elsevier Journal에 출판되었으므로 University Library 또는 이와 유사한 구독을 통해 위의 액세스에 액세스해야합니다. Stuckey의 웹 페이지를 통해 사전 인쇄 사본을 얻을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top