Using Qt Creator for Opencl - 05-25-2010 by Vincent - Streamcomputing

Using Qt Creator for Opencl - 05-25-2010 by Vincent - Streamcomputing

Using Qt Creator for OpenCL - 05-25-2010 by vincent - StreamComputing - http://streamcomputing.eu Using Qt Creator for OpenCL by vincent – Tuesday, May 25, 2010 http://streamcomputing.eu/blog/2010-05-25/using-qt-creator-for-opencl/ More and more ways are getting available to bring easy OpenCL to you. Most of the convenience libraries are wrappers for other languages, so it seems that C and C++ programmers have the hardest time. Since a while my favourite way to go is Qt: it is multi-platform, has a good IDE, is very extensive, has good multi-core and OpenGL-support and… has an extension for OpenCL: http://labs.trolltech.com/blogs/2010/04/07/using-opencl-with-qt http://blog.qt.digia.com/blog/2010/04/07/using-opencl-with-qt/ Other multi-platform choices are Anjuta, CodeLite, Netbeans and Eclipse. I will discuss them later, but wanted to give Qt an advantage because it also simplifies your OpenCL-development. While it is great for learning OpenCL-concepts, please know that the the commercial version of Qt Creator costs at least €2995,- a year. I must also warn the plugin is still in beta. StreamComputing.eu is not affiliated with Qt. Getting it all Qt Creator is available in most Linux-repositories: install packages ‘qtcreator’ and ‘qt4-qmake’. For Windows, MAC and the other Linux-distributions there are installers available: http://qt.nokia.com/downloads. People who are not familiar with Qt, really should take a look around on http://qt.nokia.com/. You can get the source for the plugin QtOpenCL, by using GIT: git clone http://git.gitorious.org/qt-labs/opencl.git QtOpenCL See http://qt.gitorious.org/qt-labs/opencl for more information about the status of the project. You can download it here: https://dl.dropbox.com/u/1118267/QtOpenCL_20110117.zip (version 17 January 2011) Building the plugin For Linux and MAC you need to have the ‘build-essentials’. For Windows it might be a lot harder, since you need make, gcc and a lot of other build-tools which are not easily packaged for the Windows-OS. If you’ve made a win32-binary and/or a Windows-specific how-to, let me know. page 1 / 6 Using Qt Creator for OpenCL - 05-25-2010 by vincent - StreamComputing - http://streamcomputing.eu You might have seen that people have problems building the plugin. The trick is to use the options -qmake and -I (capital i) with the configure-script: ./configure -qmake <location of qmake 4.6 or higher> -I<location of directory CL with OpenCL-headers> make Notice the spaces. The program qmake is provided by Qt (package ‘qt4-qmake’), the OpenCL-headers by the SDK of ATI or NVidia (you’ll need the SDK anyway), or by Khronos. By example, on my laptop (NVIDIA, Ubuntu 32bit, with Qt 4.7): ./configure -qmake /usr/bin/qmake-qt4 -I/opt/NVIDIA_GPU_Computing_SDK_3.2/OpenCL/common/inc/ make This should work. On MAC the directory is not CL, but OpenCL – I haven’t tested it if Qt took that into account. After building , test it by setting a environment-setting “LD_LIBRARY_PATH” to the lib-directory in the plugin, and run the provided example-app ‘clinfo’. By example, on Linux: export LD_LIBRARY_PATH=`pwd`/lib:$LD_LIBRARY_PATH cd util/clinfo/ ./clinfo This should give you information about your OpenCL-setup. If you need further help, please go to the Qt forums. Configuring Qt Creator Now it’s time to make a new project with support for OpenCL. This has to be done in two steps. page 2 / 6 Using Qt Creator for OpenCL - 05-25-2010 by vincent - StreamComputing - http://streamcomputing.eu First make a project and edit the .pro-file by adding the following: page 3 / 6 Using Qt Creator for OpenCL - 05-25-2010 by vincent - StreamComputing - http://streamcomputing.eu LIBS += -L<location of opencl-plugin>/lib -L<location of OpenCL-SDK libraries> -lOpenCL -lQtOpenCL INCLUDEPATH += <location of opencl-plugin>/lib/ <location of OpenCL-SDK include-files> <location of opencl-plugin>/src/opencl/ By example: LIBS += -L/opt/qt-opencl/lib -L/usr/local/cuda/lib -lOpenCL -lQtOpenCL INCLUDEPATH += /opt/qt-opencl/lib/ /usr/local/cuda/include/ /opt/qt-opencl/src/opencl/ The following screenshot shows how it could look like: Second we edit (or add) the LD_LIBRARY_PATH in the project-settings (click on ‘Projects’ as seen in screenshot): /usr/lib/qtcreator:location of opencl-plugin>:<location of OpenCL-SDK libraries>: By example: /usr/lib/qtcreator:/opt/qt-opencl/lib:/usr/local/cuda/lib: As you see, we now also need to have the Qt-creator-libraries and SDK-libraries included. The following screenshot shows the edit-field for the project-environment: page 4 / 6 Using Qt Creator for OpenCL - 05-25-2010 by vincent - StreamComputing - http://streamcomputing.eu Testing your setup Just add something from the clinfo-source to your project: printf("OpenCL Platforms:n"); QList platforms = QCLPlatform::platforms(); foreach (QCLPlatform platform, platforms) { printf(" Platform ID : %ldn", long(platform.platformId( ))); printf(" Profile : %sn", platform.profile().toLatin 1().constData()); printf(" Version : %sn", platform.version().toLatin 1().constData()); printf(" Name : %sn", platform.name().toLatin1() .constData()); printf(" Vendor : %sn", platform.vendor().toLatin1 ().constData()); printf(" Extension Suffix : %sn", platform.extensionSuffix() .toLatin1().constData()); printf(" Extensions :n"); } QStringList extns = platform.extensions(); foreach (QString ext, extns) printf(" %sn", ext.toLatin1().c onstData()); printf("n"); If it gives errors during programming (underlined includes, etc), focus on INCLUDEPATH in the project-file. If it complaints when building the application, focus on LIBS. If it complaints when running the successfully built application, focus on LD_LIBRARY_PATH. Ok, it is maybe not that easy to get it running, but I promise it gets easier after this. Check out our Hello World, the provided examples and http://doc.qt.nokia.com/opencl-snapshot/ to start building. _______________________________________________ PDF generated by Kalin’s PDF Creation Station Related content: 1. ImageJ and OpenCL 2. Private: Wrappers and libraries page 5 / 6 Using Qt Creator for OpenCL - 05-25-2010 by vincent - StreamComputing - http://streamcomputing.eu 3. Qt Creator OpenCL Syntax Highlighting Also check out these posts Intel OpenCL CPU-drivers 2013 beta with OpenC... How expensive is an operation on a CPU? Basic Concepts: online kernel compiling Kernels and the GPL. Are we safe and linking? page 6 / 6 Powered by TCPDF (www.tcpdf.org).

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    6 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us