JOCL FAQ: Difference between revisions
Line 47: | Line 47: | ||
http://www.browndeertechnology.com/coprthr.htm | http://www.browndeertechnology.com/coprthr.htm | ||
https://github.com/browndeer/coprthr.git | https://github.com/browndeer/coprthr.git | ||
libcoprthr provides a reference build of OpenCL for the Parallella board. | |||
libcoprthr - is licensed under the LGPL | |||
http://www.kickstarter.com/projects/adapteva/parallella-a-supercomputer-for-everyone | |||
POCL - based on LLVM | POCL - based on LLVM | ||
Portable OpenCL aims to be an efficient open source (MIT-licensed) | |||
implementation of the OpenCL 1.2 standard. | |||
http://pocl.sourceforge.net/ | http://pocl.sourceforge.net/ | ||
http://lists.linaro.org/pipermail/linaro-gpgpu/2013-May/000001.html - pocl running on the CPU reported to be working on the Samsung Chromebook | http://lists.linaro.org/pipermail/linaro-gpgpu/2013-May/000001.html - pocl running on the CPU reported to be working on the Samsung Chromebook | ||
Line 59: | Line 64: | ||
PGCL The portland group - http://www.pgroup.com/products/pgcl/ | PGCL The portland group - http://www.pgroup.com/products/pgcl/ | ||
PGCL is released under a properitary license. | PGCL is released under a properitary license. | ||
PGCL provides reference OpenCL builds for the ST-Ericsson NovaThor boards. | |||
== How do I get the Source Code? == | == How do I get the Source Code? == |
Revision as of 13:42, 4 July 2013
What OpenCL platforms / Operating Systems / JDKs are supported?
OpenCL Platforms:
- all of them. We are testing every build (in fact every commit) on AMD, Nvidia and Intel SDKs.
- If you are running on a different platform or would like to provide a build server, please let us know.
Operating Systems:
- Linux 32/64, Mac OS and Windows 32/64
- Building JOCL on other systems is easy provided that a OpenCL implementation for that system.
(e.g. OpenSolaris doesn't have OpenCL drivers yet)
Java Runtime Environments:
- We are testing on Oracle JDK and OpenJDK
- Java 5+ is required to run JOCL.
OpenCL on Mobile ARM SoC
StreamComputing maintains a list of SoC GPU's supporting OpenCL. http://streamcomputing.eu/knowledge/sdks/
Android
JogAmp provide OpenCL bindings using the JOCL .apk files on Android.
The first generation Android OpenCL devices, the Nexus 10 tablet and Nexus 4 phone
uses non standards OpenCL library names
https://jogamp.org/bugzilla/show_bug.cgi?id=773
If you have one of these new devices and want to help improve JOCL to dynamically link to these non standard library names please get in touch with the JogAmp community.
GNU/Linux
JogAmp provide OpenCL bindings using the JOCL jar for use on ARM GNU/Linux systems, we support both the soft-float and hard-float ABI.
OpenCL drivers are provided from Freescale for its many i.MX6 Vivante GPU based boards.
http://streamcomputing.eu/knowledge/sdks/vivante-gpu/
https://community.freescale.com/docs/DOC-94464
CPU software OpenCL on systems where no GPU drivers are available
COPRTHR SDK libcoprthr - An open-source OpenCL implementation for multicore x86_64 and ARM. http://www.browndeertechnology.com/coprthr.htm https://github.com/browndeer/coprthr.git libcoprthr provides a reference build of OpenCL for the Parallella board. libcoprthr - is licensed under the LGPL http://www.kickstarter.com/projects/adapteva/parallella-a-supercomputer-for-everyone
POCL - based on LLVM Portable OpenCL aims to be an efficient open source (MIT-licensed) implementation of the OpenCL 1.2 standard. http://pocl.sourceforge.net/ http://lists.linaro.org/pipermail/linaro-gpgpu/2013-May/000001.html - pocl running on the CPU reported to be working on the Samsung Chromebook
SAMSUNG SNU http://aces.snu.ac.kr/Center_for_Manycore_Programming/SNU-SAMSUNG_OpenCL_Framework.html - registration needed before download. http://chromebookcomputing.blogspot.se/?view=classic - setup instructions for SAMSUNG SNU on a Samsung Chromebook. http://opencl.snu.ac.kr/license.php - SNU compiler is released under GPL and the runtime LGPL
PGCL The portland group - http://www.pgroup.com/products/pgcl/ PGCL is released under a properitary license. PGCL provides reference OpenCL builds for the ST-Ericsson NovaThor boards.
How do I get the Source Code?
The project repository is located on github.
You can create a local copy/branch of the git repository, either anonymous:
- git clone git://github.com/JogAmp/gluegen.git gluegen
- git clone git://github.com/JogAmp/jocl.git jocl
- git clone git://github.com/JogAmp/jocl-demos.git jocl-demos
- git clone git://github.com/JogAmp/jogl.git jogl
or via SSH and your user credential, so you can easily push back your changes to the github server:
- git clone [email protected]:username/gluegen.git gluegen
- git clone [email protected]:username/jocl.git jocl
- git clone [email protected]:username/jocl-demos.git jocl-demos
- git clone [email protected]:username/jogl.git jogl
What are the Build Dependencies?
JOCL depends on GlueGen and JOGL
JDK6 and ANT 1.8 or later. JUnit tests require OpenCL capable hardware and OpenCL drivers.
I have all the Sourcecode, how do I build it?
Please refer to this HowTo
What files do I need at Runtime?
JOCL consists of two files:
- jocl.jar
- and one system dependent native library (e.g libjocl.so or jocl.dll or ..).
additionally you will have to provide
- gluegen-rt.jar
- and the corresponding native library (e.g libgluegen-rt.so or gluegen.dll or ...)
optionally you might want to add JOGL if you want to do OpenGL - OpenCL interoperability
How do I Get Started?
How can I test if OpenCL is properly set up on my system?
- run CLInfo via webstart for basic OpenCL diagnostic readouts
- or invoke:
java -jar jocl.jar:gluegen-rt.jar -Djava.library.path="path/to/jocl/libs:path/to/gluegen-rt/libs" com.jogamp.opencl.util.CLInfo
- note1: replace ':' with ';' on windows
- note2: extract gluegen-rt-natives-xxx.jar and jocl-natives-xxx.jar. It won't work if you place the jars in the library path!
- run some of the other webstart demos
Is it possible to run JOCL based app without JOGL?
Yes. JOCL is independent from JOGL and can be used without JOGL in the classpath. In fact you have to explicitly create a shared context from a existing JOGL context if you want to interoperate with OpenGL.
// creates a pure OpenCL context CLContext context = CLContext.create();
// creates a shared context. This context can be used to share memory with JOGL's OpenGL context CLGLContext context = CLGLContext.create(glContext);
Can I allocate a CLBuffer without allocating a java.nio.Buffer?
yes, just use the right context.createBuffer() method.
discussion: http://forum.jogamp.org/Allocate-memory-object-on-device-only-tp2465039p2465039.html
How do I do image processing with JOCL?
For a simple example take a look at the gamma correction demo from the jocl-demos repository.
Is jocl.org the same as JOCL?
no its not. Both are independent projects and do not share the same codebase.