-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
216 lines (155 loc) · 9.77 KB
/
index.html
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
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="index, follow" />
<meta name="keywords" content="OpenCL portable OpenCL PoCL pocl Portable Computing Langauge" />
<meta name="description" content="PoCL - Portable Computing Language" />
<meta property="og:title" content="PoCL home page"/>
<meta property="og:site_name" content="PoCL"/>
<meta property="og:type" content="website"/>
<meta property="og:description" content="PoCL: a performance portable open source OpenCL implementation"/>
<meta property="og:url" content="http://portablecl.org"/>
<title>PoCL - Portable Computing Language</title>
<link rel="stylesheet" type="text/css" href="pocl-style.css" />
</head>
<body>
<div id="page">
<div id="header">
<h1 id="title"><span style="height: 100%; vertical-align: middle;"></span>
<a href="http://portablecl.org"><img src="img/pocl-80x60.png" border="0" style="vertical-align: middle;"></a>
<span style="height: 100%; vertical-align: middle;"> Portable Computing Language</span></h1>
</div>
<div id="navi">
<ul id="menu_item_list">
<li class="menu_item"><a href="index.html" class="menu_link">Main</a></li>
<li class="menu_item"><a href="download.html" class="menu_link">Download</a></li>
<li class="menu_item"><a href="docs/html" class="menu_link">Documentation</a></li>
<li class="menu_item"><a href="development.html" class="menu_link">Development</a></li>
<li class="menu_item"><a href="discussion.html" class="menu_link">Discussion</a></li>
<li class="menu_item"><a href="https://github.com/pocl/pocl/wiki" class="menu_link">Wiki</a></li>
<li class="menu_item"><a href="publications.html" class="menu_link">Publications</a></li>
</ul>
</div>
<div id="content">
<p>PoCL is a portable open source (MIT-licensed) implementation of the
OpenCL standard. In addition to
being an easily portable/layered multi-device
open-source OpenCL implementation, a major goal of this project is
improving interoperability of diversity of OpenCL-capable devices by
integrating them to a single centrally orchestrated platform. Also
one of the key goals is to enhance performance portability
of OpenCL programs across device types utilizing runtime and compiler
techniques.</p>
<p>PoCL currently supports various CPU architectures (x86, ARM, RISC-V),
NVIDIA GPUs via libCUDA, Intel GPUs via Level Zero and TCE ASIPs
(<a href="http://openasip.org">OpenASIP</a>) at different feature coverage
levels. It also supports <a href="http://portablecl.org/docs/html/remote.html">a
remote backend</a> for distributed OpenCL execution. PoCL is also known to
have multiple (private) adaptations in active production use.</p>
<p>PoCL uses <a href="http://clang.llvm.org">Clang</a> as an OpenCL C frontend and
<a href="http://llvm.org">LLVM</a> for kernel compiler implementation,
and as a portability layer. Thus, if your desired target has an LLVM backend, it
should be able to get OpenCL support easily by using PoCL.</p>
<h1>News</h1>
<h2>2024-06-18: <a href="http://portablecl.org/docs/html/notes_6_0.html">Portable Computing Language (PoCL) v6.0 released</a></h2>
<p>PoCL v6.0 has been released. The release notes can be read <a href="http://portablecl.org/docs/html/notes_6_0.html">here</a>
and a packaged release is available <a href="https://github.com/pocl/pocl/releases/tag/v6.0">here.</a></p>
<h2>2023-12-19: <a href="http://portablecl.org/docs/html/notes_5_0.html">Portable Computing Language (PoCL) v5.0 released</a></h2>
<p>PoCL v5.0 is out! The release notes can be read <a href="http://portablecl.org/docs/html/notes_5_0.html">here</a>
and a packaged release is available <a href="https://github.com/pocl/pocl/releases/tag/v5.0">here.</a></p>
<h2>2023-09-04: <a href="remote-backend.html">No-MPI OpenCL-Only Distributed Computing With PoCL-Remote</a></h2>
<p>PoCL now has a new backend that allows transparently
offloading OpenCL tasks to other nodes on the network, thus enabling
distributing compute without using MPI or similar APIs. Since the
standard OpenCL API suffices, compute offloading can be performed
identically whether using local or remote devices, which makes it
useful for selective/adaptive edge offloading and other use cases.</p>
<p>In contrast to previous similar distributing OpenCL implementations,
PoCL-Remote does not merely forward API calls
as is, but performs smart memory management and distributed command
scheduling to keep latency down and scale well to multiple nodes.</p>
<p>The driver is now considered ready for out-of-lab testing and has been
integrated to the <a href="http://code.portablecl.org">main</a> branch for the
upcoming v5.0 release. <a href="remote-backend.html">Why not give it a run?</a>
</p>
<h2>2023-06-22: <a href="pocl-4.0.html">Portable Computing Language (PoCL) v4.0 released</a></h2>
<h2>2022-12-05: <a href="pocl-3.1.html">Portable Computing Language (PoCL) v3.1 released</a></h2>
<h2>2022-11-15: <a href="almaif.html">Advanced hardware accelerator support through AlmaIF</a></h2>
<h2>2022-06-10: <a href="pocl-3.0.html">Portable Computing Language (PoCL) v3.0 released</a></h2>
<h2>2020-08-14: <a href="http://portablecl.org/docs/html/debug.html">Debugging OpenCL applications with PoCL</a></h2>
<h2>2019-07-15: Hardware Accelerators in POCL</h2>
<p>PoCL received support for CL_DEVICE_TYPE_CUSTOM via addition of a hardware accelerator framework.
It consists of an example driver (pocl-accel) that relies on a "pocl standard" control interface and
an enumeration of "pocl-known" built-in kernels.
The example accelerator is generated using the <a href="http://openasip.org">TCE tools</a>.
</p>
<p>For more information, please read a
<a href="https://www.computer.org/publications/tech-news/accelerator-framework-for-portable-computing-language">blog post</a>
about it in the Heterogeneous System Architecture section of the IEEE Computer Society tech news or
the usage instructions in the <a href="http://portablecl.org/docs/html/accel.html">user manual</a>.
</p>
<h2>2019-04-04: <a href="pocl-1.3.html">Portable Computing Language (pocl) v1.3 released</a></h2>
<h2>2019-02-07: <a href="pocl-in-think-silicon.html">pocl powering Think Silicon's ultra-low power GPGPUs</a>
<h2>2018-09-25: <a href="pocl-1.2.html">Portable Computing Language (pocl) v1.2 released</a></h2>
<h2>2018-09-18: Matrix-2000 and pocl</h2>
<p>Dr. Jianbin Fang from NUDT sent us <a href="nudt-pocl-use-case.html">a nice
description</a> of how they benefitted from pocl for adding OpenCL support on
their Matrix-2000 accelerator.</p>
<h2>2018-03-09: <a href="pocl-1.1.html">Portable Computing Language
(pocl) v1.1 released</a></h2>
<h2>2017-12-19: <a href="pocl-1.0.html">Portable Computing Language
(pocl) v1.0 released</a></h2>
<h2>2017-04-25: <a href="cuda-backend.html">NVIDIA GPU support via CUDA backend</a></h2>
pocl now has experimental support for NVIDIA GPU devices via a new backend
which makes use of the LLVM NVPTX backend and the CUDA driver API.
This work was primarily carried out by James Price from the
<a href="http://uob-hpc.github.io">High Performance Computing group</a> at the
University of Bristol. Read more about it <a href="cuda-backend.html">here</a>.
<p>The source package, the change log, and the release annoucement are <a href="/downloads">here</a>.</p>
<h2>Older news <a href="old_news.html">items here</a></h2>
<h1>Current Status</h1>
<p>Passes most of the tests in the Khronos OpenCL 1.2 conformance suite. Development towards
3.0 compliance with some 2.x features started.</p>
<h1>Feature Examples</h1>
<ul>
<li>portable kernel compiler with horizontal autovectorization of work-groups</li>
<li>core runtime APIs implemented in C for improved portability to bare bone machines</li>
<li>automated kernel compiler cache</li>
<li>driver framework that allows seamless integration of diversity of device types in
the same OpenCL context</li>
<li>ICD support</li>
</ul>
<br />
<hr />
<p align="center">
<a class="twitter-timeline" href="https://twitter.com/portablecl" data-widget-id="399622661979918336">Tweets from @portablecl</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
</p>
</div>
<div id="footer">
<span style="height: 100%; vertical-align: middle;"></span>
<a href="http://portablecl.org"><img src="img/pocl-80x60.png" border="0" style="vertical-align: middle;"></a>
<span style="height: 100%; vertical-align: middle;">Portable Computing Language © 2010-2023 PoCL developers
</span>
</div>
<div class="g-plusone" data-annotation="inline" data-width="300"></div>
</div>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-36911879-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
(function() {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
</script>
</body>
</html>