r315996 - [CMake][OpenMP] Customize default offloading arch

Jonas Hahnfeld via cfe-commits cfe-commits at lists.llvm.org
Thu Dec 7 17:51:16 PST 2017


Am 2017-12-07 20:34, schrieb Jonas Hahnfeld via cfe-commits:
> Hi Ahmed,
> 
> Am 2017-12-07 19:57, schrieb Ahmed Bougacha:
>> Hi Jonas,
>> 
>> On Tue, Oct 17, 2017 at 6:37 AM, Jonas Hahnfeld via cfe-commits
>> <cfe-commits at lists.llvm.org> wrote:
>>> Author: hahnfeld
>>> Date: Tue Oct 17 06:37:36 2017
>>> New Revision: 315996
>>> 
>>> URL: http://llvm.org/viewvc/llvm-project?rev=315996&view=rev
>>> Log:
>>> [CMake][OpenMP] Customize default offloading arch
>>> 
>>> For the shuffle instructions in reductions we need at least sm_30
>>> but the user may want to customize the default architecture.
>>> 
>>> Differential Revision: https://reviews.llvm.org/D38883
>>> 
>>> Modified:
>>>     cfe/trunk/CMakeLists.txt
>>>     cfe/trunk/include/clang/Config/config.h.cmake
>>>     cfe/trunk/lib/Driver/ToolChains/Cuda.cpp
>>>     cfe/trunk/lib/Driver/ToolChains/Cuda.h
>>> 
>>> Modified: cfe/trunk/CMakeLists.txt
>>> URL: 
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/CMakeLists.txt?rev=315996&r1=315995&r2=315996&view=diff
>>> ==============================================================================
>>> --- cfe/trunk/CMakeLists.txt (original)
>>> +++ cfe/trunk/CMakeLists.txt Tue Oct 17 06:37:36 2017
>>> @@ -235,6 +235,17 @@ endif()
>>>  set(CLANG_DEFAULT_OPENMP_RUNTIME "libomp" CACHE STRING
>>>    "Default OpenMP runtime used by -fopenmp.")
>>> 
>>> +# OpenMP offloading requires at least sm_30 because we use shuffle 
>>> instructions
>>> +# to generate efficient code for reductions.
>>> +set(CLANG_OPENMP_NVPTX_DEFAULT_ARCH "sm_30" CACHE STRING
>>> +  "Default architecture for OpenMP offloading to Nvidia GPUs.")
>>> +string(REGEX MATCH "^sm_([0-9]+)$" MATCHED_ARCH 
>>> "${CLANG_OPENMP_NVPTX_DEFAULT_ARCH}")
>>> +if (NOT DEFINED MATCHED_ARCH OR "${CMAKE_MATCH_1}" LESS 30)
>>> +  message(WARNING "Resetting default architecture for OpenMP 
>>> offloading to Nvidia GPUs to sm_30")
>> 
>> This warning is pretty noisy and doesn't affect most people: I don't
>> know what it means but I get it in every cmake run.
>> Can we somehow restrict or disable it?
> 
> So the next line used to say
>>> +  set(CLANG_OPENMP_NVPTX_DEFAULT_ARCH "sm_30" CACHE STRING
>>> +    "Default architecture for OpenMP offloading to Nvidia GPUs." 
>>> FORCE)
> 
> which should make sure that the cache is updated to a "correct" value
> and you only see the warning once. That said, we have raised the
> default to "sm_35" today, maybe something has gone wrong here. Let me
> check that and come back to you!

Works "correctly" (at least as intended) for me: I get a warning if the 
cache has an incorrect value or the user specifies it on the command 
line. Right then the cache is updated (FORCEd set) and the warning isn't 
printed in future CMake invocations. I'm using CMake 3.5.2, maybe a 
newer version behaves differently? In that case I agree that we should 
fix this, the warning wasn't meant to annoy everyone on each 
reconfiguration!

Jonas


More information about the cfe-commits mailing list