데이터 분산 모델을위한 병렬 알고리즘을 설계하는 동안 모범 사례를 파악하려고합니다. 블록 분포에 대한 찬성과 반대가 될 수있는 것은 메모리에있는 데이터의 주기적 분포에 대한 것입니다. 어떤 도움을 주시면 감사하겠습니다.병렬 알고리즘 설계
3
A
답변
1
Quinn의 "MPI 및 OpenMP가있는 C의 병렬 프로그래밍"은 병렬 프로그래밍에서 데이터를 배포하는 여러 가지 방법의 많은 예제를 제공합니다. 사용자의 필요에 따라 어느 방법이 가장 편리한 지 파악하는 데 도움이되는 의사 결정 트리도 있습니다.
1
공유 메모리의 블록 배포는 알고리즘 실행 중에 동기화가 거의 필요없는 청크로 작업을 중단하는 알고리즘에 가장 적합합니다.
병렬 알고리즘 설계에서는 프로세스 간의 동기화 병목 현상을 최소화해야합니다. 예를 들어, 그리드가 스트립 (프로세서 당 1 개)으로 분할되고 동기화가 수행되지 않는 2-D 그리드에 대한 Gauss-Seidel 완화 방법이 있습니다. 각 프로세서는 독립 수렴 값을 계산하고 그 수에 도달하면 종료합니다.
또한 병렬 및 순차 알고리즘에 큰 영향을 미칠 수있는 참조의 데이터 지역을 고려해야합니다.
관련 문제
- 1. SRP 알고리즘 설계
- 2. 픽셀을 전달하는 대용량 병렬 알고리즘
- 3. pi를 계산하는 병렬 알고리즘 구현
- 4. 알고리즘 설계 및 분석 분리
- 5. 첫 번째 발생 병렬 문자열 매칭 알고리즘
- 6. 시퀀스 정렬 여부를 확인하는 병렬 알고리즘
- 7. 병렬 브 루트 포스 알고리즘 그래서
- 8. 차량 라우팅/리소스 스케줄링 알고리즘 설계
- 9. 병렬 코드로 전환
- 10. 모두 또는 아무것도 - 빠른 발견 적 최단 경로 알고리즘 (병렬?)
- 11. 분산 된 병렬 트리 검색 알고리즘 제안 사항은 무엇입니까?
- 12. 어떤 코드를 병렬 처리해야합니까?
- 13. LinqToSql - 병렬 - DataContext 및 병렬
- 14. 작업 병렬 라이브러리 및 다중 병렬 작업
- 15. 스칼라 병렬 컬렉션에서 어떤 작업을 병렬 처리합니까?
- 16. OpenMP - 병렬 코드 내에서 병렬 코드 실행
- 17. 그래프 알고리즘, 근사 알고리즘
- 18. 병렬 부풀기
- 19. 병렬 처리
- 20. 병렬 EntityFramework
- 21. 병렬 디버거
- 22. 자동 병렬
- 23. 알고리즘
- 24. 스케줄링 알고리즘
- 25. 데이터베이스 설계
- 26. 데이터베이스 설계
- 27. 신경망 설계
- 28. 설계 스키마는
- 29. 데이터베이스 설계
- 30. 설계 테이블
"공유 메모리에서의 블록 배포는 알고리즘을 실행하는 동안 동기화가 거의 필요없는 청크로 작업을 중단하는 알고리즘에 가장 적합합니다." -이 문장은 필연적 인 것은 아니지만, 필자가 독립적 인 작업 세트를 제공하는 순환 분해를 찾을 수 있기 때문에, 블록에서는이를 수행 할 수 없다. –
@Artem Barger : 정확합니다. 내가 기본 토폴로지, 즉 그리드, 토러스 등을 언급 했어야했다. –
Gauss-Seidel은 병렬 적으로 "수행"하는 병적으로 나쁜 알고리즘이다. 당신이 제안하고있는 것은 각각의 스트립 내에 Gauss-Seidel과 함께 라인 - 자코비 (Line-Jacobi)입니다. 알고리즘은 매우 가파르게 수렴합니다 (이미 가끔 끔찍한 적절한 Gauss-Seidel과 비교할 때). – Jed