[PATCH] D70065: [test-suite] Add sollve_vv external project.
Michael Kruse via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sun Nov 10 22:20:51 PST 2019
Meinersbur created this revision.
Meinersbur added reviewers: jdoerfert, MatzeB, homerdin, josemonsalve2, ddcc.
Herald added a subscriber: mgorny.
Herald added a project: LLVM.
sollve_vv <https://crpl.cis.udel.edu/ompvvsollve/> is the OpenMP Validation & Verification suite to test conformance to with the OpenMP specification.
It is included as an external benchmark, i.e. some work is required before it is enabled, for instance setting `TEST_SUITE_SOLLVEVV_ROOT` to the downloaded source repository. OpenMP is detected using CMake's `find_package(OpenMP)`.
Unfortunately, it does not detect additional flags required for offloading which have to be set manually. The current defaults are the ones I used to successfully offload to NVidia's V100 GPU with clang. I am open to discuss what the default should be or whether we should have a compiler/platform introspection. sollve_vv's own makefile use a default set of flags per compiler executable name.
Repository:
rT test-suite
https://reviews.llvm.org/D70065
Files:
CMakeLists.txt
External/CMakeLists.txt
External/sollve_vv/CMakeLists.txt
Index: External/sollve_vv/CMakeLists.txt
===================================================================
--- /dev/null
+++ External/sollve_vv/CMakeLists.txt
@@ -0,0 +1,67 @@
+# SOLLVE OpenMP Offloading Validation & Verification Suite
+# https://crpl.cis.udel.edu/ompvvsollve/
+
+set(TEST_SUITE_SOLLVEVV_OFFLOADING_CFLAGS "-fopenmp-targets=nvptx64-nvidia-cuda;-Xopenmp-target;-march=sm_70" CACHE STRING "Compiler arguments for OpenMP offloading")
+set(TEST_SUITE_SOLLVEVV_OFFLOADING_LDFLAGS "-fopenmp-targets=nvptx64-nvidia-cuda;-Xopenmp-target;-march=sm_70;-lopenmptarget" CACHE STRING "Linker arguments for OpenMP offloading")
+
+function (add_sollvevv LANG)
+ set(_includedir "${TEST_SUITE_SOLLVEVV_ROOT}/ompvv" )
+
+ if (NOT OPENMP_${LANG}_FOUND)
+ message(FATAL_ERROR "OpenMP for ${LANG} not found")
+ return ()
+ endif ()
+
+ #if (OpenMP_${LANG}_VERSION VERSION_LESS "4.5")
+ # message(FATAL_ERROR "OpenMP version ${OpenMP_${LANG}_VERSION} too old")
+ #endif ()
+
+ if ("${LANG}" STREQUAL "C")
+ set(_langext ".c")
+ elseif ("${LANG}" STREQUAL "CXX")
+ set(_langext ".cpp")
+ else ()
+ message(FATAL_ERROR "Unsupported languge ${LANG}")
+ endif ()
+
+ file(GLOB_RECURSE _tests_sources RELATIVE "${TEST_SUITE_SOLLVEVV_ROOT}/tests" "${TEST_SUITE_SOLLVEVV_ROOT}/tests/*${_langext}" )
+ foreach (_file IN LISTS _tests_sources)
+ get_filename_component(_ext "${_file}" EXT)
+ get_filename_component(_basename "${_file}" NAME_WE)
+ get_filename_component(_directory "${_file}" DIRECTORY)
+ string(REPLACE "." "" _ext "${_ext}")
+ string(REPLACE "/" "_" _directory "${_directory}")
+ string(REPLACE "." "" _directory "${_directory}")
+ set(_name "omptargetvv-${_basename}-${_directory}-${_ext}")
+
+ llvm_test_run()
+
+ llvm_test_executable(${_name} "${TEST_SUITE_SOLLVEVV_ROOT}/tests/${_file}")
+ target_include_directories(${_name} PRIVATE "${_includedir}")
+ target_link_libraries(${_name} PUBLIC OpenMP::OpenMP_${_lang})
+
+ # Add -fopenmp to linker command line; for some reason this is not done by target_link_libraries.
+ target_link_options(${_name} PRIVATE ${OpenMP_${LANG}_FLAGS})
+
+ # CMake's find_package(OpenMP) currently does not not introspect flags necessary for offloading.
+ target_compile_options(${_name} PUBLIC ${TEST_SUITE_SOLLVEVV_OFFLOADING_CFLAGS})
+ target_link_options(${_name} PUBLIC ${TEST_SUITE_SOLLVEVV_OFFLOADING_LDFLAGS})
+ endforeach ()
+endfunction ()
+
+
+llvm_externals_find(TEST_SUITE_SOLLVEVV_ROOT "sollve_vv" "OpenMP Offloading Validation & Verification Suite")
+if (TEST_SUITE_SOLLVEVV_ROOT)
+ if (OPENMP_FOUND)
+ message(STATUS "Adding OpenMP Offloading Validiation & Verification")
+ else ()
+ message(STATUS "NOT using OpenMP Validiation & Verification because OpenMP was not found")
+ return ()
+ endif ()
+
+ foreach (_lang in C CXX)
+ if (CMAKE_${_lang}_COMPILER)
+ add_sollvevv(${_lang})
+ endif()
+ endforeach ()
+endif ()
Index: External/CMakeLists.txt
===================================================================
--- External/CMakeLists.txt
+++ External/CMakeLists.txt
@@ -4,3 +4,4 @@
add_subdirectory(Povray)
add_subdirectory(SPEC)
add_subdirectory(skidmarks10)
+add_subdirectory(sollve_vv)
Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt
+++ CMakeLists.txt
@@ -188,6 +188,7 @@
include(TestSuite)
include(SingleMultiSource)
find_package(TCL)
+find_package(OpenMP)
if(NOT DEFINED TARGET_OS)
message(STATUS "Check target operating system - ${CMAKE_SYSTEM_NAME}")
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D70065.228632.patch
Type: text/x-patch
Size: 3614 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191111/a2d227b5/attachment-0001.bin>
More information about the llvm-commits
mailing list