The Scalable Heterogeneous Computing Benchmark Suite (SHOC) is a collection of benchmark programs testing the performance and stability of systems using computing devices with non-traditional architectures for general purpose computing, and the software used to program them. Its initial focus is on systems containing Graphics Processing Units (GPUs) and multi-core processors, and on the OpenCL programming standard. It can be used on clusters as well as individual hosts.
In addition to OpenCL-based benchmark programs, SHOC also includes a Compute Unified Device Architecture (CUDA) version of many of its benchmarks for comparison with the OpenCL version.
- Multiple benchmark applications written in both OpenCL and CUDA
- Cluster-level parallelism with MPI
- Node-level parallelism for multiple GPUs per node
- Harness for running and easy reporting (in .csv spreadsheet format) of the suite
- Stability tests for large scale cluster resiliency testing
The SHOC benchmark suite is divided into two primary categories: stress tests and performance tests. The stress tests use computationally demanding kernels to identify OpenCL devices with bad memory, insufficient cooling, or other component problems. The performance tests are further subdivided according to their complexity and the nature of the device capability they exercise. This categorization is similar in spirit to that used in the BLAS API. Currently, the levels are:
- Stability Tests
- Performance Tests
- Level 0: Very low level device characteristics (so-called "feeds and speeds") such as bandwidth across the bus connecting the GPU to the host or peak floating point operations per second
- Level 1: Device performance for low-level operations such as vector dot products and sorting operations
- Level 2: Device performance for real application kernels