하이 퍼포먼스 연산을위한 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에서 실행할 수있는 응용 프로그램을 작성하는 것입니다.... 어느쪽으로 가야합니까?
메시지 전달은 병렬 프로그래밍이라는 아이디어를 다루는 다른 방법입니다. Axum과 Erlang은 모두 메시지 전달을 사용합니다. 그것들은 두 가지 특정 구현을 처리하기 때문에 직접 비교할 수 없습니다.
메시지 전달에서 보았던 이점은 모든 네트워크 / 프로세스 경계를 투명하게 만들 수 있고 메시지 전달 자체가 기본 스레드 (모든 메시지와 액터는 하나의 스레드에있을 수 있음)에 의존하지 않는다는 것입니다.
TPL은 제한된 이해로 .NET의 현재 스레딩 모델을 향상 / 대체 / 개선합니다. 즉, 제어하는 실제 스레드가 있고 인수를 전송하거나 공유 상태를 사용하여 통신 할 수 있습니다.
그것의 처음부터, 그리고 디자인 양복 코드의 아주 작은 세그먼트로 나눠져 있다면 나는 MPI.NET을 제안합니다. 작업 유형이 CPU 집약적 인 경우 (예 : 수학적 작업) TPL 경로를 제안합니다.
편집하다:오랫동안 편집,이 답변은 오래되었습니다! MPI.NET은 HPC 노드의 통신 경계를 투명하게 구성 할 수 있으므로 HPC에 직접적으로 적합합니다. MPI.NET은 엔드 포인트에 메시지를 보냅니다.이 점은 구성 파일의 IP / 포트 주소로 정의됩니다. 이 코드는 끝점이 네트워크 경계를 넘는 것을 알지 못합니다.
HPC (지원되는지 확실하지 않음)에서 TPL을 선택하면 코드가 노드를 인식하고 처리를 다른 것으로 전달하는 방법이 필요하므로 이점을 얻을 수 없습니다.
TPL은 MPI.NET이 수행하는 동안 분산 컴퓨팅을 지원하지 않습니다.