-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathindex.html
More file actions
185 lines (139 loc) · 7.71 KB
/
Copy pathindex.html
File metadata and controls
185 lines (139 loc) · 7.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="UTF-8">
<title>Hands On OpenCL by HandsOnOpenCL</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="stylesheets/normalize.css" media="screen">
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen">
<link rel="stylesheet" type="text/css" href="stylesheets/github-light.css" media="screen">
</head>
<body>
<section class="page-header">
<h1 class="project-name">Hands On OpenCL</h1>
<h2 class="project-tagline">An open source two-day lecture course for teaching and learning OpenCL</h2>
</section>
<section class="main-content">
<h3>
<a id="welcome" class="anchor" href="#welcome" aria-hidden="true"><span class="octicon octicon-link"></span></a>Welcome</h3>
<p>Hands On OpenCL is a two-day lecture course introducing OpenCL, the API for writing heterogeneous applications. Provided are slides for around twelve lectures, plus some appendices, complete with Examples and Solutions in C, C++ and Python. The lecture series finishes with information on porting CUDA applications to OpenCL.</p>
<p>This set of freely available OpenCL <a href="https://github.com/HandsOnOpenCL/Exercises-Solutions">exercises and solutions</a>, together with <a href="https://github.com/HandsOnOpenCL/Lecture-Slides/releases">slides</a> have been created by Simon McIntosh-Smith and Tom Deakin from the University of Bristol in the UK, with financial support from the Khronos Initiative for Training and Education (<a href="http://kite.khronos.org/en/opencl">KITE</a>) to promote the use of open standards.</p>
<p><a href="http://www.cs.bris.ac.uk/home/simonm/">Simon McIntosh-Smith</a> is one of the foremost OpenCL trainers in the world, having taught the subject since 2009. He has run many OpenCL training courses at conferences such as SuperComputing and HiPEAC, and has provided OpenCL training for the UK's national supercomputing service and for the Barcelona Supercomputing Center. With OpenCL training experience ranging from half day on-site introductions within companies, to two-day intensive hands-on workshops for undergraduates, Simon can provide customized OpenCL training to meet your needs. Get in touch if you'd like to know more:</p>
<p>For more about the authors, please visit <a href="http://www.cs.bris.ac.uk/home/simonm/">Simon's home page</a> or <a href="http://www.tomdeakin.com">Tom's home page</a>.</p>
<p>These lectures, and their examples, and released under the "attribution CC BY" creative commons license. In other words, you can use these in any way you see fit, including commercially, but please retain an attribution for the original authors, Simon McIntosh-Smith and Tom Deakin.</p>
<h3>
<a id="get-the-slides-and-code" class="anchor" href="#get-the-slides-and-code" aria-hidden="true"><span class="octicon octicon-link"></span></a>Get the slides and code</h3>
<p>The slides are available under <a href="https://github.com/HandsOnOpenCL/Lecture-Slides/releases">Releases</a>. The code is available in the <a href="https://github.com/HandsOnOpenCL/Exercises-Solutions">Exercises and Solutions repository</a>.</p>
<h3>
<a id="course-structure" class="anchor" href="#course-structure" aria-hidden="true"><span class="octicon octicon-link"></span></a>Course Structure</h3>
<ol>
<li>
<p><strong>Introduction to Heterogeneous Parallel Computing</strong></p>
<p>Setting up your OpenCL environment (AMD, Intel, NVIDIA)</p>
</li>
<li><p><strong>An overview of OpenCL</strong></p></li>
<li>
<p><strong>Important OpenCL concepts</strong></p>
<p>Platforms, contexts, programs, queues, buffers and kernels</p>
<p>NDRanges, Work‐Groups, Work-Items </p>
</li>
<li>
<p><strong>Overview of OpenCL APIs</strong></p>
<p>C, C++ and Python </p>
</li>
<li><p><strong>Introducing OpenCL kernel programming</strong></p></li>
<li><p><strong>Understanding the OpenCL memory hierarchy</strong></p></li>
<li>
<p><strong>Synchronization in OpenCL</strong></p>
<p>Events and barriers</p>
</li>
<li>
<p><strong>Heterogeneous computing with OpenCL</strong></p>
<p>Using CPUs and GPUs simultaneously, multiple platforms and devices</p>
</li>
<li>
<p><strong>Enabling portable performance via OpenCL</strong></p>
<p>Autotuning using Flamingo</p>
</li>
<li>
<p><strong>Optimizing OpenCL performance</strong></p>
<p>Profiling using Extrae and Paraver
Information on NVVP and CodeXL</p>
</li>
<li>
<p><strong>Debugging OpenCL</strong></p>
<p>Using GDB</p>
</li>
<li><p><strong>Porting CUDA to OpenCL</strong></p></li>
</ol>
<h3>
<a id="examples" class="anchor" href="#examples" aria-hidden="true"><span class="octicon octicon-link"></span></a>Examples</h3>
<p>Download the examples by checking out the git repository with the command:</p>
<p><code>git clone git://github.com/HandsOnOpenCL/Exercises-Solutions.git</code></p>
<ol>
<li>
<p><strong>Platform Information</strong></p>
<p>Run a simple OpenCL program to give you some key facts about the devices available in your system.</p>
</li>
<li>
<p><strong>VADD - The OpenCL "Hello World"</strong></p>
<p>Start by looking at the C API for this program which introduces the OpenCL computational model.</p>
</li>
<li><p><strong>VADD - Now in C++ and Python</strong></p></li>
<li>
<p><strong>Chaining vector add kernels</strong></p>
<p>Extend VADD to compute C=A+B; D=C+E; F=D+G by running the kernel multiple times.</p>
</li>
<li>
<p><strong>Extend VADD for D = A + B + C</strong></p>
<p>Extend the VADD kernel to compute a different sum.</p>
</li>
<li>
<p><strong>Matrix Multiplication</strong></p>
<p>Write your first OpenCL kernel from scratch.</p>
</li>
<li>
<p><strong>Using private memory</strong></p>
<p>Use private memory to minimize memory costs.</p>
</li>
<li>
<p><strong>Using local memory</strong></p>
<p>Use local and private memory to minimize memory costs.</p>
</li>
<li>
<p><strong>The Pi program</strong></p>
<p>Estimate Pi by integration.</p>
</li>
<li>
<p><strong>Heterogeneous Computing</strong></p>
<p>Run your kernels on many devices.</p>
</li>
<li>
<p><strong>Optimize matrix multiplication</strong></p>
<p>Look at portable performance (combining 9. and 10.)</p>
</li>
<li>
<p><strong>Profiling OpenCL programs</strong></p>
<p>Experiment making things run faster.</p>
</li>
<li>
<p><strong>Porting CUDA to OpenCL</strong></p>
<p>Convert a simple CUDA application to OpenCL (program TBA).</p>
</li>
</ol>
<h3>
<a id="authors-and-contributors" class="anchor" href="#authors-and-contributors" aria-hidden="true"><span class="octicon octicon-link"></span></a>Authors and Contributors</h3>
<p>Simon McIntosh-Smith, University of Bristol</p>
<p>Tom Deakin (<a href="https://github.com/tomdeakin" class="user-mention">@tomdeakin</a>)</p>
<h3>
<a id="support-or-contact" class="anchor" href="#support-or-contact" aria-hidden="true"><span class="octicon octicon-link"></span></a>Support or Contact</h3>
<p>Found a bug or with to suggest an update to the material?
Please submit a new Issue in the relevant repository (<a href="https://github.com/HandsOnOpenCL/Exercises-Solutions/issues">Exercises</a> or <a href="https://github.com/HandsOnOpenCL/Lecture-Slides/issues">Slides</a>)</p>
<p>Fixed a bug yourself? Please submit a <a href="https://help.github.com/articles/using-pull-requests">pull request</a>. Thanks.</p>
<footer class="site-footer">
<span class="site-footer-credits">This page was generated by <a href="https://pages.github.com">GitHub Pages</a> using the <a href="https://github.com/jasonlong/cayman-theme">Cayman theme</a> by <a href="https://twitter.com/jasonlong">Jason Long</a>.</span>
</footer>
</section>
</body>
</html>