Bug: 339404338

Clone this repo:
  1. 5e9bbaa Add janitors to the OWNERS file am: 315df656ba by Sadaf Ebrahimi · 5 months ago main
  2. 315df65 Add janitors to the OWNERS file by Sadaf Ebrahimi · 5 months ago
  3. 6fee86a Fix license_text path am: a55a96862d am: 90cd0d3dac by Jeremy Kemp · 12 months ago android15-automotiveos-dev android15-automotiveos-release android15-d4-release android15-platform-release android15-prebuilt-test android15-qpr1-release android15-qpr1-s3-release android15-qpr1-s4-release android15-qpr1-s5-release android15-qpr2-release android15-qpr2-s1-release android15-qpr2-s10-release android15-qpr2-s2-release android15-qpr2-s3-release android15-qpr2-s4-release android15-qpr2-s5-release android15-qpr2-s6-release android15-qpr2-s7-release android15-qpr2-s8-release android15-qpr2-s9-release android15-release android15-s1-release android15-security-release android15-tests-dev android15-tests-release aml_adb_351010000 aml_ads_351017080 aml_ads_351121120 aml_ads_351312060 aml_ads_351420000 aml_art_350913340 aml_art_351011240 aml_art_351011340 aml_art_351110180 aml_art_351310060 aml_art_351410020 aml_ase_351010000 aml_ase_351112060 aml_ase_351114000 aml_ase_351311040 aml_ase_351412000 aml_cbr_350910020 aml_cbr_351011020 aml_cbr_351111000 aml_cbr_351310040 aml_cbr_351410000 aml_cfg_351010000 aml_con_351010000 aml_con_351110000 aml_con_351412000 aml_doc_350915120 aml_doc_351012120 aml_doc_351113060 aml_doc_351311000 aml_doc_351412000 aml_ext_350912020 aml_ext_351122080 aml_ext_351312060 aml_ext_351423040 aml_hef_350921160 aml_hef_351016140 aml_hef_351120040 aml_hef_351314220 aml_hef_351420080 aml_ips_351010000 aml_ips_351111040 aml_ips_351310000 aml_ips_351410000 aml_med_350914000 aml_med_351010060 aml_med_351311020 aml_mpr_350914160 aml_mpr_351013100 aml_mpr_351013160 aml_mpr_351113060 aml_mpr_351113100 aml_mpr_351311140 aml_mpr_351416060 aml_net_350911020 aml_net_351010000 aml_net_351010020 aml_net_351111100 aml_net_351111140 aml_net_351310100 aml_net_351410000 aml_net_351410060 aml_odp_351020000 aml_odp_351121040 aml_odp_351313000 aml_odp_351421000 aml_per_350910080 aml_per_351014000 aml_per_351112280 aml_per_351112300 aml_per_351310020 aml_per_351410020 aml_res_351011000 aml_res_351111020 aml_res_351111040 aml_rkp_350910000 aml_rkp_351011000 aml_rkp_351310000 aml_sch_351010000 aml_sdk_350910000 aml_sdk_351110000 aml_sdk_351415000 aml_sta_350911020 aml_sta_351110040 aml_sta_351311000 aml_sta_351416000 aml_swc_351311020 aml_tet_350911120 aml_tet_351010220 aml_tet_351110060 aml_tet_351314140 aml_tet_351415080 aml_tz6_351010000 aml_uwb_350911040 aml_uwb_351011040 aml_uwb_351310040 aml_wif_350912040 aml_wif_351010040 aml_wif_351110060 aml_wif_351310040 aml_wif_351410040 android-15.0.0_r1 android-15.0.0_r10 android-15.0.0_r11 android-15.0.0_r12 android-15.0.0_r13 android-15.0.0_r14 android-15.0.0_r15 android-15.0.0_r16 android-15.0.0_r17 android-15.0.0_r2 android-15.0.0_r20 android-15.0.0_r21 android-15.0.0_r22 android-15.0.0_r23 android-15.0.0_r24 android-15.0.0_r25 android-15.0.0_r26 android-15.0.0_r27 android-15.0.0_r28 android-15.0.0_r29 android-15.0.0_r3 android-15.0.0_r30 android-15.0.0_r31 android-15.0.0_r32 android-15.0.0_r33 android-15.0.0_r34 android-15.0.0_r35 android-15.0.0_r36 android-15.0.0_r4 android-15.0.0_r5 android-15.0.0_r6 android-15.0.0_r7 android-15.0.0_r8 android-15.0.0_r9 android-automotiveos-15.0.0_lts1 android-cts-15.0_r1 android-cts-15.0_r2 android-cts-15.0_r3 android-cts-15.0_r4 android-platform-15.0.0_r1 android-platform-15.0.0_r2 android-platform-15.0.0_r3 android-platform-15.0.0_r4 android-platform-15.0.0_r5 android-platform-15.0.0_r6 android-platform-15.0.0_r7 android-platform-15.0.0_r8 android-security-15.0.0_r1 android-security-15.0.0_r2 android-security-15.0.0_r3 android-security-15.0.0_r4 android-security-15.0.0_r5 android-security-15.0.0_r6 android-security-15.0.0_r7 android-security-15.0.0_r8 android-vts-15.0_r1 android-vts-15.0_r2 android-vts-15.0_r3 android-vts-15.0_r4 frc_350820260 frc_350820420 frc_350820440 frc_350820660 frc_350820860 frc_350820960 frc_350822020
  4. f5be748 Merge remote-tracking branch 'origin/upstream' am: 84a946d054 am: cb0eaae5d0 by Inna Palant · 12 months ago
  5. 90cd0d3 Fix license_text path am: a55a96862d by Jeremy Kemp · 12 months ago

OpenCLTM API C++ bindings

Doxgen documentation for the bindings is available here:

http://khronosgroup.github.io/OpenCL-CLHPP/

Components:

  • include/CL/opencl.hpp: The latest, maintained, version of the C++ bindings. It should work with all versions of OpenCL (including 1.x). This is what most users will want.

  • include/CL/cl2.hpp: Includes opencl.hpp and emits a warning, for backwards compability.

  • docs: Doxygen file used to generate HTML documentation for opencl.hpp.

  • examples: A simple example application using the very basic features of the bindings.

  • tests: A (very small, incomplete) set of regression tests. Building the tests requires Python, Ruby, and CMock. For the last one we use CMock top-of-tree from Github, as the latest (at the time this was written) released CMock version, v2.5.3, has some issues.

  • CMakeLists.txt: Build system for the examples and tests and logic for the bindings installation.

Build Instructions

While the C++ Headers can be built and installed in isolation, it is part of the OpenCL SDK. If looking for streamlined build experience and a complete development package, refer to the SDK build instructions instead of the following guide.

Dependencies

The C++ Headers require:

  • the OpenCL Headers.
    • It is recommended to install the headers via CMake, however a convenience shorthand is provided. Providing OPENCL_CLHPP_HEADERS_DIR to CMake, one may specify the location of OpenCL Headers. By default, the C++ Headers will look for OpenCL Headers under ${OPENCL_DIST_DIR}/include.
  • the OpenCL-ICD-Loader when building the examples
    • It is recommended to install the ICD loader via CMake, however a convenience shorthand is provided. Providing OPENCL_CLHPP_LOADER_DIR to CMake, one may specify the location of the OpenCL ICD loader. By default, the C++ headers will look for OpenCL ICD loader under ${OPENCL_DIST_DIR}/lib.
  • The C++ Headers uses CMake for its build system. If CMake is not provided by your build system or OS package manager, please consult the CMake website.
  • The unit tests require CMock. To get this external dependency, use --recursive when cloning the repository, or run git submodule update --init --recursive.
  • Generating the mock input requires Ruby.
  • Generating the docs requires Doxygen. When it is available, you can generate HTML documentation by building the docs target.

Example Build

  1. Clone this repo, the OpenCL ICD Loader and the OpenCL Headers:

     git clone --recursive https://github.com/KhronosGroup/OpenCL-CLHPP
     git clone https://github.com/KhronosGroup/OpenCL-ICD-Loader
     git clone https://github.com/KhronosGroup/OpenCL-Headers
    
  2. Install OpenCL Headers CMake package

     cmake -D CMAKE_INSTALL_PREFIX=./OpenCL-Headers/install -S ./OpenCL-Headers -B ./OpenCL-Headers/build 
     cmake --build ./OpenCL-Headers/build --target install
    
  3. Build and install OpenCL ICD Loader CMake package. (Note that CMAKE_PREFIX_PATH need to be an absolute path. Update as needed.)

     cmake -D CMAKE_PREFIX_PATH=/absolute/path/to/OpenCL-Headers/install -D CMAKE_INSTALL_PREFIX=./OpenCL-ICD-Loader/install -S ./OpenCL-ICD-Loader -B ./OpenCL-ICD-Loader/build 
     cmake --build ./OpenCL-ICD-Loader/build --target install
    
  4. Build and install OpenCL C++ Headers CMake package.

     cmake -D CMAKE_PREFIX_PATH="/absolute/path/to/OpenCL-Headers/install;/absolute/path/to/OpenCL-ICD-Loader/install" -D CMAKE_INSTALL_PREFIX=./OpenCL-CLHPP/install -S ./OpenCL-CLHPP -B ./OpenCL-CLHPP/build 
     cmake --build ./OpenCL-CLHPP/build --target install
    

Example Use

Example CMake invocation

cmake -D CMAKE_PREFIX_PATH="/chosen/install/prefix/of/headers;/chosen/install/prefix/of/loader;/chosen/install/prefix/of/cppheaders" /path/to/opencl/app

and sample CMakeLists.txt

cmake_minimum_required(VERSION 3.0)
cmake_policy(VERSION 3.0...3.18.4)
project(proj)
add_executable(app main.cpp)
find_package(OpenCLHeaders REQUIRED)
find_package(OpenCLICDLoader REQUIRED)
find_package(OpenCLHeadersCpp REQUIRED)
target_link_libraries(app PRIVATE OpenCL::Headers OpenCL::OpenCL OpenCL::HeadersCpp)