- OpenCL만 이용해 이종 클러스터의 application을 작성할 경우
- 프로그래밍이 쉽고
- Portable한 프로그램을 작성할 수 있다
SnuCL
- OpenCL 프레임워크
- ICD 를 이용해서 통합된 환경을 제공함
- Heterogeneous cluster에서도 동작함
- 프레임워크를 지정할 필요도 없고, 서로 다른 프레임워크들 간에 object sharing도 편함
Matrix Multiplication Example
- 각 워크아이템이 C의 하나의 원소를 계산하게 설계
- 5가지 서로다른 구현이 가능함
- 하나의 OS instance하에서 하나의 GPU
- 하나의 OS instance 하에서 여러개의 GPU
- 클러스터에서 여러 개의 GPU를 사용하는데,
- OpenCL + MPI
- SnuCL
- SnuCL with collective communcation extensions
Single GPU
- 커널코드 아래와 같이 구현 가능
-Scalable-High-Performance-Computing/images/SHPC-17-1.png)
Matrix Multiplication for Multiple GPUs
- 커널의 index space를 N개 GPU로 나눈다
-Scalable-High-Performance-Computing/images/SHPC-17-2.png)
- 커널코드는 그대로 두고, 호스트 코드를 변경하면 된다
-Scalable-High-Performance-Computing/images/SHPC-17-6.png)
Matrix Multiplication for the Cluster
- 여러 OS instance가 존재하는 클러스터 환경의 경우, 아래와 같이 계층적으로 나눠줘야 한다
-Scalable-High-Performance-Computing/images/SHPC-17-9.png)