6

하이 퍼포먼스 연산을위한 MPI.NET 대신 Task Parallel Library가 필요합니까?

MPI.NET이 여기에 있습니다.http://www.osl.iu.edu/research/mpi.net/svn/는 Microsoft .NET 환경을위한 MPI (Message Passing Interface)의 고성능 구현, 사용이 간편한 구현입니다. MPI는 컴퓨팅 클러스터와 같은 분산 메모리 시스템에서 실행되는 병렬 프로그램을 작성하기위한 사실상의 표준입니다.

.NET 4 TPL은 다음과 같이 말합니다. "TPL (Task Parallel Library)은 .NET Framework 버전 4의 System.Threading 및 System.Threading.Tasks 네임 스페이스에있는 공용 형식 및 API 집합입니다. TPL의 목적은 TPL은 동시성의 정도를 동적으로 조정하여 사용 가능한 모든 프로세서를 가장 효율적으로 사용할 수 있도록합니다. 또한 TPL은 작업의 분할, 스레드의 스케줄링을 처리합니다 ThreadPool, 취소 지원, 상태 관리 및 기타 낮은 수준의 세부 정보를 제공합니다 .TPL을 사용하면 코드 성능을 극대화하고 프로그램이 수행하는 작업에 집중할 수 있습니다. "

내 목표는 Windows HPC 2008에서 실행할 수있는 응용 프로그램을 작성하는 것입니다.... 어느쪽으로 가야합니까?

2 답변


2

메시지 전달은 병렬 프로그래밍이라는 아이디어를 다루는 다른 방법입니다. Axum과 Erlang은 모두 메시지 전달을 사용합니다. 그것들은 두 가지 특정 구현을 처리하기 때문에 직접 비교할 수 없습니다.

메시지 전달에서 보았던 이점은 모든 네트워크 / 프로세스 경계를 투명하게 만들 수 있고 메시지 전달 자체가 기본 스레드 (모든 메시지와 액터는 하나의 스레드에있을 수 있음)에 의존하지 않는다는 것입니다.

TPL은 제한된 이해로 .NET의 현재 스레딩 모델을 향상 / 대체 / 개선합니다. 즉, 제어하는 실제 스레드가 있고 인수를 전송하거나 공유 상태를 사용하여 통신 할 수 있습니다.

그것의 처음부터, 그리고 디자인 양복 코드의 아주 작은 세그먼트로 나눠져 있다면 나는 MPI.NET을 제안합니다. 작업 유형이 CPU 집약적 인 경우 (예 : 수학적 작업) TPL 경로를 제안합니다.

편집하다:오랫동안 편집,이 답변은 오래되었습니다! MPI.NET은 HPC 노드의 통신 경계를 투명하게 구성 할 수 있으므로 HPC에 직접적으로 적합합니다. MPI.NET은 엔드 포인트에 메시지를 보냅니다.이 점은 구성 파일의 IP / 포트 주소로 정의됩니다. 이 코드는 끝점이 네트워크 경계를 넘는 것을 알지 못합니다.

HPC (지원되는지 확실하지 않음)에서 TPL을 선택하면 코드가 노드를 인식하고 처리를 다른 것으로 전달하는 방법이 필요하므로 이점을 얻을 수 없습니다.


  • 그렇다면 HPC 애플리케이션 용 MPI.NET을 제안 하시겠습니까? - Jalal El-Shaer
  • 한번 봐봐 plzresourcekit.windowshpc.net/MORE_INFO/SeqToParallelHPC.html - Jalal El-Shaer
  • 안녕하세요. jalchr, 불행히도 간단하지 않습니다. 무거운 수학적 리프팅을 수행한다면 (즉, 하나의 스레드를 많이 스로틀하게됩니다) TPL은 표준 모델에서 스레딩하기위한 좋은 프레임 워크입니다. MPI.NET (나 Axum)의 유일한 유익한 영역은 현재 네트워크를 사용하는 것으로, 배우는 CPU를 사용하지 않고도 네트워크 포트에서 수신 대기 할 수 있습니다. MPI.NET은 그다지 적합하지 않습니다. - Adam Houldsworth

6

TPL은 MPI.NET이 수행하는 동안 분산 컴퓨팅을 지원하지 않습니다.

관련된 질문

최근 질문