Skip to content

Latest commit

 

History

History

Modules

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

LLVM OpenMP CMake Modules

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.