This directory contains CMake modules for OpenMP. These can be included into a project to include different OpenMP features.
This module will attempt to find OpenMP target offloading support for a given
device. The module will attempt to compile a test program using known compiler
flags for each requested architecture. If successful, the flags required for
offloading will be loaded into the OpenMPTarget::OpenMPTarget_<device>
target or the OpenMPTarget_<device>_FLAGS
variable. Currently supported target
devices are NVPTX
and AMDGPU
. This module is still under development so
some features may be missing.
To use this module, simply add the path to CMake's current module path and call
find_package
. The module will be installed with your OpenMP installation by
default. Including OpenMP offloading support in an application should now only
require a few additions.
cmake_minimum_required(VERSION 3.13.4)
project(offloadTest VERSION 1.0 LANGUAGES CXX)
list(APPEND CMAKE_MODULE_PATH "${PATH_TO_OPENMP_INSTALL}/lib/cmake/openmp")
find_package(OpenMPTarget REQUIRED NVPTX)
add_executable(offload)
target_link_libraries(offload PRIVATE OpenMPTarget::OpenMPTarget_NVPTX)
target_sources(offload PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/Main.cpp)
Using this module requires at least CMake version 3.13.4. Supported languages
are C and C++ with Fortran support planned in the future. If your application
requires building for a specific device architecture you can set the
OpenMPTarget_<device>_ARCH=<flag>
variable. Compiler support is best for
Clang but this module should work for other compiler vendors such as IBM or GNU.