최근 몇 가지 형태의 범용 데이터 중심 공유 메모리 병렬 처리를 제공하는 여러 라이브러리 / 소프트웨어 프로젝트가 등장했습니다.
주요 아이디어는 프로그래머가 명시 적으로 스레드 된 코드를 작성하는 대신 알고리즘을 상호 종속적 인 작업으로 구현 한 다음 공유 메모리 시스템의 범용 미들웨어에 의해 동적으로 스케줄됩니다.
이러한 라이브러리의 예는 다음과 같습니다.
QUARK : 원래 MAGMA 병렬 선형 대수 라이브러리를 위해 설계되었으며 병렬 고속 다중 극 방법 에도 사용 된 것으로 보입니다 .
Cilk : 원래 Intel에서 지원하는 MIT 기반 프로젝트는 Cilkchess 컴퓨터 체스 소프트웨어에서 실험적으로 FFTW에서 사용되는 C 언어 확장 프로그램으로 구현되었습니다 .
SMP 슈퍼 스칼라 :
#pragma
확장을 기반으로 여러 측면에서 Cilk와 유사한 Barcelona Supercomputing Center에서 개발되었습니다 .StarPU : GPU를 포함하여 여러 가지 다른 아키텍처에서 컴파일 및 예약 할 수있는 유사한 라이브러리 기반 "codelet"입니다.
OpenMP 작업 : 버전 3.0부터 OpenMP는 비동기식으로 예약 할 수있는 "작업"을 도입했습니다 (사양 2.7 절 참조).
인텔의 스레딩 구성 요소 : C ++ 클래스를 사용하여 비동기 작업을 생성 및 시작합니다 (자습서 11 장 참조).
OpenCL : 멀티 코어에서 작업 기반 병렬 처리를 지원합니다.
이 라이브러리 / 언어 확장의 내부 작업과 특정 문제에 대한 응용 프로그램을 설명하는 문헌이 많이 있지만 과학 컴퓨팅 응용 프로그램에서 실제로 사용되는 예제는 거의 없습니다.
그래서 여기에 대한 질문이 있습니다 : 공유 메모리 병렬 처리를 위해 이러한 라이브러리 / 언어 확장 또는 이와 유사한 것을 사용하는 과학 컴퓨팅 코드를 아는 사람이 있습니까?