Illusion of a Single OpenCL Platform Image

  • 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

  • 커널코드 아래와 같이 구현 가능

Matrix Multiplication for Multiple GPUs

  • 커널의 index space를 N개 GPU로 나눈다
  • 커널코드는 그대로 두고, 호스트 코드를 변경하면 된다

Matrix Multiplication for the Cluster

  • 여러 OS instance가 존재하는 클러스터 환경의 경우, 아래와 같이 계층적으로 나눠줘야 한다