[Openmp-dev] clang-7: warning: No library'libomptarget-nvptx-sm_35.bc'

Siegmar Gross via Openmp-dev openmp-dev at lists.llvm.org
Tue Jul 3 01:30:47 PDT 2018


Hi Jonas, Gheorghe-Teod, Alexey,

thank you very much for your help. I tried to rebuild the current
version of llvm-trunk with clang-trunk from yesterday. Unfortunately,
I get an error.

loki build 128 clang -v
clang version 7.0.0 (trunk 336111)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/local/llvm-trunk/bin
Found candidate GCC installation: /usr/lib64/gcc/x86_64-suse-linux/4.8
Selected GCC installation: /usr/lib64/gcc/x86_64-suse-linux/4.8
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
Found CUDA installation: /usr/local/cuda, version 9.0
loki build 129

loki build 129 cd ../llvm/
loki llvm 130 svn info --revision HEAD
Path: trunk
URL: http://llvm.org/svn/llvm-project/llvm/trunk
Relative URL: ^/llvm/trunk
Repository Root: http://llvm.org/svn/llvm-project
Repository UUID: 91177308-0d34-0410-b5e6-96231b3b80d8
Revision: 336173
Node Kind: directory
Last Changed Author: mkazantsev
Last Changed Rev: 336172
Last Changed Date: 2018-07-03 08:23:57 +0200 (Tue, 03 Jul 2018)


I use the following configure command. Hopefully, I don't have an error
in my command.

set LLVM_VERSION=llvm-trunk-new
set LLVM_COMPILER=llvm-trunk
rm -r build
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr/local/${LLVM_VERSION} \
   -DCMAKE_BUILD_TYPE:STRING="Release" \
   -DCMAKE_C_COMPILER:STRING="${DIRPREFIX_PROG}/${LLVM_COMPILER}/bin/clang" \
   -DCMAKE_C_FLAGS:STRING="-m64 -I/usr/local/valgrind/include -I/usr/include/ncurses" \
   -DCMAKE_C_STANDARD_LIBRARIES="-lpthread" \
   -DCMAKE_CXX_COMPILER:STRING="${DIRPREFIX_PROG}/${LLVM_COMPILER}/bin/clang++" \
   -DCMAKE_CXX_FLAGS:STRING="-m64 -I/usr/local/valgrind/include -I/usr/include/ncurses" \
   -DCMAKE_CXX_STANDARD_LIBRARIES="-lpthread" \
   -DCMAKE_EXE_LINKER_FLAGS:STRING="-m64" \
   -DCUDA_INCLUDE_DIRS:STRING="/usr/local/cuda/include" \
   -DCUDA_LIBRARIES:STRING="/usr/local/cuda/lib64/libcudart.so" \
   -DLLVM_PARALLEL_COMPILE_JOBS:STRING="8" \
   -DLLVM_PARALLEL_LINK_JOBS:STRING="8" \
   -DLLVM_LIBDIR_SUFFIX:STRING="64" \
   -DBUILD_SHARED_LIBS:BOOL=ON \
   -DLLVM_POLLY_LINK_INTO_TOOLS:BOOL=ON \
   -DLLVM_TARGETS_TO_BUILD:STRING="NVPTX;X86" \
   -DOPENMP_ENABLE_LIBOMPTARGET:BOOL=ON \
   -DLIBOMP_ENABLE_SHARED:BOOL=ON \
   -DLIBOMP_USE_HWLOC:BOOL=ON \
   -DLIBOMP_HWLOC_INSTALL_DIR:STRING="/usr/local/hwloc-2.0.1" \
   -DLIBOMPTARGET_DEP_LIBELF_INCLUDE_DIR:STRING="/usr/local/elfutils-0.169/include" \
   -DLIBOMPTARGET_DEP_LIBELF_LIBRARIES:STRING="/usr/local/elfutils-0.169/lib64/libelf.so" \
   -DLIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIR:STRING="/usr/include" \
   -DLIBOMPTARGET_DEP_LIBFFI_LIBRARIES:STRING="/usr/lib64/libffi.so" \
   -DLIBOMPTARGET_NVPTX_ENABLE_BCLIB:BOOL=ON \
   -DLIBOMPTARGET_NVPTX_COMPUTE_CAPABILITIES:STRING="50,60,70" \
   -DCLANG_OPENMP_NVPTX_DEFAULT_ARCH=sm_50 \
   -DLIBOMPTARGET_DEBUG:BOOL=ON \
   -GNinja \
   ../llvm \
   |& tee log.cmake

"log.cmake" contains the following lines.

loki build 135 more log.cmake
-- The C compiler identification is Clang 7.0.0
-- The CXX compiler identification is Clang 7.0.0
-- The ASM compiler identification is Clang
-- Found assembler: /usr/local/llvm-trunk/bin/clang
-- Check for working C compiler using: Ninja
-- Check for working C compiler using: Ninja -- works
...
-- Could NOT find Python module pygments
-- Could NOT find Python module pygments.lexers.c_cpp
-- Could NOT find Python module yaml
...
-- Found PythonInterp: /usr/bin/python2.7 (found version "2.7.13")
...
-- Compiler-RT supported architectures: x86_64
-- Looking for rpc/xdr.h
-- Looking for rpc/xdr.h - not found
-- Looking for tirpc/rpc/xdr.h
-- Looking for tirpc/rpc/xdr.h - not found
...
-- Found LIBOMPTARGET_DEP_LIBELF: /usr/local/elfutils-0.169/lib64/libelf.so
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.28")
-- Found LIBOMPTARGET_DEP_LIBFFI: /usr/lib64/libffi.so
-- Found LIBOMPTARGET_DEP_CUDA_DRIVER: /usr/lib64/libcuda.so
-- LIBOMPTARGET: Building offloading runtime library libomptarget.
-- LIBOMPTARGET: Not building aarch64 offloading plugin: machine not found in the system.
-- LIBOMPTARGET: Building CUDA offloading plugin.
-- LIBOMPTARGET: Not building PPC64 offloading plugin: machine not found in the system.
-- LIBOMPTARGET: Not building PPC64le offloading plugin: machine not found in the system.
-- LIBOMPTARGET: Building x86_64 offloading plugin.
-- LIBOMPTARGET: Building CUDA offloading device RTL.
-- Performing Test LIBOMPTARGET_NVPTX_CUDA_COMPILER_SUPPORTS_FLAGS_REQUIRED
-- Performing Test LIBOMPTARGET_NVPTX_CUDA_COMPILER_SUPPORTS_FLAGS_REQUIRED - Success
-- Performing Test LIBOMPTARGET_NVPTX_CUDA_COMPILER_SUPPORTS_EXTERN_SHARED
-- Performing Test LIBOMPTARGET_NVPTX_CUDA_COMPILER_SUPPORTS_EXTERN_SHARED - Failed
-- Performing Test LIBOMPTARGET_NVPTX_CUDA_COMPILER_SUPPORTS_FCUDA_RDC
-- Performing Test LIBOMPTARGET_NVPTX_CUDA_COMPILER_SUPPORTS_FCUDA_RDC - Success
-- LIBOMPTARGET: Building CUDA LLVM bitcode offloading device RTL.
-- ISL version: isl-0.19-185-g8e9f55ce
-- Performing Test HAS_ATTRIBUTE_WARN_UNUSED_RESULT
-- Performing Test HAS_ATTRIBUTE_WARN_UNUSED_RESULT - Success
...
-- Performing Test LLDB_USING_LIBSTDCXX_4_9
-- Performing Test LLDB_USING_LIBSTDCXX_4_9 - Failed
CMake Warning at tools/lldb/cmake/modules/LLDBConfig.cmake:402 (message):
   You appear to be linking to libstdc++ version lesser than 4.9 without
   exceptions enabled.  These versions of the library have an issue, which
   causes occasional lldb crashes.  See
   <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59656> for details.  Possible
   courses of action are:

   - use libstdc++ version 4.9 or newer

   - use libc++ (via LLVM_ENABLE_LIBCXX)

   - enable exceptions (via LLVM_ENABLE_EH)

   - ignore this warning and accept occasional instability
Call Stack (most recent call first):
   tools/lldb/CMakeLists.txt:11 (include)
...
-- Found libedit: /usr/include (found version ".")
-- Found Doxygen: /usr/bin/doxygen (found version "1.8.6")
-- Found SWIG: /usr/local/swig-3.0.12/bin/swig (found version "3.0.12")
-- Performing Test CXX_SUPPORTS_NO_MACRO_REDEFINED
-- Performing Test CXX_SUPPORTS_NO_MACRO_REDEFINED - Success
-- Symbols (liblldb): exporting all symbols from the lldb namespace
-- Configuring done
-- Generating done
-- Build files have been written to: /export2/src/llvm-trunk/build
loki build 136


Why don't you find the Python modules and xdr.h? I ask our admin to upgrade
libstdc++.

loki build 138 ls -ld /usr/lib64/python2.7/site-packages/yaml/
drwxr-xr-x 2 root root 4096 May 11 06:12 /usr/lib64/python2.7/site-packages/yaml/

loki build 139 ls -ld /usr/lib/python2.7/site-packages/pygments
drwxr-xr-x 6 root root 4096 Jul 31  2017 /usr/lib/python2.7/site-packages/pygments

loki build 140 ls -l /usr/include/rpc/xdr.h
-rw-r--r-- 1 root root 14577 May 28 20:07 /usr/include/rpc/xdr.h


Building the package breaks with the following error.

loki build 145 grep FAILED log.ninja-build
FAILED: include/llvm/IR/IntrinsicImpl.inc.tmp
FAILED: lib/ToolDrivers/llvm-lib/Options.inc.tmp
FAILED: tools/clang/include/clang/Driver/Options.inc.tmp
FAILED: tools/lld/lib/Driver/DarwinLdOptions.inc.tmp
FAILED: lib/Transforms/InstCombine/InstCombineTables.inc.tmp
FAILED: include/llvm/IR/IntrinsicEnums.inc.tmp
FAILED: include/llvm/IR/Attributes.inc.tmp
FAILED: tools/lld/ELF/Options.inc.tmp
FAILED: tools/lld/COFF/Options.inc.tmp
FAILED: lib/IR/AttributesCompatFunc.inc.tmp
FAILED: lib/ToolDrivers/llvm-dlltool/Options.inc.tmp
FAILED: tools/llvm-rc/Opts.inc.tmp
FAILED: tools/llvm-cvtres/Opts.inc.tmp
FAILED: tools/lld/wasm/Options.inc.tmp
FAILED: tools/lld/MinGW/Options.inc.tmp
FAILED: tools/llvm-objcopy/ObjcopyOpts.inc.tmp
FAILED: tools/llvm-mt/Opts.inc.tmp
loki build 146 grep error: log.ninja-build
/export2/src/llvm-trunk/build/bin/llvm-tblgen: symbol lookup error: /export2/src/llvm-trunk/build/bin/llvm-tblgen: undefined symbol: 
_ZTVN4llvm2cl3optISsLb0ENS0_6parserISsEEEE
/export2/src/llvm-trunk/build/bin/llvm-tblgen: symbol lookup error: /export2/src/llvm-trunk/build/bin/llvm-tblgen: undefined symbol: 
_ZTVN4llvm2cl3optISsLb0ENS0_6parserISsEEEE
/export2/src/llvm-trunk/build/bin/llvm-tblgen: symbol lookup error: /export2/src/llvm-trunk/build/bin/llvm-tblgen: undefined symbol: 
_ZTVN4llvm2cl3optISsLb0ENS0_6parserISsEEEE
/export2/src/llvm-trunk/build/bin/llvm-tblgen: symbol lookup error: /export2/src/llvm-trunk/build/bin/llvm-tblgen: undefined symbol: 
_ZTVN4llvm2cl3optISsLb0ENS0_6parserISsEEEE
/export2/src/llvm-trunk/build/bin/llvm-tblgen: symbol lookup error: /export2/src/llvm-trunk/build/bin/llvm-tblgen: undefined symbol: 
_ZTVN4llvm2cl3optISsLb0ENS0_6parserISsEEEE
/export2/src/llvm-trunk/build/bin/llvm-tblgen: symbol lookup error: /export2/src/llvm-trunk/build/bin/llvm-tblgen: undefined symbol: 
_ZTVN4llvm2cl3optISsLb0ENS0_6parserISsEEEE
/export2/src/llvm-trunk/build/bin/llvm-tblgen: symbol lookup error: /export2/src/llvm-trunk/build/bin/llvm-tblgen: undefined symbol: 
_ZTVN4llvm2cl3optISsLb0ENS0_6parserISsEEEE
/export2/src/llvm-trunk/build/bin/llvm-tblgen: symbol lookup error: /export2/src/llvm-trunk/build/bin/llvm-tblgen: undefined symbol: 
_ZTVN4llvm2cl3optISsLb0ENS0_6parserISsEEEE
/export2/src/llvm-trunk/build/bin/llvm-tblgen: symbol lookup error: /export2/src/llvm-trunk/build/bin/llvm-tblgen: undefined symbol: 
_ZTVN4llvm2cl3optISsLb0ENS0_6parserISsEEEE
/export2/src/llvm-trunk/build/bin/llvm-tblgen: symbol lookup error: /export2/src/llvm-trunk/build/bin/llvm-tblgen: undefined symbol: 
_ZTVN4llvm2cl3optISsLb0ENS0_6parserISsEEEE
/export2/src/llvm-trunk/build/bin/llvm-tblgen: symbol lookup error: /export2/src/llvm-trunk/build/bin/llvm-tblgen: undefined symbol: 
_ZTVN4llvm2cl3optISsLb0ENS0_6parserISsEEEE
/export2/src/llvm-trunk/build/bin/llvm-tblgen: symbol lookup error: /export2/src/llvm-trunk/build/bin/llvm-tblgen: undefined symbol: 
_ZTVN4llvm2cl3optISsLb0ENS0_6parserISsEEEE
/export2/src/llvm-trunk/build/bin/llvm-tblgen: symbol lookup error: /export2/src/llvm-trunk/build/bin/llvm-tblgen: undefined symbol: 
_ZTVN4llvm2cl3optISsLb0ENS0_6parserISsEEEE
/export2/src/llvm-trunk/build/bin/llvm-tblgen: symbol lookup error: /export2/src/llvm-trunk/build/bin/llvm-tblgen: undefined symbol: 
_ZTVN4llvm2cl3optISsLb0ENS0_6parserISsEEEE
/export2/src/llvm-trunk/build/bin/llvm-tblgen: symbol lookup error: /export2/src/llvm-trunk/build/bin/llvm-tblgen: undefined symbol: 
_ZTVN4llvm2cl3optISsLb0ENS0_6parserISsEEEE
/export2/src/llvm-trunk/build/bin/llvm-tblgen: symbol lookup error: /export2/src/llvm-trunk/build/bin/llvm-tblgen: undefined symbol: 
_ZTVN4llvm2cl3optISsLb0ENS0_6parserISsEEEE
/export2/src/llvm-trunk/build/bin/llvm-tblgen: symbol lookup error: /export2/src/llvm-trunk/build/bin/llvm-tblgen: undefined symbol: 
_ZTVN4llvm2cl3optISsLb0ENS0_6parserISsEEEE
loki build 147

Hopefully somebody can fix the problem. Thank you very much for any
help in advance.


Kind regards

Siegmar


Am 02.07.2018 um 18:29 schrieb Jonas Hahnfeld:
> Hi Siegmar,
> 
> please note that building the bclib requires Clang trunk itself, so you will have to rebuild the openmp repository with the "new" compiler. It doesn't work at 
> all if you use GCC to compile the runtime libraries (which makes sense because GCC cannot generate LLVM Bitcode).
> 
>> Why do I get different numbers of devices, if I compile the program with different options.
> 
> I think I already answered this in the past: libomptarget will show you the devices you compiled for. It creates 4 "virtual" devices for x86_64 and you probably 
> have 1 GPU in your system.
> 
> Jonas
> 
> On 2018-07-02 17:10, Gheorghe-Teod Bercea via Openmp-dev wrote:
>> Hi Siegmar,
>>
>> It all depends on how you build the compiler.
>>
>> If you want to build the .bc library you will need to have the
>> following two cmake flags:
>>
>>     -DOPENMP_ENABLE_LIBOMPTARGET=ON
>>     -DLIBOMPTARGET_NVPTX_ENABLE_BCLIB=true
>>
>> This will enable the building of libomptarget library and the
>> ...sm_35.bc library. sm_35 is the default compute capability used by
>> the compiler if you don't specify anything else.
>>
>> You can control this default value when you build your compiler by
>> passing the following flag to your cmake command:
>>
>>     -DCLANG_OPENMP_NVPTX_DEFAULT_ARCH=sm_50
>>
>> You can also build the .bc library for more than one compute
>> capability using the following cmake flag:
>>
>>     -DLIBOMPTARGET_NVPTX_COMPUTE_CAPABILITIES=50,60,70
>>
>> Make sure to also include the default in the list (in this case 50).
>>
>> When you compile your application/program you can control which
>> compute capability the OpenMP device offloading toolchain uses by
>> passing the following flag to clang/clang++:
>>
>> -Xopenmp-target -march=sm_70
>>
>> This compile line flag is only required if you want a compute
>> capability other than the default (in this case sm_50) i.e. the one
>> specified using the -DCLANG_OPENMP_NVPTX_DEFAULT_ARCH flag.
>>
>> I hope this helps,
>>
>> --Doru
>>
>> From:        Siegmar Gross via Openmp-dev <openmp-dev at lists.llvm.org>
>> To:        llvm-openmp-dev <openmp-dev at lists.llvm.org>
>> Date:        07/02/2018 09:27 AM
>> Subject:        [Openmp-dev] clang-7: warning: No library
>> 'libomptarget-nvptx-sm_35.bc'
>> Sent by:        "Openmp-dev" <openmp-dev-bounces at lists.llvm.org>
>>
>> -------------------------
>>
>> Hi,
>>
>> today I've built the latest version of llvm-trunk using Cmake on my
>> "SUSE
>> Linux Enterprise Server 12.3 (x86_64)". I get the following warnings,
>> if I
>> compile a small program.
>>
>> loki introduction 162 \clang --cuda-gpu-arch=sm_50 -fopenmp
>> -fopenmp-targets=nvptx64-nvidia-cuda dot_prod_accelerator_OpenMP.c
>> -lomptarget
>> clang-7: warning: No library 'libomptarget-nvptx-sm_35.bc' found in
>> the default
>> clang lib directory or in LIBRARY_PATH. Expect degraded performance
>> due to no
>> inlining of runtime functions on target devices. [-Wopenmp-target]
>> clang-7: warning: argument unused during compilation:
>> '--cuda-gpu-arch=sm_50'
>> [-Wunused-command-line-argument]
>> loki introduction 163
>>
>> Why does the compiler ignore "--cuda-gpu-arch=sm_50". How can I create
>> "libomptarget-nvptx-sm_35.bc" and probably
>> "libomptarget-nvptx-sm_50.bc"?
>>
>> Why do I get different numbers of devices, if I compile the program
>> with
>> different options. I use a machine with two "Intel Xeon E5-2620 v3"
>> processors (6 cores and 12 hwthreads each) and one Nvidia Quadro K2200
>> device.
>>
>> loki introduction 183 clang -fopenmp
>> -fopenmp-targets=x86_64-pc-linux-gnu \
>> ? dot_prod_accelerator_OpenMP.c -lomptarget
>> loki introduction 184 a.out
>> Number of processors:     24
>> Number of devices:        4
>> Default device:           0
>> sum = 6.000000e+08
>>
>> loki introduction 185 clang -fopenmp
>> -fopenmp-targets=nvptx64-nvidia-cuda \
>> ? dot_prod_accelerator_OpenMP.c -lomptarget
>> clang-7: warning: No library 'libomptarget-nvptx-sm_35.bc' found in
>> the default
>> clang lib directory or in LIBRARY_PATH. Expect degraded performance
>> due to no
>> inlining of runtime functions on target devices. [-Wopenmp-target]
>> loki introduction 186 a.out
>> Number of processors:     24
>> Number of devices:        1
>> Default device:           0
>> sum = 6.000000e+08
>> loki introduction 187
>>
>> Thank you very much for any answers in advance.
>>
>> Kind regards
>>
>> Siegmar
>> _______________________________________________
>> Openmp-dev mailing list
>> Openmp-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev [1]
>>
>>
>>
>> Links:
>> ------
>> [1] http://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev
>> _______________________________________________
>> Openmp-dev mailing list
>> Openmp-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev


More information about the Openmp-dev mailing list