OpenCL on CPU and GPU

From Gridkaschool

Introduction

OpenCL is a standard which defines a framework, an API and a programming language for parallel computation on heterogeneous systems like desktop computers, high-performance computing servers as well as hand-held devices.

The standard is maintained by the Khronos Group and supported by a large consortium of industry leaders including Apple, Intel, AMD, NVIDIA and ARM. Influenced by NVIDIA’s CUDA from the GPU side and by OpenMP which originates from the classical CPU side, the open OpenCL standard is characterized by a formulation which is abstract enough to support both CPU and GPU computing resources.

This is an ambitious goal, since providing an abstract interface together with a peak performance is a challenging task. OpenCL employs a strict isolation of the computation work into fundamental units, the kernels. These kernels can be developed in the OpenCL C programming language, a subset of the C99 language, with some additional OpenCL specific keywords.

In general, these kernels are hardware independent and compiled by the OpenCL runtime when they are loaded. To be able to fully exploit the parallel execution of the kernel code, several kernel instances, the work items, are started to process a set of input values. The actual number of concurrently running work items is determined by the OpenCL system. How a concrete algorithm can be partitioned into work items has to be decided by the programmer.

Assigned exercise machines

UID      Host name                       IP address
068	 rz-tesla0.rz.uni-karlsruhe.de	172.21.94.100
074	 rz-tesla0.rz.uni-karlsruhe.de	172.21.94.100
075	 rz-tesla0.rz.uni-karlsruhe.de	172.21.94.100
077	 rz-tesla0.rz.uni-karlsruhe.de	172.21.94.100
082	 rz-tesla0.rz.uni-karlsruhe.de	172.21.94.100
084	 rz-tesla0.rz.uni-karlsruhe.de	172.21.94.100
085	 rz-tesla0.rz.uni-karlsruhe.de	172.21.94.100
088	 rz-tesla0.rz.uni-karlsruhe.de	172.21.94.100
089	 rz-tesla0.rz.uni-karlsruhe.de	172.21.94.100
090	 rz-tesla0.rz.uni-karlsruhe.de	172.21.94.100
102	 rz-tesla0.rz.uni-karlsruhe.de	172.21.94.100
103	 rz-tesla0.rz.uni-karlsruhe.de	172.21.94.100
104	 rz-tesla0.rz.uni-karlsruhe.de	172.21.94.100
110	 rz-tesla2.rz.uni-karlsruhe.de	172.21.94.102
113	 rz-tesla2.rz.uni-karlsruhe.de	172.21.94.102
117	 rz-tesla2.rz.uni-karlsruhe.de	172.21.94.102
121	 rz-tesla2.rz.uni-karlsruhe.de	172.21.94.102
123	 rz-tesla2.rz.uni-karlsruhe.de	172.21.94.102
125	 rz-tesla2.rz.uni-karlsruhe.de	172.21.94.102
128	 rz-tesla2.rz.uni-karlsruhe.de	172.21.94.102
012	 rz-tesla2.rz.uni-karlsruhe.de	172.21.94.102
132	 rz-tesla2.rz.uni-karlsruhe.de	172.21.94.102
134	 rz-tesla2.rz.uni-karlsruhe.de	172.21.94.102
137	 rz-tesla2.rz.uni-karlsruhe.de	172.21.94.102
139	 rz-tesla2.rz.uni-karlsruhe.de	172.21.94.102

Tutorial Material

Reference Material