[Openmp-commits] [openmp] r318847 - [CMake] Re-enable libomptarget and restrict tests to Clang 6.0.0

Jonas Hahnfeld via Openmp-commits openmp-commits at lists.llvm.org
Thu Jan 4 07:04:47 PST 2018


I've just got another idea of what might be going on: Do you use GNU 
gold? Clang uses linker scripts to embed the target binaries and I 
remember some problems, though not completely sure.
Can you please open a bug report in that case?

Am 2018-01-03 19:50, schrieb Jonas Hahnfeld:
> Works fine on my system, plugin is built correctly and the tests pass:
> $ file lib/libomptarget.rtl.x86_64.so
> lib/libomptarget.rtl.x86_64.so: ELF 64-bit LSB shared object, x86-64,
> version 1 (SYSV), dynamically linked, not stripped
> 
> Can you send me your CMake invocation?
> 
> Am 2018-01-03 18:52, schrieb Jonas Hahnfeld via Openmp-commits:
>> Yep, looks good. The CMake logic is also the way I thought it was:
>> Only test if we have all dependencies and built the library.
>> Let's wait until my checkout of the branch is finished so I can see if
>> I get the same problem...
>> 
>> Am 2018-01-03 18:47, schrieb Hans Wennborg:
>>> Looks like I have them:
>>> 
>>> //Path to a file.
>>> LIBOMPTARGET_DEP_LIBELF_INCLUDE_DIR:PATH=/usr/include
>>> 
>>> //Path to a library.
>>> LIBOMPTARGET_DEP_LIBELF_LIBRARIES:FILEPATH=/usr/lib/x86_64-linux-gnu/libelf.so
>>> 
>>> //Path to a file.
>>> LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIR:PATH=/usr/include/x86_64-linux-gnu
>>> 
>>> //Path to a library.
>>> LIBOMPTARGET_DEP_LIBFFI_LIBRARIES:FILEPATH=/usr/lib/x86_64-linux-gnu/libffi.so
>>> 
>>> On Wed, Jan 3, 2018 at 6:43 PM, Jonas Hahnfeld <hahnjo at hahnjo.de> 
>>> wrote:
>>>> There should be some LIBOMPTARGET_DEP_* variables in the cache...
>>>> 
>>>> 
>>>> Am 2018-01-03 18:40, schrieb Hans Wennborg:
>>>>> 
>>>>> How do I check whether I have those libraries?
>>>>> 
>>>>> On Wed, Jan 3, 2018 at 6:24 PM, Jonas Hahnfeld <hahnjo at hahnjo.de> 
>>>>> wrote:
>>>>>> 
>>>>>> Hmm, not good. I'll download the branch and see if I can see the 
>>>>>> error.
>>>>>> 
>>>>>> Do you have libelf and libffi installed? Is the target plugin 
>>>>>> built?
>>>>>> Maybe
>>>>>> the tests are not correctly disabled if we don't find the 
>>>>>> libraries...
>>>>>> 
>>>>>> Jonas
>>>>>> 
>>>>>> 
>>>>>> Am 2018-01-03 17:51, schrieb Hans Wennborg:
>>>>>>> 
>>>>>>> 
>>>>>>> After just having created the 6.0.0 branch and trying to run the
>>>>>>> tests, they still seem to fail:
>>>>>>> 
>>>>>>> ********************
>>>>>>> FAIL: libomptarget :: offloading/offloading_success.c (46527 of 
>>>>>>> 48035)
>>>>>>> ******************** TEST 'libomptarget ::
>>>>>>> offloading/offloading_success.c' FAILED ********************
>>>>>>> Script:
>>>>>>> --
>>>>>>> echo ignored-command
>>>>>>> echo ignored-command
>>>>>>> echo ignored-command
>>>>>>> /work/llvm-6.0/build.release2/./bin/clang -fopenmp  -I
>>>>>>> /work/llvm-6.0/llvm/projects/openmp/libomptarget/test -I /work
>>>>>>> /llvm-6.0/build.release2/projects/openmp/libomptarget/../runtime/src
>>>>>>> -L /work/llvm-6.0/build.release2/lib  -fopenmp-t
>>>>>>> argets=x86_64-pc-linux-gnu
>>>>>>> 
>>>>>>> 
>>>>>>> /usr/local/google/work/llvm-6.0/llvm/projects/openmp/libomptarget/test/offloading/offloadi
>>>>>>> ng_success.c -o
>>>>>>> 
>>>>>>> 
>>>>>>> /usr/local/google/work/llvm-6.0/build.release2/projects/openmp/libomptarget/test/offloading/Output/of
>>>>>>> floading_success.c.tmp-x86_64-pc-linux-gnu &&
>>>>>>> /usr/local/google/work/llvm-6.0/build.release2/projects/openmp/libompta
>>>>>>> rget/test/offloading/Output/offloading_success.c.tmp-x86_64-pc-linux-gnu
>>>>>>> | /work/llvm-6.0/build.release2/./bin/FileCh
>>>>>>> eck
>>>>>>> 
>>>>>>> 
>>>>>>> /usr/local/google/work/llvm-6.0/llvm/projects/openmp/libomptarget/test/offloading/offloading_success.c
>>>>>>> --
>>>>>>> Exit Code: 1
>>>>>>> 
>>>>>>> Command Output (stdout):
>>>>>>> --
>>>>>>> $ "echo" "ignored-command"
>>>>>>> # command output:
>>>>>>> ignored-command
>>>>>>> 
>>>>>>> $ "echo" "ignored-command"
>>>>>>> # command output:
>>>>>>> ignored-command
>>>>>>> 
>>>>>>> $ "echo" "ignored-command"
>>>>>>> # command output:
>>>>>>> ignored-command
>>>>>>> 
>>>>>>> $ "/work/llvm-6.0/build.release2/./bin/clang" "-fopenmp" "-I"
>>>>>>> "/work/llvm-6.0/llvm/projects/openmp/libomptarget/test"
>>>>>>>  "-I"
>>>>>>> 
>>>>>>> 
>>>>>>> "/work/llvm-6.0/build.release2/projects/openmp/libomptarget/../runtime/src"
>>>>>>> "-L" "/work/llvm-6.0/build.release2
>>>>>>> /lib" "-fopenmp-targets=x86_64-pc-linux-gnu"
>>>>>>> "/usr/local/google/work/llvm-6.0/llvm/projects/openmp/libomptarget/test/
>>>>>>> offloading/offloading_success.c" "-o"
>>>>>>> 
>>>>>>> 
>>>>>>> "/usr/local/google/work/llvm-6.0/build.release2/projects/openmp/libomptarget/te
>>>>>>> st/offloading/Output/offloading_success.c.tmp-x86_64-pc-linux-gnu"
>>>>>>> $
>>>>>>> 
>>>>>>> 
>>>>>>> "/usr/local/google/work/llvm-6.0/build.release2/projects/openmp/libomptarget/test/offloading/Output/offloading_succ
>>>>>>> ess.c.tmp-x86_64-pc-linux-gnu"
>>>>>>> note: command had no output on stdout or stderr
>>>>>>> error: command failed with exit status: 1
>>>>>>> $ "/work/llvm-6.0/build.release2/./bin/FileCheck"
>>>>>>> "/usr/local/google/work/llvm-6.0/llvm/projects/openmp/libomptarget/
>>>>>>> test/offloading/offloading_success.c"
>>>>>>> # command stderr:
>>>>>>> 
>>>>>>> 
>>>>>>> /usr/local/google/work/llvm-6.0/llvm/projects/openmp/libomptarget/test/offloading/offloading_success.c:19:12:
>>>>>>> error:
>>>>>>> expected string not found in input
>>>>>>>  // CHECK: Target region executed on the device
>>>>>>>            ^
>>>>>>> <stdin>:1:1: note: scanning from here
>>>>>>> Target region executed on the host
>>>>>>> ^
>>>>>>> 
>>>>>>> error: command failed with exit status: 1
>>>>>>> 
>>>>>>> --
>>>>>>> 
>>>>>>> On Wed, Nov 22, 2017 at 6:15 PM, Jonas Hahnfeld via 
>>>>>>> Openmp-commits
>>>>>>> <openmp-commits at lists.llvm.org> wrote:
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Author: hahnfeld
>>>>>>>> Date: Wed Nov 22 09:15:18 2017
>>>>>>>> New Revision: 318847
>>>>>>>> 
>>>>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=318847&view=rev
>>>>>>>> Log:
>>>>>>>> [CMake] Re-enable libomptarget and restrict tests to Clang 6.0.0
>>>>>>>> 
>>>>>>>> We have just fixed the codegen of omp_is_initial_device() to 
>>>>>>>> reliably
>>>>>>>> work
>>>>>>>> when offloading to the same device, see commit r316001. This 
>>>>>>>> fixes the
>>>>>>>> failing tests that were the reason why we disabled the library 
>>>>>>>> for 5.0.
>>>>>>>> 
>>>>>>>> Differential Revision: https://reviews.llvm.org/D39052
>>>>>>>> 
>>>>>>>> Modified:
>>>>>>>>     openmp/trunk/CMakeLists.txt
>>>>>>>>     openmp/trunk/libomptarget/test/CMakeLists.txt
>>>>>>>> 
>>>>>>>> Modified: openmp/trunk/CMakeLists.txt
>>>>>>>> URL:
>>>>>>>> 
>>>>>>>> http://llvm.org/viewvc/llvm-project/openmp/trunk/CMakeLists.txt?rev=318847&r1=318846&r2=318847&view=diff
>>>>>>>> 
>>>>>>>> 
>>>>>>>> ==============================================================================
>>>>>>>> --- openmp/trunk/CMakeLists.txt (original)
>>>>>>>> +++ openmp/trunk/CMakeLists.txt Wed Nov 22 09:15:18 2017
>>>>>>>> @@ -5,10 +5,7 @@ set(OPENMP_LLVM_TOOLS_DIR "" CACHE PATH
>>>>>>>>  add_subdirectory(runtime)
>>>>>>>> 
>>>>>>>> 
>>>>>>>> -# The tests currently don't pass if the generic ELF plugin is 
>>>>>>>> built.
>>>>>>>> -# TODO: Fix the tests and enable libomptarget by default on 
>>>>>>>> supported
>>>>>>>> -#       architectures and platforms.
>>>>>>>> -set(ENABLE_LIBOMPTARGET OFF)
>>>>>>>> +set(ENABLE_LIBOMPTARGET ON)
>>>>>>>>  # Currently libomptarget cannot be compiled on Windows or MacOS 
>>>>>>>> X.
>>>>>>>>  # Since the device plugins are only supported on Linux anyway,
>>>>>>>>  # there is no point in trying to compile libomptarget on other 
>>>>>>>> OSes.
>>>>>>>> 
>>>>>>>> Modified: openmp/trunk/libomptarget/test/CMakeLists.txt
>>>>>>>> URL:
>>>>>>>> 
>>>>>>>> http://llvm.org/viewvc/llvm-project/openmp/trunk/libomptarget/test/CMakeLists.txt?rev=318847&r1=318846&r2=318847&view=diff
>>>>>>>> 
>>>>>>>> 
>>>>>>>> ==============================================================================
>>>>>>>> --- openmp/trunk/libomptarget/test/CMakeLists.txt (original)
>>>>>>>> +++ openmp/trunk/libomptarget/test/CMakeLists.txt Wed Nov 22 
>>>>>>>> 09:15:18
>>>>>>>> 2017
>>>>>>>> @@ -27,6 +27,29 @@ if(${LIBOMPTARGET_STANDALONE_BUILD})
>>>>>>>>      "C compiler to use for testing OpenMP offloading library")
>>>>>>>>    set(LIBOMPTARGET_TEST_CXX_COMPILER ${CMAKE_CXX_COMPILER} 
>>>>>>>> CACHE
>>>>>>>> STRING
>>>>>>>>      "C++ compiler to use for testing OpenMP offloading 
>>>>>>>> library")
>>>>>>>> +
>>>>>>>> +  if (NOT(${LIBOMPTARGET_TEST_C_COMPILER} MATCHES "clang" AND
>>>>>>>> ${LIBOMPTARGET_TEST_CXX_COMPILER} MATCHES "clang"))
>>>>>>>> +    libomptarget_say("Can only test with Clang compiler!")
>>>>>>>> +    libomptarget_warning_say("The check-libomptarget target 
>>>>>>>> will not
>>>>>>>> be
>>>>>>>> available!")
>>>>>>>> +    return()
>>>>>>>> +  endif()
>>>>>>>> +
>>>>>>>> +  execute_process(
>>>>>>>> +    COMMAND ${LIBOMPTARGET_TEST_C_COMPILER} --version
>>>>>>>> +    OUTPUT_VARIABLE TEST_COMPILER_VERSION)
>>>>>>>> +  string(REGEX MATCH "version ([0-9.]+)" TEST_COMPILER_VERSION
>>>>>>>> ${TEST_COMPILER_VERSION})
>>>>>>>> +  if (NOT(TEST_COMPILER_VERSION))
>>>>>>>> +    libomptarget_say("Unable to determine Clang compiler 
>>>>>>>> version!")
>>>>>>>> +    libomptarget_warning_say("The check-libomptarget target 
>>>>>>>> will not
>>>>>>>> be
>>>>>>>> available!")
>>>>>>>> +    return()
>>>>>>>> +  endif()
>>>>>>>> +  set(TEST_COMPILER_VERSION ${CMAKE_MATCH_1})
>>>>>>>> +  if (TEST_COMPILER_VERSION VERSION_LESS 6.0.0)
>>>>>>>> +    libomptarget_say("Clang compiler version does not implement 
>>>>>>>> all
>>>>>>>> codegen, please update to 6.0.0!")
>>>>>>>> +    libomptarget_warning_say("The check-libomptarget target 
>>>>>>>> will not
>>>>>>>> be
>>>>>>>> available!")
>>>>>>>> +    return()
>>>>>>>> +  endif()
>>>>>>>> +
>>>>>>>>    set(LIBOMPTARGET_TEST_OPENMP_FLAG -fopenmp CACHE STRING
>>>>>>>>      "OpenMP compiler flag to use for testing OpenMP offloading
>>>>>>>> library")
>>>>>>>>    find_program(LIBOMPTARGET_LLVM_LIT_EXECUTABLE
>>>>>>>> 
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> Openmp-commits mailing list
>>>>>>>> Openmp-commits at lists.llvm.org
>>>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-commits
>> _______________________________________________
>> Openmp-commits mailing list
>> Openmp-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-commits


More information about the Openmp-commits mailing list