저는 과학적 컴퓨팅 커뮤니티를위한 방정식의 선형 시스템 (Ax = b 형식)을 반복적으로 해결하기위한 코드를 개발 중입니다.Scientific Computing :: OpenMP 또는 Pthreads
필자는 BLAS와 LAPACK을 기본 행렬 서브 루틴에 사용했지만 수동 병렬 처리를위한 범위가 있음을 알게되었습니다. 나는 OpenMP와 PThreads라는 두 가지 선택을 할 수있는 공유 메모리 시스템을 연구 중이다.
시간이 가장 좋은 요소 (코드의 성능은 &)가 아니라고 가정하면 더 나은 미래의 증거가 될 수 있으며 휴대용 (CUDA) 방식으로 병렬화 될 수 있습니까? 성능 향상에 가치가있는 Pthread를 사용하는 데 소요 된 시간입니까?
내 응용 프로그램 (기본적으로 여러 가지 작업을 한 번에 시작한 다음 모든 작업에서 "최상의"값으로 작업하는 방식)은 명시 적 스레드 제어의 이점을 얻을 것이라고 생각하지만 코딩이 어려워집니다. 너무 많은 시간을 들여 결국에는 성과가 없을 것입니다.
나는 이미 비슷한 질문을 거의 보지 않았지만 모두 일반적인 응용 프로그램에 관한 내용입니다.
This 하나는 Linux의 일반적인 멀티 스레드 응용 프로그램에 관한 것입니다.
This도 일반적인 질문입니다.
SciComp.SE에 대해 알고 있지만 주제에 대해 더 많은 것을 느꼈습니다.
"기본적으로 많은 일들을 한 번에 시작한 다음 모든 것을"최상의 "가치로 조작하는 것과 관련이 있습니다."나는 [CPlex] (http://www-01.ibm.com/software/integration/) 최적화/cplex-optimizer /)는 귀하와 유사한 알고리즘을 제공합니다. 그들이 선택한 병렬 처리 도구에 대해 모르는 것이지만 어쩌면 알아낼 수도 있습니다 (반드시 선택이 최선이라고는 할 수 없지만 항상 알고있는 것이 좋습니다). – Francesco
부스트 쓰레드는 C++를 사용한다면 pthreads (또는 무엇이든)에 아주 좋은 인터페이스를 제공합니다. 그만한 가치가있다. 하지만 나는 프로그래밍의 용이함 때문에 결국 openmp를 선택했다. 또한 intel IPP/TBB를 고려하십시오. – Anycorn
BLAS 또는 LAPACK을 사용하는 경우 왜 Eigen 대신 사용합니까? 그것은 SIMD (SSE)와 OpenMP를 지원합니다. –