mt-course
Оценивание (ИС)Оценивание (Тех.Зрение)Оценивание (КТ)
materials
materials
  • About
  • Для новичков
    • Основы C++
    • IDE/Compilers
    • Антипаттерны и способы улучшения кода
      • 0. Освобождение ресурсов
      • 1. Чтение данных из файла
      • 2. Открытие файлов
      • 3. Объявление переменных
      • 4. Выделение памяти
      • 5. Необдуманный код
      • 6. Глубокие if
      • 7. Длинные if
      • 8. Non-void функции
      • 9. Создание массивов
      • 10. Проверка формата файла
    • Git/GitHub
      • Git CLI
      • Git GUI
      • Git Web
      • Git в среде разработке
        • Visual Studio
        • CLion
        • Qt Creator
        • Visual Studio Code
      • CLion + GitHub
      • Работа с GitHub Actions
  • Настройки OpenMP/C++ threads
    • OpenMP
    • Сборка с OpenMP
    • C++ threads
  • Настройки CUDA и HIP
    • Установка CUDA SDK
    • Установка HIP SDK
    • Настройка проектов CUDA
    • Настройка проектов HIP
  • Настройки OpenCL
    • OpenCL
    • Проверка и установка платформы
    • Настройка проектов
    • Профилирование
      • Тестовый стенд
      • Профилирование через rcprof
      • Инструкция по профилированию в CodeXL
Powered by GitBook
On this page
  • Подключение заголовочного файла
  • MSBuild (Visual Studio)
  • CMake
  • Примеры CMakeLists.txt
  1. Настройки OpenCL

Настройка проектов

PreviousПроверка и установка платформыNextПрофилирование

Last updated 1 month ago

Для настроек проекта принято использовать путь относительно переменной окружения, задающей путь до OpenCL в вашей системе. В примере ниже такие пути выделены фиолетовым.

Подключение заголовочного файла

#define CL_TARGET_OPENCL_VERSION 120
#ifdef __APPLE__
#include <OpenCL/cl.h>
#else
#include <CL/cl.h>
#endif

MSBuild (Visual Studio)

Можно посмотреть здесь:

CMake

Можно посмотреть здесь:

Примеры CMakeLists.txt

Примечание для Windows: вместо path/to/OpenCLSDKdi``r прописываем путь до распакованного содержимого архива OpenCL-SDK-Win-*.zip

cmake_minimum_required(VERSION 3.21)
project(ocl1)

set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++23")

include_directories("path/to/OpenCLSDKdir/include")
link_directories("path/to/OpenCLSDKdir/lib")

add_executable(ocl1 opencl_example.cpp)
target_link_libraries(ocl "OpenCL")
cmake_minimum_required(VERSION 3.21)
project(ocl1)

set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++23")

find_package(OpenCL REQUIRED)
add_executable(ocl1 main.cpp)
target_link_libraries(ocl1 OpenCL::OpenCL)

Работает на M1 в 2025 (вероятно будет работать и на других системах).

cmake_minimum_required(VERSION 3.23)
project(ocl)

set(CMAKE_CXX_STANDARD 23)

add_executable(ocl main.cpp)
target_link_libraries(ocl "-framework OpenCL")

Работало в 2024 году на x86 Mac.

cmake_minimum_required(VERSION 3.23)
project(ocl)

set(CMAKE_CXX_STANDARD 23)
set(GCC_COVERAGE_COMPILE_FLAGS "-framework OpenCL")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}" )

add_executable(ocl main.cpp)
cmake_minimum_required(VERSION 3.20)
project(ocl1 C)

set(OpenCL_INCLUDE_DIRS "path/to/dir/include")
set(OpenCL_LIBRARY "path/to/dir/lib")

include_directories(${OpenCL_INCLUDE_DIRS})
link_directories(${OpenCL_LIBRARY})

add_executable(ocl1 opencl_example.c)
target_include_directories (ocl1 PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
cmake_minimum_required(VERSION 3.20)
project(ocl)

set(CMAKE_CXX_STANDARD 23)
set(OpenCL_INCLUDE_DIRS "path/to/oclroot/include")
set(OpenCL_LIBRARY "path/to/oclroot/lib")
include_directories(${OpenCL_INCLUDE_DIRS})
link_directories(${OpenCL_LIBRARY})

add_executable(ocl main.c)
target_include_directories(ocl PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(ocl "OpenCL.a")

Подробнее можно посмотреть по ссылкам:

Документация: . Нас интересует OpenCL 1.2

How to install OpenCL on Windows - StreamHPC
Handling OpenCL with CMake 3.1 and higher - StreamHPC
Khronos OpenCL Registry - The Khronos Group Inc
A guide to help developers get up and running quickly with the OpenCL programming framework
CMake Build System Support - OpenCL-Guide