forked from OSchip/llvm-project
0c660256eb | ||
---|---|---|
.. | ||
CMakeLists.txt | ||
FindOpenMPTarget.cmake | ||
README.rst |
README.rst
========================= LLVM OpenMP CMake Modules ========================= This directory contains CMake modules for OpenMP. These can be included into a project to include different OpenMP features. .. contents:: :local: Find OpenMP Target Support ========================== 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. .. code-block:: cmake 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.