Open Computing Language (OpenCL) is a programming model for heterogeneous parallel computing systems. OpenCL provides a common abstraction layer across different multicore architectures, such as CPUs, GPUs, DSPs, and Cell BE processors. Programmers can write an OpenCL application once and run it on any OpenCL-compliant system. However, current OpenCL is restricted to a single heterogeneous system. To target heterogeneous CPU/GPU clusters, programmers must use the OpenCL framework combining with a communication library, such as MPI. The same thing is true for CUDA.

SnuCL is an OpenCL framework and freely available, open-source software developed at Seoul National University. It naturally extends the original OpenCL semantics to the heterogeneous cluster environment. The target cluster consists of a single host node and multiple compute nodes. They are connected by an interconnection network, such as Gigabit and InfiniBand switches. The host node contains multiple CPU cores and each compute node consists of multiple CPU cores and multiple GPUs. For such clusters, SnuCL provides an illusion of a single heterogeneous system for the programmer. A GPU or a set of CPU cores becomes an OpenCL compute device. SnuCL allows the application to utilize compute devices in a compute node as if they were in the host node. Thus, with SnuCL, OpenCL applications written for a single heterogeneous system with multiple OpenCL compute devices can run on the cluster without any modifications. SnuCL achieves both high performance and ease of programming in a heterogeneous cluster environment.

SnuCL consists of SnuCL runtime and compiler. The SnuCL compiler is based on the OpenCL C compiler in SNU-SAMSUNG OpenCL framework. Currently, the SnuCL compiler supports x86, ARM, and PowerPC CPUs, AMD GPUs, and NVIDIA GPUs.

  1. Publications

  2. [ICS] Jungwon Kim, Sangmin Seo, Jun Lee, Jeongho Nah, Gangwon Jo, and Jaejin Lee. SnuCL: an OpenCL Framework for Heterogeneous CPU/GPU Clusters, ICS ’12: Proceedings of the 26th International Conference on Supercomputing, pp. —, San Servolo Island, Venice, Italy, June 2012.

  3. [PPoPP-poster] Jungwon Kim, Sangmin Seo, Jun Lee, Jeongho Nah, Gangwon Jo, and Jaejin Lee. OpenCL as a Unified Programming Model for Heterogeneous CPU/GPU Clusters, Poster presentation in PPoPP ʼ12: Proceedings of the 17th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, New Orleans, Louisiana, USA, February 2012.

  4. [LCPC] Jungwon Kim, Sangmin Seo, Jun Lee, Jeongho Nah, Gangwon Jo, and Jaejin Lee. OpenCL as a Programming Model for GPU Clusters, LCPC ’11: Proceedings of the 24th International Workshop on Languages and Compilers for Parallel Computing, pp. -, Fort Collins, Colorado, USA, September 2011.

  5. Tutorial

  6. -SnuCL: An OpenCL Framework for Heterogeneous CPU/GPU Clusters (ICS 2012 tutorial, PLDI 2012 tutorial, CGO 2012 tutorial, PPoPP 2012 tutorial)

  7. -SnuCL: An OpenCL Framework and Unified Programming Model for Heterogeneous CPU/GPU Clusters (PACT 2011 Tutorial)

  8. Benchmark suite

  9. SNU NPB suite: the NASA Parallel Benchmark suite ported in C, OpenMP C, and OpenCL for both a single compute device and multiple compute devices.

  10. Tested Platforms

    1. x86 CPUs, NVIDIA GPUs, AMD GPUs

  11. -Red Hat Enterprise Linux Server 6.1

  12. -OpenMPI 1.4.3

  13. -CUDA 4.2

  14. -AMD APP SDK 2.5

    1. Interconnect

  15. -Mellanox QDR Infiniband switches

  16. -Gigabit ethernet switches

  17. Download

  18. If you would like to download SnuCL 1.2 beta, please fill out the following form and click the download button. An email containing the download URL will be sent to the email address.










  1. SnuCL_Manual.pdf

  2. Contributors

  3. Jungwon Kim, Sangmin Seo, Jun Lee, Jeongho Nah, Gangwon Jo,  and Jaejin Lee

  4. Contact and bug report

  5. E-mail: snucl@aces.snu.ac.kr




© 2013 Center for Manycore Programming

Room 520, Building 301, Seoul National University, Seoul 151-744, Korea