Fangrui Song via llvm-dev
2020-Apr-01 16:49 UTC
[llvm-dev] LLD issue on a massively parallel build machine
On 2020-03-29, Nemanja Ivanovic via llvm-dev wrote:>Glad you got it working. >My suggestion about LLVM_ENABLE_THREADS didn't work because you didn't >apply it when building the build linker. > >When you don't have the ability to rebuild the build compiler, this doesn't >apply. In those cases, I end up doing a dirty hack where I use a wrapper >script with something like: > ><path-to-build-compiler> "$@" -Wl,--no-threads > >To invoke the build compiler. That way you still get full parallelism while >compiling and linking, but you prevent LLD from using threads.https://reviews.llvm.org/D76885 (committed yesterday) changed --no-threads to --threads={1,2,...} (--no-threads is used rarely (GNU ld does not support it) so I'd rather not keep the option for compatibility). You may try -Wl,--threads=1>On Sat., Mar. 28, 2020, 4:19 p.m. Itaru Kitayama, <itaru.kitayama at gmail.com> >wrote: > >> Good news, I was able to use up to 37 cores for LLVM build with LLD. >> The build speed, did not measure precisely though, is comparable to the >> build with GNU ld case. >> >> Thank you all for your help! >> >> On Sun, Mar 29, 2020 at 5:04 AM Alex Brachet-Mialot < >> alexbrachetmialot at gmail.com> wrote: >> >>> Yes unfortunately that would limit you to 4 cores. >>> >>> There’s no easy way to use lld with —no-threads with our build system at >>> the moment unfortunately. >>> >>> I also had just been using ld.gold, but will switch now that numactl >>> works for me. >>> >>> On Sat, Mar 28, 2020 at 3:58 PM Itaru Kitayama <itaru.kitayama at gmail.com> >>> wrote: >>> >>>> That is slowing down the build visibly, for the speed I should stick >>>> with ld at the moment. >>>> >>>> >>>> On Sun, Mar 29, 2020 at 4:42 AM Alexandre Ganea < >>>> alexandre.ganea at ubisoft.com> wrote: >>>> >>>>> Would `taskset -c 0-3 ninja check-all -j4` work? >>>>> >>>>> >>>>> >>>>> *De :* Itaru Kitayama <itaru.kitayama at gmail.com> >>>>> *Envoyé :* March 28, 2020 3:37 PM >>>>> *À :* Alex Brachet-Mialot <alexbrachetmialot at gmail.com> >>>>> *Cc :* Alexandre Ganea <alexandre.ganea at ubisoft.com>; LLVM Dev < >>>>> llvm-dev at lists.llvm.org>; Nemanja Ivanovic <nemanja.i.ibm at gmail.com> >>>>> *Objet :* Re: [llvm-dev] LLD issue on a massively parallel build >>>>> machine >>>>> >>>>> >>>>> >>>>> $ free -g >>>>> total used free shared buff/cache >>>>> available >>>>> Mem: 376 149 20 1 207 >>>>> 225 >>>>> Swap: 3 0 3 >>>>> >>>>> >>>>> >>>>> Too small swap size for a 72-core login machine? >>>>> >>>>> >>>>> >>>>> On Sun, Mar 29, 2020 at 4:28 AM Alex Brachet-Mialot < >>>>> alexbrachetmialot at gmail.com> wrote: >>>>> >>>>> Enable threads is for building llvm with or without thread support. To >>>>> my knowledge it has no effect on the build system. >>>>> >>>>> >>>>> >>>>> Like was discussed above you could try limiting the number of >>>>> processes created (assuming your lld was after that commit) with numactl or >>>>> taskset. >>>>> >>>>> >>>>> >>>>> In your case though it looked like you were running out of memory. You >>>>> could try increasing your swap space? >>>>> >>>>> >>>>> >>>>> Alex >>>>> >>>>> >>>>> >>>>> On Sat, Mar 28, 2020 at 3:15 PM Itaru Kitayama < >>>>> itaru.kitayama at gmail.com> wrote: >>>>> >>>>> Hi, >>>>> >>>>> My configuration is below: >>>>> >>>>> cmake -GNinja -DLLVM_ENABLE_LLD=ON -DLLVM_ENABLE_THREADS=OFF >>>>> -DLLVM_ENABLE_LIBCXX=ON -DCMAKE_BUILD_TYPE=Release >>>>> -DGCC_INSTALL_PREFIX=/home/usr4/c74014i/opt/gcc-7.5.0/ >>>>> -DLIBOMPTARGET_ENABLE_DEBUG=ON >>>>> -DCMAKE_INSTALL_PREFIX=$HOME/opt/clang/${today} -DCMAKE_C_COMPILER=clang >>>>> -DCMAKE_C_FLAGS="" -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CXX_FLAGS="" >>>>> -DLLVM_ENABLE_PROJECTS="clang;openmp;lld;libcxx;libcxxabi;compiler-rt;libunwind" >>>>> -DCLANG_OPENMP_NVPTX_DEFAULT_ARCH=sm_60 >>>>> -DLIBOMPTARGET_NVPTX_COMPUTE_CAPABILITIES=60 -DLLVM_TARGETS_TO_BUILD="all" >>>>> /tmp/llvm-project/llvm >>>>> >>>>> >>>>> >>>>> but did not help my case: >>>>> >>>>> >>>>> >>>>> [...] >>>>> >>>>> [4802/5201] Linking CXX executable bin/lld >>>>> FAILED: bin/lld >>>>> : && /home/usr4/c74014i/opt/clang/current/bin/clang++ -stdlib=libc++ >>>>> -fPIC -fvisibility-inlines-hidden -Werror=date-time >>>>> -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter >>>>> -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic >>>>> -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default >>>>> -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor >>>>> -Wstring-conversion -fdiagnostics-color -ffunction-sections -fdata-sections >>>>> -O3 -DNDEBUG -stdlib=libc++ -fuse-ld=lld -Wl,--color-diagnostics >>>>> -Wl,-allow-shlib-undefined -Wl,--export-dynamic -Wl,-O3 >>>>> tools/lld/tools/lld/CMakeFiles/lld.dir/lld.cpp.o -o bin/lld >>>>> -Wl,-rpath,"\$ORIGIN/../lib" lib/libLLVMSupport.a -lpthread >>>>> lib/liblldCommon.a lib/liblldCOFF.a lib/liblldDriver.a lib/liblldELF.a >>>>> lib/liblldMinGW.a lib/liblldWasm.a lib/liblldMachO.a >>>>> lib/liblldReaderWriter.a lib/liblldYAML.a lib/liblldCore.a >>>>> lib/liblldCOFF.a lib/libLLVMDebugInfoPDB.a lib/libLLVMLibDriver.a >>>>> lib/libLLVMWindowsManifest.a /usr/lib64/libxml2.so lib/liblldCommon.a >>>>> lib/libLLVMOption.a lib/libLLVMAArch64CodeGen.a >>>>> lib/libLLVMAArch64AsmParser.a lib/libLLVMAArch64Disassembler.a >>>>> lib/libLLVMAArch64Desc.a lib/libLLVMAArch64Info.a >>>>> lib/libLLVMAArch64Utils.a lib/libLLVMAMDGPUCodeGen.a >>>>> lib/libLLVMMIRParser.a lib/libLLVMAMDGPUAsmParser.a >>>>> lib/libLLVMAMDGPUDisassembler.a lib/libLLVMAMDGPUDesc.a >>>>> lib/libLLVMAMDGPUInfo.a lib/libLLVMAMDGPUUtils.a lib/libLLVMARMCodeGen.a >>>>> lib/libLLVMARMAsmParser.a lib/libLLVMARMDisassembler.a >>>>> lib/libLLVMARMDesc.a lib/libLLVMARMInfo.a lib/libLLVMARMUtils.a >>>>> lib/libLLVMAVRCodeGen.a lib/libLLVMAVRAsmParser.a lib/libLLVMAVRDesc.a >>>>> lib/libLLVMAVRDisassembler.a lib/libLLVMAVRInfo.a >>>>> lib/libLLVMBPFCodeGen.a lib/libLLVMBPFAsmParser.a lib/libLLVMBPFDesc.a >>>>> lib/libLLVMBPFDisassembler.a lib/libLLVMBPFInfo.a >>>>> lib/libLLVMHexagonCodeGen.a lib/libLLVMHexagonAsmParser.a >>>>> lib/libLLVMHexagonDisassembler.a lib/libLLVMHexagonDesc.a >>>>> lib/libLLVMHexagonInfo.a lib/libLLVMLanaiCodeGen.a >>>>> lib/libLLVMLanaiAsmParser.a lib/libLLVMLanaiDisassembler.a >>>>> lib/libLLVMLanaiDesc.a lib/libLLVMLanaiInfo.a lib/libLLVMMipsCodeGen.a >>>>> lib/libLLVMMipsAsmParser.a lib/libLLVMMipsDesc.a >>>>> lib/libLLVMMipsDisassembler.a lib/libLLVMMipsInfo.a >>>>> lib/libLLVMMSP430CodeGen.a lib/libLLVMMSP430AsmParser.a >>>>> lib/libLLVMMSP430Desc.a lib/libLLVMMSP430Disassembler.a >>>>> lib/libLLVMMSP430Info.a lib/libLLVMNVPTXCodeGen.a lib/libLLVMNVPTXDesc.a >>>>> lib/libLLVMNVPTXInfo.a lib/libLLVMPowerPCCodeGen.a >>>>> lib/libLLVMPowerPCAsmParser.a lib/libLLVMPowerPCDesc.a >>>>> lib/libLLVMPowerPCDisassembler.a lib/libLLVMPowerPCInfo.a >>>>> lib/libLLVMRISCVCodeGen.a lib/libLLVMRISCVAsmParser.a >>>>> lib/libLLVMRISCVDesc.a lib/libLLVMRISCVDisassembler.a >>>>> lib/libLLVMRISCVInfo.a lib/libLLVMRISCVUtils.a lib/libLLVMSparcCodeGen.a >>>>> lib/libLLVMSparcAsmParser.a lib/libLLVMSparcDesc.a >>>>> lib/libLLVMSparcDisassembler.a lib/libLLVMSparcInfo.a >>>>> lib/libLLVMSystemZCodeGen.a lib/libLLVMSystemZAsmParser.a >>>>> lib/libLLVMSystemZDisassembler.a lib/libLLVMSystemZDesc.a >>>>> lib/libLLVMSystemZInfo.a lib/libLLVMWebAssemblyCodeGen.a >>>>> lib/libLLVMWebAssemblyAsmParser.a lib/libLLVMWebAssemblyDisassembler.a >>>>> lib/libLLVMWebAssemblyDesc.a lib/libLLVMWebAssemblyInfo.a >>>>> lib/libLLVMX86CodeGen.a lib/libLLVMCFGuard.a lib/libLLVMGlobalISel.a >>>>> lib/libLLVMX86AsmParser.a lib/libLLVMX86Desc.a >>>>> lib/libLLVMX86Disassembler.a lib/libLLVMX86Info.a lib/libLLVMX86Utils.a >>>>> lib/libLLVMXCoreCodeGen.a lib/libLLVMAsmPrinter.a >>>>> lib/libLLVMDebugInfoDWARF.a lib/libLLVMSelectionDAG.a >>>>> lib/libLLVMXCoreDesc.a lib/libLLVMXCoreDisassembler.a >>>>> lib/libLLVMMCDisassembler.a lib/libLLVMXCoreInfo.a lib/libLLVMLTO.a >>>>> lib/libLLVMObjCARCOpts.a lib/libLLVMPasses.a lib/libLLVMCodeGen.a >>>>> lib/libLLVMTarget.a lib/libLLVMCoroutines.a lib/libLLVMipo.a >>>>> lib/libLLVMBitWriter.a lib/libLLVMScalarOpts.a lib/libLLVMVectorize.a >>>>> lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a >>>>> lib/libLLVMLinker.a lib/libLLVMFrontendOpenMP.a lib/libLLVMIRReader.a >>>>> lib/libLLVMAsmParser.a lib/libLLVMInstrumentation.a >>>>> lib/libLLVMTransformUtils.a lib/libLLVMAnalysis.a lib/libLLVMObject.a >>>>> lib/libLLVMBitReader.a lib/libLLVMMCParser.a lib/libLLVMMC.a >>>>> lib/libLLVMDebugInfoCodeView.a lib/libLLVMDebugInfoMSF.a >>>>> lib/libLLVMTextAPI.a lib/libLLVMProfileData.a lib/libLLVMCore.a >>>>> lib/libLLVMBinaryFormat.a lib/libLLVMRemarks.a >>>>> lib/libLLVMBitstreamReader.a lib/libLLVMSupport.a -lz -lrt -ldl >>>>> -ltinfo -lpthread -lm lib/libLLVMDemangle.a && cd >>>>> /tmp/build/202003290405/tools/lld/tools/lld && >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E >>>>> create_symlink lld /tmp/build/202003290405/./bin/lld-link && cd >>>>> /tmp/build/202003290405/tools/lld/tools/lld && >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E >>>>> create_symlink lld /tmp/build/202003290405/./bin/ld.lld && cd >>>>> /tmp/build/202003290405/tools/lld/tools/lld && >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E >>>>> create_symlink lld /tmp/build/202003290405/./bin/ld64.lld && cd >>>>> /tmp/build/202003290405/tools/lld/tools/lld && >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E >>>>> create_symlink lld /tmp/build/202003290405/./bin/wasm-ld >>>>> terminating with uncaught exception of type std::__1::system_error: >>>>> thread constructor failed: Resource temporarily unavailable >>>>> PLEASE submit a bug report to https://bugs.llvm.org/ and include the >>>>> crash backtrace. >>>>> #0 0x00000000007924f4 PrintStackTraceSignalHandler(void*) >>>>> (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x7924f4) >>>>> #1 0x00000000007902ce llvm::sys::RunSignalHandlers() >>>>> (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x7902ce) >>>>> #2 0x0000000000792bd5 SignalHandler(int) >>>>> (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x792bd5) >>>>> #3 0x00007fddd54bb630 __restore_rt (/lib64/libpthread.so.0+0xf630) >>>>> #4 0x00007fddd3b40377 raise >>>>> /usr/src/debug/glibc-2.17-c758a686/signal/../nptl/sysdeps/unix/sysv/linux/raise.c:55:0 >>>>> #5 0x00007fddd3b41a68 abort >>>>> /usr/src/debug/glibc-2.17-c758a686/stdlib/abort.c:92:0 >>>>> #6 0x00007fddd411ae8b >>>>> (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2be8b) >>>>> #7 0x00007fddd40fdb9f demangling_terminate_handler() >>>>> (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0xeb9f) >>>>> #8 0x00007fddd411a0a3 std::__terminate(void (*)()) >>>>> (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2b0a3) >>>>> #9 0x00007fddd411ce06 >>>>> (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2de06) >>>>> #10 0x00007fddd411cd9f >>>>> (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2dd9f) >>>>> #11 0x00007fddd43bded4 std::__1::__throw_system_error(int, char const*) >>>>> (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++.so.1+0x90ed4) >>>>> #12 0x0000000002a7a316 void* >>>>> std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, >>>>> std::__1::default_delete<std::__1::__thread_struct> >, >>>>> llvm::parallel::detail::(anonymous >>>>> namespace)::ThreadPoolExecutor::ThreadPoolExecutor(llvm::ThreadPoolStrategy)::'lambda'()> >>>>> >(void*) (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x2a7a316) >>>>> #13 0x00007fddd54b3ea5 start_thread >>>>> /usr/src/debug/glibc-2.17-c758a686/nptl/pthread_create.c:307:0 >>>>> #14 0x00007fddd3c088cd clone >>>>> /usr/src/debug////////glibc-2.17-c758a686/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:113:0 >>>>> clang-11: error: unable to execute command: Aborted >>>>> clang-11: error: linker command failed due to signal (use -v to see >>>>> invocation) >>>>> >>>>> >>>>> >>>>> On Sun, Mar 29, 2020 at 1:44 AM Nemanja Ivanovic < >>>>> nemanja.i.ibm at gmail.com> wrote: >>>>> >>>>> The discussion in https://reviews.llvm.org/D76240 >>>>> >>>>> may be of interest to the participants of this thread. Specifically, >>>>> Fangrui's planned work on a command line option to limit threads for LLD. >>>>> Until that becomes a reality, you might want to use the CMake variable >>>>> -DLLVM_ENABLE_THREADS=OFF when building the LLD that you are using to >>>>> prevent parallelism. >>>>> >>>>> >>>>> >>>>> On Sat, Mar 28, 2020 at 12:32 PM Alexandre Ganea via llvm-dev < >>>>> llvm-dev at lists.llvm.org> wrote: >>>>> >>>>> Alex : >>>>> >>>>> Can you please try `numactl` or `taskset` after >>>>> https://github.com/llvm/llvm-project/commit/09158252f777c2e2f06a86b154c44abcbcf9bb74 >>>>> ? >>>>> >>>>> >>>>> >>>>> There was a tiny bug in how *sched_getaffinity*() was used, see: >>>>> https://reviews.llvm.org/D75153#1942336 >>>>> >>>>> >>>>> >>>>> *De :* Alex Brachet-Mialot <alexbrachetmialot at gmail.com> >>>>> *Envoyé :* March 28, 2020 12:11 PM >>>>> *À :* Itaru Kitayama <itaru.kitayama at gmail.com> >>>>> *Cc :* LLVM Dev <llvm-dev at lists.llvm.org>; Alexandre Ganea < >>>>> alexandre.ganea at ubisoft.com>; Fāng-ruì Sòng <maskray at google.com> >>>>> *Objet :* Re: [llvm-dev] LLD issue on a massively parallel build >>>>> machine >>>>> >>>>> >>>>> >>>>> I also run into problems with lld on machines with lots of cores (208), >>>>> but I run into rlimits for number of processes I can create, something >>>>> outside of my control. >>>>> >>>>> >>>>> >>>>> Unfortunately things like numactl or taskset do not limit the >>>>> concurrency of lld currently. >>>>> >>>>> >>>>> >>>>> On Sat, Mar 28, 2020 at 4:10 AM Itaru Kitayama via llvm-dev < >>>>> llvm-dev at lists.llvm.org> wrote: >>>>> >>>>> Hi, >>>>> >>>>> On a 1296-core Intel machine with 376 GB, setting >>>>> >>>>> >>>>> >>>>> -DLLVM_PARALLEL_LINK_JOB=1 >>>>> >>>>> >>>>> >>>>> does not help (switching back to ld scales) see: >>>>> >>>>> >>>>> >>>>> [5085/5201] Linking CXX executable bin/clang-11 >>>>> FAILED: bin/clang-11 >>>>> : && /home/usr4/c74014i/opt/clang/current/bin/clang++ -stdlib=libc++ >>>>> -fPIC -fvisibility-inlines-hidden -Werror=date-time >>>>> -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter >>>>> -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic >>>>> -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default >>>>> -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor >>>>> -Wstring-conversion -fdiagnostics-color -ffunction-sections -fdata-sections >>>>> -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O3 -DNDEBUG >>>>> -stdlib=libc++ -fuse-ld=lld -Wl,--color-diagnostics >>>>> -Wl,-allow-shlib-undefined -Wl,--export-dynamic -Wl,-O3 >>>>> tools/clang/tools/driver/CMakeFiles/clang.dir/driver.cpp.o >>>>> tools/clang/tools/driver/CMakeFiles/clang.dir/cc1_main.cpp.o >>>>> tools/clang/tools/driver/CMakeFiles/clang.dir/cc1as_main.cpp.o >>>>> tools/clang/tools/driver/CMakeFiles/clang.dir/cc1gen_reproducer_main.cpp.o >>>>> -o bin/clang-11 -Wl,-rpath,"\$ORIGIN/../lib" lib/libLLVMAArch64CodeGen.a >>>>> lib/libLLVMAArch64AsmParser.a lib/libLLVMAArch64Desc.a >>>>> lib/libLLVMAArch64Disassembler.a lib/libLLVMAArch64Info.a >>>>> lib/libLLVMAArch64Utils.a lib/libLLVMAMDGPUCodeGen.a >>>>> lib/libLLVMAMDGPUAsmParser.a lib/libLLVMAMDGPUDesc.a >>>>> lib/libLLVMAMDGPUDisassembler.a lib/libLLVMAMDGPUInfo.a >>>>> lib/libLLVMAMDGPUUtils.a lib/libLLVMARMCodeGen.a >>>>> lib/libLLVMARMAsmParser.a lib/libLLVMARMDesc.a >>>>> lib/libLLVMARMDisassembler.a lib/libLLVMARMInfo.a lib/libLLVMARMUtils.a >>>>> lib/libLLVMAVRCodeGen.a lib/libLLVMAVRAsmParser.a lib/libLLVMAVRDesc.a >>>>> lib/libLLVMAVRDisassembler.a lib/libLLVMAVRInfo.a >>>>> lib/libLLVMBPFCodeGen.a lib/libLLVMBPFAsmParser.a lib/libLLVMBPFDesc.a >>>>> lib/libLLVMBPFDisassembler.a lib/libLLVMBPFInfo.a >>>>> lib/libLLVMHexagonCodeGen.a lib/libLLVMHexagonAsmParser.a >>>>> lib/libLLVMHexagonDesc.a lib/libLLVMHexagonDisassembler.a >>>>> lib/libLLVMHexagonInfo.a lib/libLLVMLanaiCodeGen.a >>>>> lib/libLLVMLanaiAsmParser.a lib/libLLVMLanaiDesc.a >>>>> lib/libLLVMLanaiDisassembler.a lib/libLLVMLanaiInfo.a >>>>> lib/libLLVMMipsCodeGen.a lib/libLLVMMipsAsmParser.a >>>>> lib/libLLVMMipsDesc.a lib/libLLVMMipsDisassembler.a >>>>> lib/libLLVMMipsInfo.a lib/libLLVMMSP430CodeGen.a >>>>> lib/libLLVMMSP430AsmParser.a lib/libLLVMMSP430Desc.a >>>>> lib/libLLVMMSP430Disassembler.a lib/libLLVMMSP430Info.a >>>>> lib/libLLVMNVPTXCodeGen.a lib/libLLVMNVPTXDesc.a lib/libLLVMNVPTXInfo.a >>>>> lib/libLLVMPowerPCCodeGen.a lib/libLLVMPowerPCAsmParser.a >>>>> lib/libLLVMPowerPCDesc.a lib/libLLVMPowerPCDisassembler.a >>>>> lib/libLLVMPowerPCInfo.a lib/libLLVMRISCVCodeGen.a >>>>> lib/libLLVMRISCVAsmParser.a lib/libLLVMRISCVDesc.a >>>>> lib/libLLVMRISCVDisassembler.a lib/libLLVMRISCVInfo.a >>>>> lib/libLLVMRISCVUtils.a lib/libLLVMSparcCodeGen.a >>>>> lib/libLLVMSparcAsmParser.a lib/libLLVMSparcDesc.a >>>>> lib/libLLVMSparcDisassembler.a lib/libLLVMSparcInfo.a >>>>> lib/libLLVMSystemZCodeGen.a lib/libLLVMSystemZAsmParser.a >>>>> lib/libLLVMSystemZDesc.a lib/libLLVMSystemZDisassembler.a >>>>> lib/libLLVMSystemZInfo.a lib/libLLVMWebAssemblyCodeGen.a >>>>> lib/libLLVMWebAssemblyAsmParser.a lib/libLLVMWebAssemblyDesc.a >>>>> lib/libLLVMWebAssemblyDisassembler.a lib/libLLVMWebAssemblyInfo.a >>>>> lib/libLLVMX86CodeGen.a lib/libLLVMX86AsmParser.a lib/libLLVMX86Desc.a >>>>> lib/libLLVMX86Disassembler.a lib/libLLVMX86Info.a lib/libLLVMX86Utils.a >>>>> lib/libLLVMXCoreCodeGen.a lib/libLLVMXCoreDesc.a >>>>> lib/libLLVMXCoreDisassembler.a lib/libLLVMXCoreInfo.a >>>>> lib/libLLVMAnalysis.a lib/libLLVMCodeGen.a lib/libLLVMCore.a >>>>> lib/libLLVMipo.a lib/libLLVMAggressiveInstCombine.a >>>>> lib/libLLVMInstCombine.a lib/libLLVMInstrumentation.a lib/libLLVMMC.a >>>>> lib/libLLVMMCParser.a lib/libLLVMObjCARCOpts.a lib/libLLVMOption.a >>>>> lib/libLLVMScalarOpts.a lib/libLLVMSupport.a lib/libLLVMTransformUtils.a >>>>> lib/libLLVMVectorize.a -lpthread lib/libclangBasic.a >>>>> lib/libclangCodeGen.a lib/libclangDriver.a lib/libclangFrontend.a >>>>> lib/libclangFrontendTool.a lib/libclangSerialization.a >>>>> lib/libLLVMAArch64Desc.a lib/libLLVMAArch64Info.a >>>>> lib/libLLVMAArch64Utils.a lib/libLLVMMIRParser.a lib/libLLVMAMDGPUDesc.a >>>>> lib/libLLVMAMDGPUInfo.a lib/libLLVMAMDGPUUtils.a lib/libLLVMARMDesc.a >>>>> lib/libLLVMARMInfo.a lib/libLLVMARMUtils.a lib/libLLVMHexagonDesc.a >>>>> lib/libLLVMHexagonInfo.a lib/libLLVMLanaiDesc.a lib/libLLVMLanaiInfo.a >>>>> lib/libLLVMSystemZDesc.a lib/libLLVMSystemZInfo.a >>>>> lib/libLLVMWebAssemblyDesc.a lib/libLLVMWebAssemblyInfo.a >>>>> lib/libLLVMCFGuard.a lib/libLLVMGlobalISel.a lib/libLLVMAsmPrinter.a >>>>> lib/libLLVMDebugInfoDWARF.a lib/libLLVMSelectionDAG.a >>>>> lib/libLLVMMCDisassembler.a lib/libclangCodeGen.a lib/libLLVMCoverage.a >>>>> lib/libLLVMLTO.a lib/libLLVMObjCARCOpts.a lib/libLLVMPasses.a >>>>> lib/libLLVMCodeGen.a lib/libLLVMTarget.a lib/libLLVMCoroutines.a >>>>> lib/libLLVMipo.a lib/libLLVMInstrumentation.a lib/libLLVMVectorize.a >>>>> lib/libLLVMBitWriter.a lib/libLLVMIRReader.a lib/libLLVMAsmParser.a >>>>> lib/libLLVMLinker.a lib/libLLVMScalarOpts.a >>>>> lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a >>>>> lib/libclangRewriteFrontend.a lib/libclangARCMigrate.a >>>>> lib/libclangStaticAnalyzerFrontend.a lib/libclangStaticAnalyzerCheckers.a >>>>> lib/libclangStaticAnalyzerCore.a lib/libclangCrossTU.a >>>>> lib/libclangIndex.a lib/libclangFrontend.a lib/libclangDriver.a >>>>> lib/libLLVMOption.a lib/libclangParse.a lib/libclangSerialization.a >>>>> lib/libclangSema.a lib/libclangAnalysis.a lib/libclangASTMatchers.a >>>>> lib/libclangEdit.a lib/libclangFormat.a lib/libclangToolingInclusions.a >>>>> lib/libclangToolingCore.a lib/libclangAST.a lib/libLLVMFrontendOpenMP.a >>>>> lib/libLLVMTransformUtils.a lib/libLLVMAnalysis.a >>>>> lib/libLLVMProfileData.a lib/libLLVMObject.a lib/libLLVMMCParser.a >>>>> lib/libLLVMBitReader.a lib/libLLVMTextAPI.a lib/libclangRewrite.a >>>>> lib/libclangLex.a lib/libclangBasic.a lib/libLLVMCore.a >>>>> lib/libLLVMRemarks.a lib/libLLVMBitstreamReader.a lib/libLLVMMC.a >>>>> lib/libLLVMBinaryFormat.a lib/libLLVMDebugInfoCodeView.a >>>>> lib/libLLVMDebugInfoMSF.a lib/libLLVMSupport.a -lz -lrt -ldl -ltinfo >>>>> -lpthread -lm lib/libLLVMDemangle.a && : >>>>> ld.lld: error: failed to open bin/clang-11: Cannot allocate memory >>>>> >>>>> _______________________________________________ >>>>> LLVM Developers mailing list >>>>> llvm-dev at lists.llvm.org >>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >>>>> >>>>> _______________________________________________ >>>>> LLVM Developers mailing list >>>>> llvm-dev at lists.llvm.org >>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >>>>> >>>>>>_______________________________________________ >LLVM Developers mailing list >llvm-dev at lists.llvm.org >https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
Itaru Kitayama via llvm-dev
2020-Apr-01 20:47 UTC
[llvm-dev] LLD issue on a massively parallel build machine
Thanks for the heads up the supercomputer Is down for maintenance this week. I’ll give it a try when it gets back. On Thu, Apr 2, 2020 at 1:49 Fangrui Song <maskray at google.com> wrote:> On 2020-03-29, Nemanja Ivanovic via llvm-dev wrote: > >Glad you got it working. > >My suggestion about LLVM_ENABLE_THREADS didn't work because you didn't > >apply it when building the build linker. > > > >When you don't have the ability to rebuild the build compiler, this > doesn't > >apply. In those cases, I end up doing a dirty hack where I use a wrapper > >script with something like: > > > ><path-to-build-compiler> "$@" -Wl,--no-threads > > > >To invoke the build compiler. That way you still get full parallelism > while > >compiling and linking, but you prevent LLD from using threads. > > > https://reviews.llvm.org/D76885 (committed yesterday) changed > --no-threads to --threads={1,2,...} (--no-threads is used rarely (GNU ld > does not support it) so I'd rather not keep the option for > compatibility). > > You may try -Wl,--threads=1 > > >On Sat., Mar. 28, 2020, 4:19 p.m. Itaru Kitayama, < > itaru.kitayama at gmail.com> > >wrote: > > > >> Good news, I was able to use up to 37 cores for LLVM build with LLD. > >> The build speed, did not measure precisely though, is comparable to the > >> build with GNU ld case. > >> > >> Thank you all for your help! > >> > >> On Sun, Mar 29, 2020 at 5:04 AM Alex Brachet-Mialot < > >> alexbrachetmialot at gmail.com> wrote: > >> > >>> Yes unfortunately that would limit you to 4 cores. > >>> > >>> There’s no easy way to use lld with —no-threads with our build system > at > >>> the moment unfortunately. > >>> > >>> I also had just been using ld.gold, but will switch now that numactl > >>> works for me. > >>> > >>> On Sat, Mar 28, 2020 at 3:58 PM Itaru Kitayama < > itaru.kitayama at gmail.com> > >>> wrote: > >>> > >>>> That is slowing down the build visibly, for the speed I should stick > >>>> with ld at the moment. > >>>> > >>>> > >>>> On Sun, Mar 29, 2020 at 4:42 AM Alexandre Ganea < > >>>> alexandre.ganea at ubisoft.com> wrote: > >>>> > >>>>> Would `taskset -c 0-3 ninja check-all -j4` work? > >>>>> > >>>>> > >>>>> > >>>>> *De :* Itaru Kitayama <itaru.kitayama at gmail.com> > >>>>> *Envoyé :* March 28, 2020 3:37 PM > >>>>> *À :* Alex Brachet-Mialot <alexbrachetmialot at gmail.com> > >>>>> *Cc :* Alexandre Ganea <alexandre.ganea at ubisoft.com>; LLVM Dev < > >>>>> llvm-dev at lists.llvm.org>; Nemanja Ivanovic <nemanja.i.ibm at gmail.com> > >>>>> *Objet :* Re: [llvm-dev] LLD issue on a massively parallel build > >>>>> machine > >>>>> > >>>>> > >>>>> > >>>>> $ free -g > >>>>> total used free shared buff/cache > >>>>> available > >>>>> Mem: 376 149 20 1 207 > >>>>> 225 > >>>>> Swap: 3 0 3 > >>>>> > >>>>> > >>>>> > >>>>> Too small swap size for a 72-core login machine? > >>>>> > >>>>> > >>>>> > >>>>> On Sun, Mar 29, 2020 at 4:28 AM Alex Brachet-Mialot < > >>>>> alexbrachetmialot at gmail.com> wrote: > >>>>> > >>>>> Enable threads is for building llvm with or without thread support. > To > >>>>> my knowledge it has no effect on the build system. > >>>>> > >>>>> > >>>>> > >>>>> Like was discussed above you could try limiting the number of > >>>>> processes created (assuming your lld was after that commit) with > numactl or > >>>>> taskset. > >>>>> > >>>>> > >>>>> > >>>>> In your case though it looked like you were running out of memory. > You > >>>>> could try increasing your swap space? > >>>>> > >>>>> > >>>>> > >>>>> Alex > >>>>> > >>>>> > >>>>> > >>>>> On Sat, Mar 28, 2020 at 3:15 PM Itaru Kitayama < > >>>>> itaru.kitayama at gmail.com> wrote: > >>>>> > >>>>> Hi, > >>>>> > >>>>> My configuration is below: > >>>>> > >>>>> cmake -GNinja -DLLVM_ENABLE_LLD=ON -DLLVM_ENABLE_THREADS=OFF > >>>>> -DLLVM_ENABLE_LIBCXX=ON -DCMAKE_BUILD_TYPE=Release > >>>>> -DGCC_INSTALL_PREFIX=/home/usr4/c74014i/opt/gcc-7.5.0/ > >>>>> -DLIBOMPTARGET_ENABLE_DEBUG=ON > >>>>> -DCMAKE_INSTALL_PREFIX=$HOME/opt/clang/${today} > -DCMAKE_C_COMPILER=clang > >>>>> -DCMAKE_C_FLAGS="" -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CXX_FLAGS="" > >>>>> > -DLLVM_ENABLE_PROJECTS="clang;openmp;lld;libcxx;libcxxabi;compiler-rt;libunwind" > >>>>> -DCLANG_OPENMP_NVPTX_DEFAULT_ARCH=sm_60 > >>>>> -DLIBOMPTARGET_NVPTX_COMPUTE_CAPABILITIES=60 > -DLLVM_TARGETS_TO_BUILD="all" > >>>>> /tmp/llvm-project/llvm > >>>>> > >>>>> > >>>>> > >>>>> but did not help my case: > >>>>> > >>>>> > >>>>> > >>>>> [...] > >>>>> > >>>>> [4802/5201] Linking CXX executable bin/lld > >>>>> FAILED: bin/lld > >>>>> : && /home/usr4/c74014i/opt/clang/current/bin/clang++ -stdlib=libc++ > >>>>> -fPIC -fvisibility-inlines-hidden -Werror=date-time > >>>>> -Werror=unguarded-availability-new -Wall -Wextra > -Wno-unused-parameter > >>>>> -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic > >>>>> -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default > >>>>> -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor > >>>>> -Wstring-conversion -fdiagnostics-color -ffunction-sections > -fdata-sections > >>>>> -O3 -DNDEBUG -stdlib=libc++ -fuse-ld=lld -Wl,--color-diagnostics > >>>>> -Wl,-allow-shlib-undefined -Wl,--export-dynamic -Wl,-O3 > >>>>> tools/lld/tools/lld/CMakeFiles/lld.dir/lld.cpp.o -o bin/lld > >>>>> -Wl,-rpath,"\$ORIGIN/../lib" lib/libLLVMSupport.a -lpthread > >>>>> lib/liblldCommon.a lib/liblldCOFF.a lib/liblldDriver.a > lib/liblldELF.a > >>>>> lib/liblldMinGW.a lib/liblldWasm.a lib/liblldMachO.a > >>>>> lib/liblldReaderWriter.a lib/liblldYAML.a lib/liblldCore.a > >>>>> lib/liblldCOFF.a lib/libLLVMDebugInfoPDB.a lib/libLLVMLibDriver.a > >>>>> lib/libLLVMWindowsManifest.a /usr/lib64/libxml2.so > lib/liblldCommon.a > >>>>> lib/libLLVMOption.a lib/libLLVMAArch64CodeGen.a > >>>>> lib/libLLVMAArch64AsmParser.a lib/libLLVMAArch64Disassembler.a > >>>>> lib/libLLVMAArch64Desc.a lib/libLLVMAArch64Info.a > >>>>> lib/libLLVMAArch64Utils.a lib/libLLVMAMDGPUCodeGen.a > >>>>> lib/libLLVMMIRParser.a lib/libLLVMAMDGPUAsmParser.a > >>>>> lib/libLLVMAMDGPUDisassembler.a lib/libLLVMAMDGPUDesc.a > >>>>> lib/libLLVMAMDGPUInfo.a lib/libLLVMAMDGPUUtils.a > lib/libLLVMARMCodeGen.a > >>>>> lib/libLLVMARMAsmParser.a lib/libLLVMARMDisassembler.a > >>>>> lib/libLLVMARMDesc.a lib/libLLVMARMInfo.a lib/libLLVMARMUtils.a > >>>>> lib/libLLVMAVRCodeGen.a lib/libLLVMAVRAsmParser.a > lib/libLLVMAVRDesc.a > >>>>> lib/libLLVMAVRDisassembler.a lib/libLLVMAVRInfo.a > >>>>> lib/libLLVMBPFCodeGen.a lib/libLLVMBPFAsmParser.a > lib/libLLVMBPFDesc.a > >>>>> lib/libLLVMBPFDisassembler.a lib/libLLVMBPFInfo.a > >>>>> lib/libLLVMHexagonCodeGen.a lib/libLLVMHexagonAsmParser.a > >>>>> lib/libLLVMHexagonDisassembler.a lib/libLLVMHexagonDesc.a > >>>>> lib/libLLVMHexagonInfo.a lib/libLLVMLanaiCodeGen.a > >>>>> lib/libLLVMLanaiAsmParser.a lib/libLLVMLanaiDisassembler.a > >>>>> lib/libLLVMLanaiDesc.a lib/libLLVMLanaiInfo.a > lib/libLLVMMipsCodeGen.a > >>>>> lib/libLLVMMipsAsmParser.a lib/libLLVMMipsDesc.a > >>>>> lib/libLLVMMipsDisassembler.a lib/libLLVMMipsInfo.a > >>>>> lib/libLLVMMSP430CodeGen.a lib/libLLVMMSP430AsmParser.a > >>>>> lib/libLLVMMSP430Desc.a lib/libLLVMMSP430Disassembler.a > >>>>> lib/libLLVMMSP430Info.a lib/libLLVMNVPTXCodeGen.a > lib/libLLVMNVPTXDesc.a > >>>>> lib/libLLVMNVPTXInfo.a lib/libLLVMPowerPCCodeGen.a > >>>>> lib/libLLVMPowerPCAsmParser.a lib/libLLVMPowerPCDesc.a > >>>>> lib/libLLVMPowerPCDisassembler.a lib/libLLVMPowerPCInfo.a > >>>>> lib/libLLVMRISCVCodeGen.a lib/libLLVMRISCVAsmParser.a > >>>>> lib/libLLVMRISCVDesc.a lib/libLLVMRISCVDisassembler.a > >>>>> lib/libLLVMRISCVInfo.a lib/libLLVMRISCVUtils.a > lib/libLLVMSparcCodeGen.a > >>>>> lib/libLLVMSparcAsmParser.a lib/libLLVMSparcDesc.a > >>>>> lib/libLLVMSparcDisassembler.a lib/libLLVMSparcInfo.a > >>>>> lib/libLLVMSystemZCodeGen.a lib/libLLVMSystemZAsmParser.a > >>>>> lib/libLLVMSystemZDisassembler.a lib/libLLVMSystemZDesc.a > >>>>> lib/libLLVMSystemZInfo.a lib/libLLVMWebAssemblyCodeGen.a > >>>>> lib/libLLVMWebAssemblyAsmParser.a > lib/libLLVMWebAssemblyDisassembler.a > >>>>> lib/libLLVMWebAssemblyDesc.a lib/libLLVMWebAssemblyInfo.a > >>>>> lib/libLLVMX86CodeGen.a lib/libLLVMCFGuard.a > lib/libLLVMGlobalISel.a > >>>>> lib/libLLVMX86AsmParser.a lib/libLLVMX86Desc.a > >>>>> lib/libLLVMX86Disassembler.a lib/libLLVMX86Info.a > lib/libLLVMX86Utils.a > >>>>> lib/libLLVMXCoreCodeGen.a lib/libLLVMAsmPrinter.a > >>>>> lib/libLLVMDebugInfoDWARF.a lib/libLLVMSelectionDAG.a > >>>>> lib/libLLVMXCoreDesc.a lib/libLLVMXCoreDisassembler.a > >>>>> lib/libLLVMMCDisassembler.a lib/libLLVMXCoreInfo.a > lib/libLLVMLTO.a > >>>>> lib/libLLVMObjCARCOpts.a lib/libLLVMPasses.a lib/libLLVMCodeGen.a > >>>>> lib/libLLVMTarget.a lib/libLLVMCoroutines.a lib/libLLVMipo.a > >>>>> lib/libLLVMBitWriter.a lib/libLLVMScalarOpts.a > lib/libLLVMVectorize.a > >>>>> lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a > >>>>> lib/libLLVMLinker.a lib/libLLVMFrontendOpenMP.a > lib/libLLVMIRReader.a > >>>>> lib/libLLVMAsmParser.a lib/libLLVMInstrumentation.a > >>>>> lib/libLLVMTransformUtils.a lib/libLLVMAnalysis.a > lib/libLLVMObject.a > >>>>> lib/libLLVMBitReader.a lib/libLLVMMCParser.a lib/libLLVMMC.a > >>>>> lib/libLLVMDebugInfoCodeView.a lib/libLLVMDebugInfoMSF.a > >>>>> lib/libLLVMTextAPI.a lib/libLLVMProfileData.a lib/libLLVMCore.a > >>>>> lib/libLLVMBinaryFormat.a lib/libLLVMRemarks.a > >>>>> lib/libLLVMBitstreamReader.a lib/libLLVMSupport.a -lz -lrt -ldl > >>>>> -ltinfo -lpthread -lm lib/libLLVMDemangle.a && cd > >>>>> /tmp/build/202003290405/tools/lld/tools/lld && > >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E > >>>>> create_symlink lld /tmp/build/202003290405/./bin/lld-link && cd > >>>>> /tmp/build/202003290405/tools/lld/tools/lld && > >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E > >>>>> create_symlink lld /tmp/build/202003290405/./bin/ld.lld && cd > >>>>> /tmp/build/202003290405/tools/lld/tools/lld && > >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E > >>>>> create_symlink lld /tmp/build/202003290405/./bin/ld64.lld && cd > >>>>> /tmp/build/202003290405/tools/lld/tools/lld && > >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E > >>>>> create_symlink lld /tmp/build/202003290405/./bin/wasm-ld > >>>>> terminating with uncaught exception of type std::__1::system_error: > >>>>> thread constructor failed: Resource temporarily unavailable > >>>>> PLEASE submit a bug report to https://bugs.llvm.org/ and include the > >>>>> crash backtrace. > >>>>> #0 0x00000000007924f4 PrintStackTraceSignalHandler(void*) > >>>>> (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x7924f4) > >>>>> #1 0x00000000007902ce llvm::sys::RunSignalHandlers() > >>>>> (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x7902ce) > >>>>> #2 0x0000000000792bd5 SignalHandler(int) > >>>>> (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x792bd5) > >>>>> #3 0x00007fddd54bb630 __restore_rt (/lib64/libpthread.so.0+0xf630) > >>>>> #4 0x00007fddd3b40377 raise > >>>>> > /usr/src/debug/glibc-2.17-c758a686/signal/../nptl/sysdeps/unix/sysv/linux/raise.c:55:0 > >>>>> #5 0x00007fddd3b41a68 abort > >>>>> /usr/src/debug/glibc-2.17-c758a686/stdlib/abort.c:92:0 > >>>>> #6 0x00007fddd411ae8b > >>>>> > (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2be8b) > >>>>> #7 0x00007fddd40fdb9f demangling_terminate_handler() > >>>>> > (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0xeb9f) > >>>>> #8 0x00007fddd411a0a3 std::__terminate(void (*)()) > >>>>> > (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2b0a3) > >>>>> #9 0x00007fddd411ce06 > >>>>> > (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2de06) > >>>>> #10 0x00007fddd411cd9f > >>>>> > (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2dd9f) > >>>>> #11 0x00007fddd43bded4 std::__1::__throw_system_error(int, char > const*) > >>>>> > (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++.so.1+0x90ed4) > >>>>> #12 0x0000000002a7a316 void* > >>>>> > std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, > >>>>> std::__1::default_delete<std::__1::__thread_struct> >, > >>>>> llvm::parallel::detail::(anonymous > >>>>> > namespace)::ThreadPoolExecutor::ThreadPoolExecutor(llvm::ThreadPoolStrategy)::'lambda'()> > >>>>> >(void*) (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x2a7a316) > >>>>> #13 0x00007fddd54b3ea5 start_thread > >>>>> /usr/src/debug/glibc-2.17-c758a686/nptl/pthread_create.c:307:0 > >>>>> #14 0x00007fddd3c088cd clone > >>>>> > /usr/src/debug////////glibc-2.17-c758a686/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:113:0 > >>>>> clang-11: error: unable to execute command: Aborted > >>>>> clang-11: error: linker command failed due to signal (use -v to see > >>>>> invocation) > >>>>> > >>>>> > >>>>> > >>>>> On Sun, Mar 29, 2020 at 1:44 AM Nemanja Ivanovic < > >>>>> nemanja.i.ibm at gmail.com> wrote: > >>>>> > >>>>> The discussion in https://reviews.llvm.org/D76240 > >>>>> > >>>>> may be of interest to the participants of this thread. Specifically, > >>>>> Fangrui's planned work on a command line option to limit threads for > LLD. > >>>>> Until that becomes a reality, you might want to use the CMake > variable > >>>>> -DLLVM_ENABLE_THREADS=OFF when building the LLD that you are using to > >>>>> prevent parallelism. > >>>>> > >>>>> > >>>>> > >>>>> On Sat, Mar 28, 2020 at 12:32 PM Alexandre Ganea via llvm-dev < > >>>>> llvm-dev at lists.llvm.org> wrote: > >>>>> > >>>>> Alex : > >>>>> > >>>>> Can you please try `numactl` or `taskset` after > >>>>> > https://github.com/llvm/llvm-project/commit/09158252f777c2e2f06a86b154c44abcbcf9bb74 > >>>>> ? > >>>>> > >>>>> > >>>>> > >>>>> There was a tiny bug in how *sched_getaffinity*() was used, see: > >>>>> https://reviews.llvm.org/D75153#1942336 > >>>>> > >>>>> > >>>>> > >>>>> *De :* Alex Brachet-Mialot <alexbrachetmialot at gmail.com> > >>>>> *Envoyé :* March 28, 2020 12:11 PM > >>>>> *À :* Itaru Kitayama <itaru.kitayama at gmail.com> > >>>>> *Cc :* LLVM Dev <llvm-dev at lists.llvm.org>; Alexandre Ganea < > >>>>> alexandre.ganea at ubisoft.com>; Fāng-ruì Sòng <maskray at google.com> > >>>>> *Objet :* Re: [llvm-dev] LLD issue on a massively parallel build > >>>>> machine > >>>>> > >>>>> > >>>>> > >>>>> I also run into problems with lld on machines with lots of cores > (208), > >>>>> but I run into rlimits for number of processes I can create, > something > >>>>> outside of my control. > >>>>> > >>>>> > >>>>> > >>>>> Unfortunately things like numactl or taskset do not limit the > >>>>> concurrency of lld currently. > >>>>> > >>>>> > >>>>> > >>>>> On Sat, Mar 28, 2020 at 4:10 AM Itaru Kitayama via llvm-dev < > >>>>> llvm-dev at lists.llvm.org> wrote: > >>>>> > >>>>> Hi, > >>>>> > >>>>> On a 1296-core Intel machine with 376 GB, setting > >>>>> > >>>>> > >>>>> > >>>>> -DLLVM_PARALLEL_LINK_JOB=1 > >>>>> > >>>>> > >>>>> > >>>>> does not help (switching back to ld scales) see: > >>>>> > >>>>> > >>>>> > >>>>> [5085/5201] Linking CXX executable bin/clang-11 > >>>>> FAILED: bin/clang-11 > >>>>> : && /home/usr4/c74014i/opt/clang/current/bin/clang++ -stdlib=libc++ > >>>>> -fPIC -fvisibility-inlines-hidden -Werror=date-time > >>>>> -Werror=unguarded-availability-new -Wall -Wextra > -Wno-unused-parameter > >>>>> -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic > >>>>> -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default > >>>>> -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor > >>>>> -Wstring-conversion -fdiagnostics-color -ffunction-sections > -fdata-sections > >>>>> -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O3 -DNDEBUG > >>>>> -stdlib=libc++ -fuse-ld=lld -Wl,--color-diagnostics > >>>>> -Wl,-allow-shlib-undefined -Wl,--export-dynamic -Wl,-O3 > >>>>> tools/clang/tools/driver/CMakeFiles/clang.dir/driver.cpp.o > >>>>> tools/clang/tools/driver/CMakeFiles/clang.dir/cc1_main.cpp.o > >>>>> tools/clang/tools/driver/CMakeFiles/clang.dir/cc1as_main.cpp.o > >>>>> > tools/clang/tools/driver/CMakeFiles/clang.dir/cc1gen_reproducer_main.cpp.o > >>>>> -o bin/clang-11 -Wl,-rpath,"\$ORIGIN/../lib" > lib/libLLVMAArch64CodeGen.a > >>>>> lib/libLLVMAArch64AsmParser.a lib/libLLVMAArch64Desc.a > >>>>> lib/libLLVMAArch64Disassembler.a lib/libLLVMAArch64Info.a > >>>>> lib/libLLVMAArch64Utils.a lib/libLLVMAMDGPUCodeGen.a > >>>>> lib/libLLVMAMDGPUAsmParser.a lib/libLLVMAMDGPUDesc.a > >>>>> lib/libLLVMAMDGPUDisassembler.a lib/libLLVMAMDGPUInfo.a > >>>>> lib/libLLVMAMDGPUUtils.a lib/libLLVMARMCodeGen.a > >>>>> lib/libLLVMARMAsmParser.a lib/libLLVMARMDesc.a > >>>>> lib/libLLVMARMDisassembler.a lib/libLLVMARMInfo.a > lib/libLLVMARMUtils.a > >>>>> lib/libLLVMAVRCodeGen.a lib/libLLVMAVRAsmParser.a > lib/libLLVMAVRDesc.a > >>>>> lib/libLLVMAVRDisassembler.a lib/libLLVMAVRInfo.a > >>>>> lib/libLLVMBPFCodeGen.a lib/libLLVMBPFAsmParser.a > lib/libLLVMBPFDesc.a > >>>>> lib/libLLVMBPFDisassembler.a lib/libLLVMBPFInfo.a > >>>>> lib/libLLVMHexagonCodeGen.a lib/libLLVMHexagonAsmParser.a > >>>>> lib/libLLVMHexagonDesc.a lib/libLLVMHexagonDisassembler.a > >>>>> lib/libLLVMHexagonInfo.a lib/libLLVMLanaiCodeGen.a > >>>>> lib/libLLVMLanaiAsmParser.a lib/libLLVMLanaiDesc.a > >>>>> lib/libLLVMLanaiDisassembler.a lib/libLLVMLanaiInfo.a > >>>>> lib/libLLVMMipsCodeGen.a lib/libLLVMMipsAsmParser.a > >>>>> lib/libLLVMMipsDesc.a lib/libLLVMMipsDisassembler.a > >>>>> lib/libLLVMMipsInfo.a lib/libLLVMMSP430CodeGen.a > >>>>> lib/libLLVMMSP430AsmParser.a lib/libLLVMMSP430Desc.a > >>>>> lib/libLLVMMSP430Disassembler.a lib/libLLVMMSP430Info.a > >>>>> lib/libLLVMNVPTXCodeGen.a lib/libLLVMNVPTXDesc.a > lib/libLLVMNVPTXInfo.a > >>>>> lib/libLLVMPowerPCCodeGen.a lib/libLLVMPowerPCAsmParser.a > >>>>> lib/libLLVMPowerPCDesc.a lib/libLLVMPowerPCDisassembler.a > >>>>> lib/libLLVMPowerPCInfo.a lib/libLLVMRISCVCodeGen.a > >>>>> lib/libLLVMRISCVAsmParser.a lib/libLLVMRISCVDesc.a > >>>>> lib/libLLVMRISCVDisassembler.a lib/libLLVMRISCVInfo.a > >>>>> lib/libLLVMRISCVUtils.a lib/libLLVMSparcCodeGen.a > >>>>> lib/libLLVMSparcAsmParser.a lib/libLLVMSparcDesc.a > >>>>> lib/libLLVMSparcDisassembler.a lib/libLLVMSparcInfo.a > >>>>> lib/libLLVMSystemZCodeGen.a lib/libLLVMSystemZAsmParser.a > >>>>> lib/libLLVMSystemZDesc.a lib/libLLVMSystemZDisassembler.a > >>>>> lib/libLLVMSystemZInfo.a lib/libLLVMWebAssemblyCodeGen.a > >>>>> lib/libLLVMWebAssemblyAsmParser.a lib/libLLVMWebAssemblyDesc.a > >>>>> lib/libLLVMWebAssemblyDisassembler.a lib/libLLVMWebAssemblyInfo.a > >>>>> lib/libLLVMX86CodeGen.a lib/libLLVMX86AsmParser.a > lib/libLLVMX86Desc.a > >>>>> lib/libLLVMX86Disassembler.a lib/libLLVMX86Info.a > lib/libLLVMX86Utils.a > >>>>> lib/libLLVMXCoreCodeGen.a lib/libLLVMXCoreDesc.a > >>>>> lib/libLLVMXCoreDisassembler.a lib/libLLVMXCoreInfo.a > >>>>> lib/libLLVMAnalysis.a lib/libLLVMCodeGen.a lib/libLLVMCore.a > >>>>> lib/libLLVMipo.a lib/libLLVMAggressiveInstCombine.a > >>>>> lib/libLLVMInstCombine.a lib/libLLVMInstrumentation.a > lib/libLLVMMC.a > >>>>> lib/libLLVMMCParser.a lib/libLLVMObjCARCOpts.a lib/libLLVMOption.a > >>>>> lib/libLLVMScalarOpts.a lib/libLLVMSupport.a > lib/libLLVMTransformUtils.a > >>>>> lib/libLLVMVectorize.a -lpthread lib/libclangBasic.a > >>>>> lib/libclangCodeGen.a lib/libclangDriver.a lib/libclangFrontend.a > >>>>> lib/libclangFrontendTool.a lib/libclangSerialization.a > >>>>> lib/libLLVMAArch64Desc.a lib/libLLVMAArch64Info.a > >>>>> lib/libLLVMAArch64Utils.a lib/libLLVMMIRParser.a > lib/libLLVMAMDGPUDesc.a > >>>>> lib/libLLVMAMDGPUInfo.a lib/libLLVMAMDGPUUtils.a > lib/libLLVMARMDesc.a > >>>>> lib/libLLVMARMInfo.a lib/libLLVMARMUtils.a > lib/libLLVMHexagonDesc.a > >>>>> lib/libLLVMHexagonInfo.a lib/libLLVMLanaiDesc.a > lib/libLLVMLanaiInfo.a > >>>>> lib/libLLVMSystemZDesc.a lib/libLLVMSystemZInfo.a > >>>>> lib/libLLVMWebAssemblyDesc.a lib/libLLVMWebAssemblyInfo.a > >>>>> lib/libLLVMCFGuard.a lib/libLLVMGlobalISel.a > lib/libLLVMAsmPrinter.a > >>>>> lib/libLLVMDebugInfoDWARF.a lib/libLLVMSelectionDAG.a > >>>>> lib/libLLVMMCDisassembler.a lib/libclangCodeGen.a > lib/libLLVMCoverage.a > >>>>> lib/libLLVMLTO.a lib/libLLVMObjCARCOpts.a lib/libLLVMPasses.a > >>>>> lib/libLLVMCodeGen.a lib/libLLVMTarget.a lib/libLLVMCoroutines.a > >>>>> lib/libLLVMipo.a lib/libLLVMInstrumentation.a > lib/libLLVMVectorize.a > >>>>> lib/libLLVMBitWriter.a lib/libLLVMIRReader.a > lib/libLLVMAsmParser.a > >>>>> lib/libLLVMLinker.a lib/libLLVMScalarOpts.a > >>>>> lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a > >>>>> lib/libclangRewriteFrontend.a lib/libclangARCMigrate.a > >>>>> lib/libclangStaticAnalyzerFrontend.a > lib/libclangStaticAnalyzerCheckers.a > >>>>> lib/libclangStaticAnalyzerCore.a lib/libclangCrossTU.a > >>>>> lib/libclangIndex.a lib/libclangFrontend.a lib/libclangDriver.a > >>>>> lib/libLLVMOption.a lib/libclangParse.a > lib/libclangSerialization.a > >>>>> lib/libclangSema.a lib/libclangAnalysis.a > lib/libclangASTMatchers.a > >>>>> lib/libclangEdit.a lib/libclangFormat.a > lib/libclangToolingInclusions.a > >>>>> lib/libclangToolingCore.a lib/libclangAST.a > lib/libLLVMFrontendOpenMP.a > >>>>> lib/libLLVMTransformUtils.a lib/libLLVMAnalysis.a > >>>>> lib/libLLVMProfileData.a lib/libLLVMObject.a lib/libLLVMMCParser.a > >>>>> lib/libLLVMBitReader.a lib/libLLVMTextAPI.a lib/libclangRewrite.a > >>>>> lib/libclangLex.a lib/libclangBasic.a lib/libLLVMCore.a > >>>>> lib/libLLVMRemarks.a lib/libLLVMBitstreamReader.a lib/libLLVMMC.a > >>>>> lib/libLLVMBinaryFormat.a lib/libLLVMDebugInfoCodeView.a > >>>>> lib/libLLVMDebugInfoMSF.a lib/libLLVMSupport.a -lz -lrt -ldl > -ltinfo > >>>>> -lpthread -lm lib/libLLVMDemangle.a && : > >>>>> ld.lld: error: failed to open bin/clang-11: Cannot allocate memory > >>>>> > >>>>> _______________________________________________ > >>>>> LLVM Developers mailing list > >>>>> llvm-dev at lists.llvm.org > >>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >>>>> > >>>>> _______________________________________________ > >>>>> LLVM Developers mailing list > >>>>> llvm-dev at lists.llvm.org > >>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >>>>> > >>>>> > > >_______________________________________________ > >LLVM Developers mailing list > >llvm-dev at lists.llvm.org > >https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200402/6e5fb02a/attachment-0001.html>
Tom Stellard via llvm-dev
2020-Apr-01 21:10 UTC
[llvm-dev] LLD issue on a massively parallel build machine
On 04/01/2020 01:47 PM, Itaru Kitayama via llvm-dev wrote:> Thanks for the heads up the supercomputer > Is down for maintenance this week. > I’ll give it a try when it gets back. >This doesn't look to me like it's necessarily an lld issue. Trying to build all the sub-projects without limiting the number of ninja jobs is almost guaranteed to run out of memory on a machine like this with such a low memory:core ratio. -Tom> On Thu, Apr 2, 2020 at 1:49 Fangrui Song <maskray at google.com <mailto:maskray at google.com>> wrote: > > On 2020-03-29, Nemanja Ivanovic via llvm-dev wrote: > >Glad you got it working. > >My suggestion about LLVM_ENABLE_THREADS didn't work because you didn't > >apply it when building the build linker. > > > >When you don't have the ability to rebuild the build compiler, this doesn't > >apply. In those cases, I end up doing a dirty hack where I use a wrapper > >script with something like: > > > ><path-to-build-compiler> "$@" -Wl,--no-threads > > > >To invoke the build compiler. That way you still get full parallelism while > >compiling and linking, but you prevent LLD from using threads. > > > https://reviews.llvm.org/D76885 (committed yesterday) changed > --no-threads to --threads={1,2,...} (--no-threads is used rarely (GNU ld > does not support it) so I'd rather not keep the option for > compatibility). > > You may try -Wl,--threads=1 > > >On Sat., Mar. 28, 2020, 4:19 p.m. Itaru Kitayama, <itaru.kitayama at gmail.com <mailto:itaru.kitayama at gmail.com>> > >wrote: > > > >> Good news, I was able to use up to 37 cores for LLVM build with LLD. > >> The build speed, did not measure precisely though, is comparable to the > >> build with GNU ld case. > >> > >> Thank you all for your help! > >> > >> On Sun, Mar 29, 2020 at 5:04 AM Alex Brachet-Mialot < > >> alexbrachetmialot at gmail.com <mailto:alexbrachetmialot at gmail.com>> wrote: > >> > >>> Yes unfortunately that would limit you to 4 cores. > >>> > >>> There’s no easy way to use lld with —no-threads with our build system at > >>> the moment unfortunately. > >>> > >>> I also had just been using ld.gold, but will switch now that numactl > >>> works for me. > >>> > >>> On Sat, Mar 28, 2020 at 3:58 PM Itaru Kitayama <itaru.kitayama at gmail.com <mailto:itaru.kitayama at gmail.com>> > >>> wrote: > >>> > >>>> That is slowing down the build visibly, for the speed I should stick > >>>> with ld at the moment. > >>>> > >>>> > >>>> On Sun, Mar 29, 2020 at 4:42 AM Alexandre Ganea < > >>>> alexandre.ganea at ubisoft.com <mailto:alexandre.ganea at ubisoft.com>> wrote: > >>>> > >>>>> Would `taskset -c 0-3 ninja check-all -j4` work? > >>>>> > >>>>> > >>>>> > >>>>> *De :* Itaru Kitayama <itaru.kitayama at gmail.com <mailto:itaru.kitayama at gmail.com>> > >>>>> *Envoyé :* March 28, 2020 3:37 PM > >>>>> *À :* Alex Brachet-Mialot <alexbrachetmialot at gmail.com <mailto:alexbrachetmialot at gmail.com>> > >>>>> *Cc :* Alexandre Ganea <alexandre.ganea at ubisoft.com <mailto:alexandre.ganea at ubisoft.com>>; LLVM Dev < > >>>>> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>>; Nemanja Ivanovic <nemanja.i.ibm at gmail.com <mailto:nemanja.i.ibm at gmail.com>> > >>>>> *Objet :* Re: [llvm-dev] LLD issue on a massively parallel build > >>>>> machine > >>>>> > >>>>> > >>>>> > >>>>> $ free -g > >>>>> total used free shared buff/cache > >>>>> available > >>>>> Mem: 376 149 20 1 207 > >>>>> 225 > >>>>> Swap: 3 0 3 > >>>>> > >>>>> > >>>>> > >>>>> Too small swap size for a 72-core login machine? > >>>>> > >>>>> > >>>>> > >>>>> On Sun, Mar 29, 2020 at 4:28 AM Alex Brachet-Mialot < > >>>>> alexbrachetmialot at gmail.com <mailto:alexbrachetmialot at gmail.com>> wrote: > >>>>> > >>>>> Enable threads is for building llvm with or without thread support. To > >>>>> my knowledge it has no effect on the build system. > >>>>> > >>>>> > >>>>> > >>>>> Like was discussed above you could try limiting the number of > >>>>> processes created (assuming your lld was after that commit) with numactl or > >>>>> taskset. > >>>>> > >>>>> > >>>>> > >>>>> In your case though it looked like you were running out of memory. You > >>>>> could try increasing your swap space? > >>>>> > >>>>> > >>>>> > >>>>> Alex > >>>>> > >>>>> > >>>>> > >>>>> On Sat, Mar 28, 2020 at 3:15 PM Itaru Kitayama < > >>>>> itaru.kitayama at gmail.com <mailto:itaru.kitayama at gmail.com>> wrote: > >>>>> > >>>>> Hi, > >>>>> > >>>>> My configuration is below: > >>>>> > >>>>> cmake -GNinja -DLLVM_ENABLE_LLD=ON -DLLVM_ENABLE_THREADS=OFF > >>>>> -DLLVM_ENABLE_LIBCXX=ON -DCMAKE_BUILD_TYPE=Release > >>>>> -DGCC_INSTALL_PREFIX=/home/usr4/c74014i/opt/gcc-7.5.0/ > >>>>> -DLIBOMPTARGET_ENABLE_DEBUG=ON > >>>>> -DCMAKE_INSTALL_PREFIX=$HOME/opt/clang/${today} -DCMAKE_C_COMPILER=clang > >>>>> -DCMAKE_C_FLAGS="" -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CXX_FLAGS="" > >>>>> -DLLVM_ENABLE_PROJECTS="clang;openmp;lld;libcxx;libcxxabi;compiler-rt;libunwind" > >>>>> -DCLANG_OPENMP_NVPTX_DEFAULT_ARCH=sm_60 > >>>>> -DLIBOMPTARGET_NVPTX_COMPUTE_CAPABILITIES=60 -DLLVM_TARGETS_TO_BUILD="all" > >>>>> /tmp/llvm-project/llvm > >>>>> > >>>>> > >>>>> > >>>>> but did not help my case: > >>>>> > >>>>> > >>>>> > >>>>> [...] > >>>>> > >>>>> [4802/5201] Linking CXX executable bin/lld > >>>>> FAILED: bin/lld > >>>>> : && /home/usr4/c74014i/opt/clang/current/bin/clang++ -stdlib=libc++ > >>>>> -fPIC -fvisibility-inlines-hidden -Werror=date-time > >>>>> -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter > >>>>> -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic > >>>>> -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default > >>>>> -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor > >>>>> -Wstring-conversion -fdiagnostics-color -ffunction-sections -fdata-sections > >>>>> -O3 -DNDEBUG -stdlib=libc++ -fuse-ld=lld -Wl,--color-diagnostics > >>>>> -Wl,-allow-shlib-undefined -Wl,--export-dynamic -Wl,-O3 > >>>>> tools/lld/tools/lld/CMakeFiles/lld.dir/lld.cpp.o -o bin/lld > >>>>> -Wl,-rpath,"\$ORIGIN/../lib" lib/libLLVMSupport.a -lpthread > >>>>> lib/liblldCommon.a lib/liblldCOFF.a lib/liblldDriver.a lib/liblldELF.a > >>>>> lib/liblldMinGW.a lib/liblldWasm.a lib/liblldMachO.a > >>>>> lib/liblldReaderWriter.a lib/liblldYAML.a lib/liblldCore.a > >>>>> lib/liblldCOFF.a lib/libLLVMDebugInfoPDB.a lib/libLLVMLibDriver.a > >>>>> lib/libLLVMWindowsManifest.a /usr/lib64/libxml2.so lib/liblldCommon.a > >>>>> lib/libLLVMOption.a lib/libLLVMAArch64CodeGen.a > >>>>> lib/libLLVMAArch64AsmParser.a lib/libLLVMAArch64Disassembler.a > >>>>> lib/libLLVMAArch64Desc.a lib/libLLVMAArch64Info.a > >>>>> lib/libLLVMAArch64Utils.a lib/libLLVMAMDGPUCodeGen.a > >>>>> lib/libLLVMMIRParser.a lib/libLLVMAMDGPUAsmParser.a > >>>>> lib/libLLVMAMDGPUDisassembler.a lib/libLLVMAMDGPUDesc.a > >>>>> lib/libLLVMAMDGPUInfo.a lib/libLLVMAMDGPUUtils.a lib/libLLVMARMCodeGen.a > >>>>> lib/libLLVMARMAsmParser.a lib/libLLVMARMDisassembler.a > >>>>> lib/libLLVMARMDesc.a lib/libLLVMARMInfo.a lib/libLLVMARMUtils.a > >>>>> lib/libLLVMAVRCodeGen.a lib/libLLVMAVRAsmParser.a lib/libLLVMAVRDesc.a > >>>>> lib/libLLVMAVRDisassembler.a lib/libLLVMAVRInfo.a > >>>>> lib/libLLVMBPFCodeGen.a lib/libLLVMBPFAsmParser.a lib/libLLVMBPFDesc.a > >>>>> lib/libLLVMBPFDisassembler.a lib/libLLVMBPFInfo.a > >>>>> lib/libLLVMHexagonCodeGen.a lib/libLLVMHexagonAsmParser.a > >>>>> lib/libLLVMHexagonDisassembler.a lib/libLLVMHexagonDesc.a > >>>>> lib/libLLVMHexagonInfo.a lib/libLLVMLanaiCodeGen.a > >>>>> lib/libLLVMLanaiAsmParser.a lib/libLLVMLanaiDisassembler.a > >>>>> lib/libLLVMLanaiDesc.a lib/libLLVMLanaiInfo.a lib/libLLVMMipsCodeGen.a > >>>>> lib/libLLVMMipsAsmParser.a lib/libLLVMMipsDesc.a > >>>>> lib/libLLVMMipsDisassembler.a lib/libLLVMMipsInfo.a > >>>>> lib/libLLVMMSP430CodeGen.a lib/libLLVMMSP430AsmParser.a > >>>>> lib/libLLVMMSP430Desc.a lib/libLLVMMSP430Disassembler.a > >>>>> lib/libLLVMMSP430Info.a lib/libLLVMNVPTXCodeGen.a lib/libLLVMNVPTXDesc.a > >>>>> lib/libLLVMNVPTXInfo.a lib/libLLVMPowerPCCodeGen.a > >>>>> lib/libLLVMPowerPCAsmParser.a lib/libLLVMPowerPCDesc.a > >>>>> lib/libLLVMPowerPCDisassembler.a lib/libLLVMPowerPCInfo.a > >>>>> lib/libLLVMRISCVCodeGen.a lib/libLLVMRISCVAsmParser.a > >>>>> lib/libLLVMRISCVDesc.a lib/libLLVMRISCVDisassembler.a > >>>>> lib/libLLVMRISCVInfo.a lib/libLLVMRISCVUtils.a lib/libLLVMSparcCodeGen.a > >>>>> lib/libLLVMSparcAsmParser.a lib/libLLVMSparcDesc.a > >>>>> lib/libLLVMSparcDisassembler.a lib/libLLVMSparcInfo.a > >>>>> lib/libLLVMSystemZCodeGen.a lib/libLLVMSystemZAsmParser.a > >>>>> lib/libLLVMSystemZDisassembler.a lib/libLLVMSystemZDesc.a > >>>>> lib/libLLVMSystemZInfo.a lib/libLLVMWebAssemblyCodeGen.a > >>>>> lib/libLLVMWebAssemblyAsmParser.a lib/libLLVMWebAssemblyDisassembler.a > >>>>> lib/libLLVMWebAssemblyDesc.a lib/libLLVMWebAssemblyInfo.a > >>>>> lib/libLLVMX86CodeGen.a lib/libLLVMCFGuard.a lib/libLLVMGlobalISel.a > >>>>> lib/libLLVMX86AsmParser.a lib/libLLVMX86Desc.a > >>>>> lib/libLLVMX86Disassembler.a lib/libLLVMX86Info.a lib/libLLVMX86Utils.a > >>>>> lib/libLLVMXCoreCodeGen.a lib/libLLVMAsmPrinter.a > >>>>> lib/libLLVMDebugInfoDWARF.a lib/libLLVMSelectionDAG.a > >>>>> lib/libLLVMXCoreDesc.a lib/libLLVMXCoreDisassembler.a > >>>>> lib/libLLVMMCDisassembler.a lib/libLLVMXCoreInfo.a lib/libLLVMLTO.a > >>>>> lib/libLLVMObjCARCOpts.a lib/libLLVMPasses.a lib/libLLVMCodeGen.a > >>>>> lib/libLLVMTarget.a lib/libLLVMCoroutines.a lib/libLLVMipo.a > >>>>> lib/libLLVMBitWriter.a lib/libLLVMScalarOpts.a lib/libLLVMVectorize.a > >>>>> lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a > >>>>> lib/libLLVMLinker.a lib/libLLVMFrontendOpenMP.a lib/libLLVMIRReader.a > >>>>> lib/libLLVMAsmParser.a lib/libLLVMInstrumentation.a > >>>>> lib/libLLVMTransformUtils.a lib/libLLVMAnalysis.a lib/libLLVMObject.a > >>>>> lib/libLLVMBitReader.a lib/libLLVMMCParser.a lib/libLLVMMC.a > >>>>> lib/libLLVMDebugInfoCodeView.a lib/libLLVMDebugInfoMSF.a > >>>>> lib/libLLVMTextAPI.a lib/libLLVMProfileData.a lib/libLLVMCore.a > >>>>> lib/libLLVMBinaryFormat.a lib/libLLVMRemarks.a > >>>>> lib/libLLVMBitstreamReader.a lib/libLLVMSupport.a -lz -lrt -ldl > >>>>> -ltinfo -lpthread -lm lib/libLLVMDemangle.a && cd > >>>>> /tmp/build/202003290405/tools/lld/tools/lld && > >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E > >>>>> create_symlink lld /tmp/build/202003290405/./bin/lld-link && cd > >>>>> /tmp/build/202003290405/tools/lld/tools/lld && > >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E > >>>>> create_symlink lld /tmp/build/202003290405/./bin/ld.lld && cd > >>>>> /tmp/build/202003290405/tools/lld/tools/lld && > >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E > >>>>> create_symlink lld /tmp/build/202003290405/./bin/ld64.lld && cd > >>>>> /tmp/build/202003290405/tools/lld/tools/lld && > >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E > >>>>> create_symlink lld /tmp/build/202003290405/./bin/wasm-ld > >>>>> terminating with uncaught exception of type std::__1::system_error: > >>>>> thread constructor failed: Resource temporarily unavailable > >>>>> PLEASE submit a bug report to https://bugs.llvm.org/ and include the > >>>>> crash backtrace. > >>>>> #0 0x00000000007924f4 PrintStackTraceSignalHandler(void*) > >>>>> (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x7924f4) > >>>>> #1 0x00000000007902ce llvm::sys::RunSignalHandlers() > >>>>> (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x7902ce) > >>>>> #2 0x0000000000792bd5 SignalHandler(int) > >>>>> (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x792bd5) > >>>>> #3 0x00007fddd54bb630 __restore_rt (/lib64/libpthread.so.0+0xf630) > >>>>> #4 0x00007fddd3b40377 raise > >>>>> /usr/src/debug/glibc-2.17-c758a686/signal/../nptl/sysdeps/unix/sysv/linux/raise.c:55:0 > >>>>> #5 0x00007fddd3b41a68 abort > >>>>> /usr/src/debug/glibc-2.17-c758a686/stdlib/abort.c:92:0 > >>>>> #6 0x00007fddd411ae8b > >>>>> (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2be8b) > >>>>> #7 0x00007fddd40fdb9f demangling_terminate_handler() > >>>>> (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0xeb9f) > >>>>> #8 0x00007fddd411a0a3 std::__terminate(void (*)()) > >>>>> (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2b0a3) > >>>>> #9 0x00007fddd411ce06 > >>>>> (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2de06) > >>>>> #10 0x00007fddd411cd9f > >>>>> (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2dd9f) > >>>>> #11 0x00007fddd43bded4 std::__1::__throw_system_error(int, char const*) > >>>>> (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++.so.1+0x90ed4) > >>>>> #12 0x0000000002a7a316 void* > >>>>> std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, > >>>>> std::__1::default_delete<std::__1::__thread_struct> >, > >>>>> llvm::parallel::detail::(anonymous > >>>>> namespace)::ThreadPoolExecutor::ThreadPoolExecutor(llvm::ThreadPoolStrategy)::'lambda'()> > >>>>> >(void*) (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x2a7a316) > >>>>> #13 0x00007fddd54b3ea5 start_thread > >>>>> /usr/src/debug/glibc-2.17-c758a686/nptl/pthread_create.c:307:0 > >>>>> #14 0x00007fddd3c088cd clone > >>>>> /usr/src/debug////////glibc-2.17-c758a686/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:113:0 > >>>>> clang-11: error: unable to execute command: Aborted > >>>>> clang-11: error: linker command failed due to signal (use -v to see > >>>>> invocation) > >>>>> > >>>>> > >>>>> > >>>>> On Sun, Mar 29, 2020 at 1:44 AM Nemanja Ivanovic < > >>>>> nemanja.i.ibm at gmail.com <mailto:nemanja.i.ibm at gmail.com>> wrote: > >>>>> > >>>>> The discussion in https://reviews.llvm.org/D76240 > >>>>> > >>>>> may be of interest to the participants of this thread. Specifically, > >>>>> Fangrui's planned work on a command line option to limit threads for LLD. > >>>>> Until that becomes a reality, you might want to use the CMake variable > >>>>> -DLLVM_ENABLE_THREADS=OFF when building the LLD that you are using to > >>>>> prevent parallelism. > >>>>> > >>>>> > >>>>> > >>>>> On Sat, Mar 28, 2020 at 12:32 PM Alexandre Ganea via llvm-dev < > >>>>> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote: > >>>>> > >>>>> Alex : > >>>>> > >>>>> Can you please try `numactl` or `taskset` after > >>>>> https://github.com/llvm/llvm-project/commit/09158252f777c2e2f06a86b154c44abcbcf9bb74 > >>>>> ? > >>>>> > >>>>> > >>>>> > >>>>> There was a tiny bug in how *sched_getaffinity*() was used, see: > >>>>> https://reviews.llvm.org/D75153#1942336 > >>>>> > >>>>> > >>>>> > >>>>> *De :* Alex Brachet-Mialot <alexbrachetmialot at gmail.com <mailto:alexbrachetmialot at gmail.com>> > >>>>> *Envoyé :* March 28, 2020 12:11 PM > >>>>> *À :* Itaru Kitayama <itaru.kitayama at gmail.com <mailto:itaru.kitayama at gmail.com>> > >>>>> *Cc :* LLVM Dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>>; Alexandre Ganea < > >>>>> alexandre.ganea at ubisoft.com <mailto:alexandre.ganea at ubisoft.com>>; Fāng-ruì Sòng <maskray at google.com <mailto:maskray at google.com>> > >>>>> *Objet :* Re: [llvm-dev] LLD issue on a massively parallel build > >>>>> machine > >>>>> > >>>>> > >>>>> > >>>>> I also run into problems with lld on machines with lots of cores (208), > >>>>> but I run into rlimits for number of processes I can create, something > >>>>> outside of my control. > >>>>> > >>>>> > >>>>> > >>>>> Unfortunately things like numactl or taskset do not limit the > >>>>> concurrency of lld currently. > >>>>> > >>>>> > >>>>> > >>>>> On Sat, Mar 28, 2020 at 4:10 AM Itaru Kitayama via llvm-dev < > >>>>> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote: > >>>>> > >>>>> Hi, > >>>>> > >>>>> On a 1296-core Intel machine with 376 GB, setting > >>>>> > >>>>> > >>>>> > >>>>> -DLLVM_PARALLEL_LINK_JOB=1 > >>>>> > >>>>> > >>>>> > >>>>> does not help (switching back to ld scales) see: > >>>>> > >>>>> > >>>>> > >>>>> [5085/5201] Linking CXX executable bin/clang-11 > >>>>> FAILED: bin/clang-11 > >>>>> : && /home/usr4/c74014i/opt/clang/current/bin/clang++ -stdlib=libc++ > >>>>> -fPIC -fvisibility-inlines-hidden -Werror=date-time > >>>>> -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter > >>>>> -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic > >>>>> -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default > >>>>> -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor > >>>>> -Wstring-conversion -fdiagnostics-color -ffunction-sections -fdata-sections > >>>>> -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O3 -DNDEBUG > >>>>> -stdlib=libc++ -fuse-ld=lld -Wl,--color-diagnostics > >>>>> -Wl,-allow-shlib-undefined -Wl,--export-dynamic -Wl,-O3 > >>>>> tools/clang/tools/driver/CMakeFiles/clang.dir/driver.cpp.o > >>>>> tools/clang/tools/driver/CMakeFiles/clang.dir/cc1_main.cpp.o > >>>>> tools/clang/tools/driver/CMakeFiles/clang.dir/cc1as_main.cpp.o > >>>>> tools/clang/tools/driver/CMakeFiles/clang.dir/cc1gen_reproducer_main.cpp.o > >>>>> -o bin/clang-11 -Wl,-rpath,"\$ORIGIN/../lib" lib/libLLVMAArch64CodeGen.a > >>>>> lib/libLLVMAArch64AsmParser.a lib/libLLVMAArch64Desc.a > >>>>> lib/libLLVMAArch64Disassembler.a lib/libLLVMAArch64Info.a > >>>>> lib/libLLVMAArch64Utils.a lib/libLLVMAMDGPUCodeGen.a > >>>>> lib/libLLVMAMDGPUAsmParser.a lib/libLLVMAMDGPUDesc.a > >>>>> lib/libLLVMAMDGPUDisassembler.a lib/libLLVMAMDGPUInfo.a > >>>>> lib/libLLVMAMDGPUUtils.a lib/libLLVMARMCodeGen.a > >>>>> lib/libLLVMARMAsmParser.a lib/libLLVMARMDesc.a > >>>>> lib/libLLVMARMDisassembler.a lib/libLLVMARMInfo.a lib/libLLVMARMUtils.a > >>>>> lib/libLLVMAVRCodeGen.a lib/libLLVMAVRAsmParser.a lib/libLLVMAVRDesc.a > >>>>> lib/libLLVMAVRDisassembler.a lib/libLLVMAVRInfo.a > >>>>> lib/libLLVMBPFCodeGen.a lib/libLLVMBPFAsmParser.a lib/libLLVMBPFDesc.a > >>>>> lib/libLLVMBPFDisassembler.a lib/libLLVMBPFInfo.a > >>>>> lib/libLLVMHexagonCodeGen.a lib/libLLVMHexagonAsmParser.a > >>>>> lib/libLLVMHexagonDesc.a lib/libLLVMHexagonDisassembler.a > >>>>> lib/libLLVMHexagonInfo.a lib/libLLVMLanaiCodeGen.a > >>>>> lib/libLLVMLanaiAsmParser.a lib/libLLVMLanaiDesc.a > >>>>> lib/libLLVMLanaiDisassembler.a lib/libLLVMLanaiInfo.a > >>>>> lib/libLLVMMipsCodeGen.a lib/libLLVMMipsAsmParser.a > >>>>> lib/libLLVMMipsDesc.a lib/libLLVMMipsDisassembler.a > >>>>> lib/libLLVMMipsInfo.a lib/libLLVMMSP430CodeGen.a > >>>>> lib/libLLVMMSP430AsmParser.a lib/libLLVMMSP430Desc.a > >>>>> lib/libLLVMMSP430Disassembler.a lib/libLLVMMSP430Info.a > >>>>> lib/libLLVMNVPTXCodeGen.a lib/libLLVMNVPTXDesc.a lib/libLLVMNVPTXInfo.a > >>>>> lib/libLLVMPowerPCCodeGen.a lib/libLLVMPowerPCAsmParser.a > >>>>> lib/libLLVMPowerPCDesc.a lib/libLLVMPowerPCDisassembler.a > >>>>> lib/libLLVMPowerPCInfo.a lib/libLLVMRISCVCodeGen.a > >>>>> lib/libLLVMRISCVAsmParser.a lib/libLLVMRISCVDesc.a > >>>>> lib/libLLVMRISCVDisassembler.a lib/libLLVMRISCVInfo.a > >>>>> lib/libLLVMRISCVUtils.a lib/libLLVMSparcCodeGen.a > >>>>> lib/libLLVMSparcAsmParser.a lib/libLLVMSparcDesc.a > >>>>> lib/libLLVMSparcDisassembler.a lib/libLLVMSparcInfo.a > >>>>> lib/libLLVMSystemZCodeGen.a lib/libLLVMSystemZAsmParser.a > >>>>> lib/libLLVMSystemZDesc.a lib/libLLVMSystemZDisassembler.a > >>>>> lib/libLLVMSystemZInfo.a lib/libLLVMWebAssemblyCodeGen.a > >>>>> lib/libLLVMWebAssemblyAsmParser.a lib/libLLVMWebAssemblyDesc.a > >>>>> lib/libLLVMWebAssemblyDisassembler.a lib/libLLVMWebAssemblyInfo.a > >>>>> lib/libLLVMX86CodeGen.a lib/libLLVMX86AsmParser.a lib/libLLVMX86Desc.a > >>>>> lib/libLLVMX86Disassembler.a lib/libLLVMX86Info.a lib/libLLVMX86Utils.a > >>>>> lib/libLLVMXCoreCodeGen.a lib/libLLVMXCoreDesc.a > >>>>> lib/libLLVMXCoreDisassembler.a lib/libLLVMXCoreInfo.a > >>>>> lib/libLLVMAnalysis.a lib/libLLVMCodeGen.a lib/libLLVMCore.a > >>>>> lib/libLLVMipo.a lib/libLLVMAggressiveInstCombine.a > >>>>> lib/libLLVMInstCombine.a lib/libLLVMInstrumentation.a lib/libLLVMMC.a > >>>>> lib/libLLVMMCParser.a lib/libLLVMObjCARCOpts.a lib/libLLVMOption.a > >>>>> lib/libLLVMScalarOpts.a lib/libLLVMSupport.a lib/libLLVMTransformUtils.a > >>>>> lib/libLLVMVectorize.a -lpthread lib/libclangBasic.a > >>>>> lib/libclangCodeGen.a lib/libclangDriver.a lib/libclangFrontend.a > >>>>> lib/libclangFrontendTool.a lib/libclangSerialization.a > >>>>> lib/libLLVMAArch64Desc.a lib/libLLVMAArch64Info.a > >>>>> lib/libLLVMAArch64Utils.a lib/libLLVMMIRParser.a lib/libLLVMAMDGPUDesc.a > >>>>> lib/libLLVMAMDGPUInfo.a lib/libLLVMAMDGPUUtils.a lib/libLLVMARMDesc.a > >>>>> lib/libLLVMARMInfo.a lib/libLLVMARMUtils.a lib/libLLVMHexagonDesc.a > >>>>> lib/libLLVMHexagonInfo.a lib/libLLVMLanaiDesc.a lib/libLLVMLanaiInfo.a > >>>>> lib/libLLVMSystemZDesc.a lib/libLLVMSystemZInfo.a > >>>>> lib/libLLVMWebAssemblyDesc.a lib/libLLVMWebAssemblyInfo.a > >>>>> lib/libLLVMCFGuard.a lib/libLLVMGlobalISel.a lib/libLLVMAsmPrinter.a > >>>>> lib/libLLVMDebugInfoDWARF.a lib/libLLVMSelectionDAG.a > >>>>> lib/libLLVMMCDisassembler.a lib/libclangCodeGen.a lib/libLLVMCoverage.a > >>>>> lib/libLLVMLTO.a lib/libLLVMObjCARCOpts.a lib/libLLVMPasses.a > >>>>> lib/libLLVMCodeGen.a lib/libLLVMTarget.a lib/libLLVMCoroutines.a > >>>>> lib/libLLVMipo.a lib/libLLVMInstrumentation.a lib/libLLVMVectorize.a > >>>>> lib/libLLVMBitWriter.a lib/libLLVMIRReader.a lib/libLLVMAsmParser.a > >>>>> lib/libLLVMLinker.a lib/libLLVMScalarOpts.a > >>>>> lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a > >>>>> lib/libclangRewriteFrontend.a lib/libclangARCMigrate.a > >>>>> lib/libclangStaticAnalyzerFrontend.a lib/libclangStaticAnalyzerCheckers.a > >>>>> lib/libclangStaticAnalyzerCore.a lib/libclangCrossTU.a > >>>>> lib/libclangIndex.a lib/libclangFrontend.a lib/libclangDriver.a > >>>>> lib/libLLVMOption.a lib/libclangParse.a lib/libclangSerialization.a > >>>>> lib/libclangSema.a lib/libclangAnalysis.a lib/libclangASTMatchers.a > >>>>> lib/libclangEdit.a lib/libclangFormat.a lib/libclangToolingInclusions.a > >>>>> lib/libclangToolingCore.a lib/libclangAST.a lib/libLLVMFrontendOpenMP.a > >>>>> lib/libLLVMTransformUtils.a lib/libLLVMAnalysis.a > >>>>> lib/libLLVMProfileData.a lib/libLLVMObject.a lib/libLLVMMCParser.a > >>>>> lib/libLLVMBitReader.a lib/libLLVMTextAPI.a lib/libclangRewrite.a > >>>>> lib/libclangLex.a lib/libclangBasic.a lib/libLLVMCore.a > >>>>> lib/libLLVMRemarks.a lib/libLLVMBitstreamReader.a lib/libLLVMMC.a > >>>>> lib/libLLVMBinaryFormat.a lib/libLLVMDebugInfoCodeView.a > >>>>> lib/libLLVMDebugInfoMSF.a lib/libLLVMSupport.a -lz -lrt -ldl -ltinfo > >>>>> -lpthread -lm lib/libLLVMDemangle.a && : > >>>>> ld.lld: error: failed to open bin/clang-11: Cannot allocate memory > >>>>> > >>>>> _______________________________________________ > >>>>> LLVM Developers mailing list > >>>>> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> > >>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >>>>> > >>>>> _______________________________________________ > >>>>> LLVM Developers mailing list > >>>>> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> > >>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >>>>> > >>>>> > > >_______________________________________________ > >LLVM Developers mailing list > >llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> > >https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > > > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >
Itaru Kitayama via llvm-dev
2020-Apr-04 00:03 UTC
[llvm-dev] LLD issue on a massively parallel build machine
Passing -Wl,--threads=1 via -DCMAKE_CXX_FLAGS causes a config error. -- Check for working CXX compiler: /home/usr4/c74014i/opt/clang/current/bin/clang++ -- broken CMake Error at /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/share/cmake-3.16/Modules/CMakeTestCXXCompiler.cmake:53 (message): The C++ compiler "/home/usr4/c74014i/opt/clang/current/bin/clang++" is not able to compile a simple test program. It fails with the following output: Change Dir: /tmp/202004040902/CMakeFiles/CMakeTmp Run Build Command(s):/home/usr4/c74014i/opt/ninja/bin/ninja cmTC_9430a && [1/2] Building CXX object CMakeFiles/cmTC_9430a.dir/testCXXCompiler.cxx.o clang-11: warning: -Wl,--threads=1: 'linker' input unused [-Wunused-command-line-argument] [2/2] Linking CXX executable cmTC_9430a FAILED: cmTC_9430a : && /home/usr4/c74014i/opt/clang/current/bin/clang++ -Wl,--threads=1 CMakeFiles/cmTC_9430a.dir/testCXXCompiler.cxx.o -o cmTC_9430a && : /usr/bin/ld: unrecognized option '--threads=1' /usr/bin/ld: use the --help option for usage information clang-11: error: linker command failed with exit code 1 (use -v to see invocation) ninja: build stopped: subcommand failed. On Thu, Apr 2, 2020 at 1:49 AM Fangrui Song <maskray at google.com> wrote:> On 2020-03-29, Nemanja Ivanovic via llvm-dev wrote: > >Glad you got it working. > >My suggestion about LLVM_ENABLE_THREADS didn't work because you didn't > >apply it when building the build linker. > > > >When you don't have the ability to rebuild the build compiler, this > doesn't > >apply. In those cases, I end up doing a dirty hack where I use a wrapper > >script with something like: > > > ><path-to-build-compiler> "$@" -Wl,--no-threads > > > >To invoke the build compiler. That way you still get full parallelism > while > >compiling and linking, but you prevent LLD from using threads. > > > https://reviews.llvm.org/D76885 (committed yesterday) changed > --no-threads to --threads={1,2,...} (--no-threads is used rarely (GNU ld > does not support it) so I'd rather not keep the option for > compatibility). > > You may try -Wl,--threads=1 > > >On Sat., Mar. 28, 2020, 4:19 p.m. Itaru Kitayama, < > itaru.kitayama at gmail.com> > >wrote: > > > >> Good news, I was able to use up to 37 cores for LLVM build with LLD. > >> The build speed, did not measure precisely though, is comparable to the > >> build with GNU ld case. > >> > >> Thank you all for your help! > >> > >> On Sun, Mar 29, 2020 at 5:04 AM Alex Brachet-Mialot < > >> alexbrachetmialot at gmail.com> wrote: > >> > >>> Yes unfortunately that would limit you to 4 cores. > >>> > >>> There’s no easy way to use lld with —no-threads with our build system > at > >>> the moment unfortunately. > >>> > >>> I also had just been using ld.gold, but will switch now that numactl > >>> works for me. > >>> > >>> On Sat, Mar 28, 2020 at 3:58 PM Itaru Kitayama < > itaru.kitayama at gmail.com> > >>> wrote: > >>> > >>>> That is slowing down the build visibly, for the speed I should stick > >>>> with ld at the moment. > >>>> > >>>> > >>>> On Sun, Mar 29, 2020 at 4:42 AM Alexandre Ganea < > >>>> alexandre.ganea at ubisoft.com> wrote: > >>>> > >>>>> Would `taskset -c 0-3 ninja check-all -j4` work? > >>>>> > >>>>> > >>>>> > >>>>> *De :* Itaru Kitayama <itaru.kitayama at gmail.com> > >>>>> *Envoyé :* March 28, 2020 3:37 PM > >>>>> *À :* Alex Brachet-Mialot <alexbrachetmialot at gmail.com> > >>>>> *Cc :* Alexandre Ganea <alexandre.ganea at ubisoft.com>; LLVM Dev < > >>>>> llvm-dev at lists.llvm.org>; Nemanja Ivanovic <nemanja.i.ibm at gmail.com> > >>>>> *Objet :* Re: [llvm-dev] LLD issue on a massively parallel build > >>>>> machine > >>>>> > >>>>> > >>>>> > >>>>> $ free -g > >>>>> total used free shared buff/cache > >>>>> available > >>>>> Mem: 376 149 20 1 207 > >>>>> 225 > >>>>> Swap: 3 0 3 > >>>>> > >>>>> > >>>>> > >>>>> Too small swap size for a 72-core login machine? > >>>>> > >>>>> > >>>>> > >>>>> On Sun, Mar 29, 2020 at 4:28 AM Alex Brachet-Mialot < > >>>>> alexbrachetmialot at gmail.com> wrote: > >>>>> > >>>>> Enable threads is for building llvm with or without thread support. > To > >>>>> my knowledge it has no effect on the build system. > >>>>> > >>>>> > >>>>> > >>>>> Like was discussed above you could try limiting the number of > >>>>> processes created (assuming your lld was after that commit) with > numactl or > >>>>> taskset. > >>>>> > >>>>> > >>>>> > >>>>> In your case though it looked like you were running out of memory. > You > >>>>> could try increasing your swap space? > >>>>> > >>>>> > >>>>> > >>>>> Alex > >>>>> > >>>>> > >>>>> > >>>>> On Sat, Mar 28, 2020 at 3:15 PM Itaru Kitayama < > >>>>> itaru.kitayama at gmail.com> wrote: > >>>>> > >>>>> Hi, > >>>>> > >>>>> My configuration is below: > >>>>> > >>>>> cmake -GNinja -DLLVM_ENABLE_LLD=ON -DLLVM_ENABLE_THREADS=OFF > >>>>> -DLLVM_ENABLE_LIBCXX=ON -DCMAKE_BUILD_TYPE=Release > >>>>> -DGCC_INSTALL_PREFIX=/home/usr4/c74014i/opt/gcc-7.5.0/ > >>>>> -DLIBOMPTARGET_ENABLE_DEBUG=ON > >>>>> -DCMAKE_INSTALL_PREFIX=$HOME/opt/clang/${today} > -DCMAKE_C_COMPILER=clang > >>>>> -DCMAKE_C_FLAGS="" -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CXX_FLAGS="" > >>>>> > -DLLVM_ENABLE_PROJECTS="clang;openmp;lld;libcxx;libcxxabi;compiler-rt;libunwind" > >>>>> -DCLANG_OPENMP_NVPTX_DEFAULT_ARCH=sm_60 > >>>>> -DLIBOMPTARGET_NVPTX_COMPUTE_CAPABILITIES=60 > -DLLVM_TARGETS_TO_BUILD="all" > >>>>> /tmp/llvm-project/llvm > >>>>> > >>>>> > >>>>> > >>>>> but did not help my case: > >>>>> > >>>>> > >>>>> > >>>>> [...] > >>>>> > >>>>> [4802/5201] Linking CXX executable bin/lld > >>>>> FAILED: bin/lld > >>>>> : && /home/usr4/c74014i/opt/clang/current/bin/clang++ -stdlib=libc++ > >>>>> -fPIC -fvisibility-inlines-hidden -Werror=date-time > >>>>> -Werror=unguarded-availability-new -Wall -Wextra > -Wno-unused-parameter > >>>>> -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic > >>>>> -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default > >>>>> -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor > >>>>> -Wstring-conversion -fdiagnostics-color -ffunction-sections > -fdata-sections > >>>>> -O3 -DNDEBUG -stdlib=libc++ -fuse-ld=lld -Wl,--color-diagnostics > >>>>> -Wl,-allow-shlib-undefined -Wl,--export-dynamic -Wl,-O3 > >>>>> tools/lld/tools/lld/CMakeFiles/lld.dir/lld.cpp.o -o bin/lld > >>>>> -Wl,-rpath,"\$ORIGIN/../lib" lib/libLLVMSupport.a -lpthread > >>>>> lib/liblldCommon.a lib/liblldCOFF.a lib/liblldDriver.a > lib/liblldELF.a > >>>>> lib/liblldMinGW.a lib/liblldWasm.a lib/liblldMachO.a > >>>>> lib/liblldReaderWriter.a lib/liblldYAML.a lib/liblldCore.a > >>>>> lib/liblldCOFF.a lib/libLLVMDebugInfoPDB.a lib/libLLVMLibDriver.a > >>>>> lib/libLLVMWindowsManifest.a /usr/lib64/libxml2.so > lib/liblldCommon.a > >>>>> lib/libLLVMOption.a lib/libLLVMAArch64CodeGen.a > >>>>> lib/libLLVMAArch64AsmParser.a lib/libLLVMAArch64Disassembler.a > >>>>> lib/libLLVMAArch64Desc.a lib/libLLVMAArch64Info.a > >>>>> lib/libLLVMAArch64Utils.a lib/libLLVMAMDGPUCodeGen.a > >>>>> lib/libLLVMMIRParser.a lib/libLLVMAMDGPUAsmParser.a > >>>>> lib/libLLVMAMDGPUDisassembler.a lib/libLLVMAMDGPUDesc.a > >>>>> lib/libLLVMAMDGPUInfo.a lib/libLLVMAMDGPUUtils.a > lib/libLLVMARMCodeGen.a > >>>>> lib/libLLVMARMAsmParser.a lib/libLLVMARMDisassembler.a > >>>>> lib/libLLVMARMDesc.a lib/libLLVMARMInfo.a lib/libLLVMARMUtils.a > >>>>> lib/libLLVMAVRCodeGen.a lib/libLLVMAVRAsmParser.a > lib/libLLVMAVRDesc.a > >>>>> lib/libLLVMAVRDisassembler.a lib/libLLVMAVRInfo.a > >>>>> lib/libLLVMBPFCodeGen.a lib/libLLVMBPFAsmParser.a > lib/libLLVMBPFDesc.a > >>>>> lib/libLLVMBPFDisassembler.a lib/libLLVMBPFInfo.a > >>>>> lib/libLLVMHexagonCodeGen.a lib/libLLVMHexagonAsmParser.a > >>>>> lib/libLLVMHexagonDisassembler.a lib/libLLVMHexagonDesc.a > >>>>> lib/libLLVMHexagonInfo.a lib/libLLVMLanaiCodeGen.a > >>>>> lib/libLLVMLanaiAsmParser.a lib/libLLVMLanaiDisassembler.a > >>>>> lib/libLLVMLanaiDesc.a lib/libLLVMLanaiInfo.a > lib/libLLVMMipsCodeGen.a > >>>>> lib/libLLVMMipsAsmParser.a lib/libLLVMMipsDesc.a > >>>>> lib/libLLVMMipsDisassembler.a lib/libLLVMMipsInfo.a > >>>>> lib/libLLVMMSP430CodeGen.a lib/libLLVMMSP430AsmParser.a > >>>>> lib/libLLVMMSP430Desc.a lib/libLLVMMSP430Disassembler.a > >>>>> lib/libLLVMMSP430Info.a lib/libLLVMNVPTXCodeGen.a > lib/libLLVMNVPTXDesc.a > >>>>> lib/libLLVMNVPTXInfo.a lib/libLLVMPowerPCCodeGen.a > >>>>> lib/libLLVMPowerPCAsmParser.a lib/libLLVMPowerPCDesc.a > >>>>> lib/libLLVMPowerPCDisassembler.a lib/libLLVMPowerPCInfo.a > >>>>> lib/libLLVMRISCVCodeGen.a lib/libLLVMRISCVAsmParser.a > >>>>> lib/libLLVMRISCVDesc.a lib/libLLVMRISCVDisassembler.a > >>>>> lib/libLLVMRISCVInfo.a lib/libLLVMRISCVUtils.a > lib/libLLVMSparcCodeGen.a > >>>>> lib/libLLVMSparcAsmParser.a lib/libLLVMSparcDesc.a > >>>>> lib/libLLVMSparcDisassembler.a lib/libLLVMSparcInfo.a > >>>>> lib/libLLVMSystemZCodeGen.a lib/libLLVMSystemZAsmParser.a > >>>>> lib/libLLVMSystemZDisassembler.a lib/libLLVMSystemZDesc.a > >>>>> lib/libLLVMSystemZInfo.a lib/libLLVMWebAssemblyCodeGen.a > >>>>> lib/libLLVMWebAssemblyAsmParser.a > lib/libLLVMWebAssemblyDisassembler.a > >>>>> lib/libLLVMWebAssemblyDesc.a lib/libLLVMWebAssemblyInfo.a > >>>>> lib/libLLVMX86CodeGen.a lib/libLLVMCFGuard.a > lib/libLLVMGlobalISel.a > >>>>> lib/libLLVMX86AsmParser.a lib/libLLVMX86Desc.a > >>>>> lib/libLLVMX86Disassembler.a lib/libLLVMX86Info.a > lib/libLLVMX86Utils.a > >>>>> lib/libLLVMXCoreCodeGen.a lib/libLLVMAsmPrinter.a > >>>>> lib/libLLVMDebugInfoDWARF.a lib/libLLVMSelectionDAG.a > >>>>> lib/libLLVMXCoreDesc.a lib/libLLVMXCoreDisassembler.a > >>>>> lib/libLLVMMCDisassembler.a lib/libLLVMXCoreInfo.a > lib/libLLVMLTO.a > >>>>> lib/libLLVMObjCARCOpts.a lib/libLLVMPasses.a lib/libLLVMCodeGen.a > >>>>> lib/libLLVMTarget.a lib/libLLVMCoroutines.a lib/libLLVMipo.a > >>>>> lib/libLLVMBitWriter.a lib/libLLVMScalarOpts.a > lib/libLLVMVectorize.a > >>>>> lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a > >>>>> lib/libLLVMLinker.a lib/libLLVMFrontendOpenMP.a > lib/libLLVMIRReader.a > >>>>> lib/libLLVMAsmParser.a lib/libLLVMInstrumentation.a > >>>>> lib/libLLVMTransformUtils.a lib/libLLVMAnalysis.a > lib/libLLVMObject.a > >>>>> lib/libLLVMBitReader.a lib/libLLVMMCParser.a lib/libLLVMMC.a > >>>>> lib/libLLVMDebugInfoCodeView.a lib/libLLVMDebugInfoMSF.a > >>>>> lib/libLLVMTextAPI.a lib/libLLVMProfileData.a lib/libLLVMCore.a > >>>>> lib/libLLVMBinaryFormat.a lib/libLLVMRemarks.a > >>>>> lib/libLLVMBitstreamReader.a lib/libLLVMSupport.a -lz -lrt -ldl > >>>>> -ltinfo -lpthread -lm lib/libLLVMDemangle.a && cd > >>>>> /tmp/build/202003290405/tools/lld/tools/lld && > >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E > >>>>> create_symlink lld /tmp/build/202003290405/./bin/lld-link && cd > >>>>> /tmp/build/202003290405/tools/lld/tools/lld && > >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E > >>>>> create_symlink lld /tmp/build/202003290405/./bin/ld.lld && cd > >>>>> /tmp/build/202003290405/tools/lld/tools/lld && > >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E > >>>>> create_symlink lld /tmp/build/202003290405/./bin/ld64.lld && cd > >>>>> /tmp/build/202003290405/tools/lld/tools/lld && > >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E > >>>>> create_symlink lld /tmp/build/202003290405/./bin/wasm-ld > >>>>> terminating with uncaught exception of type std::__1::system_error: > >>>>> thread constructor failed: Resource temporarily unavailable > >>>>> PLEASE submit a bug report to https://bugs.llvm.org/ and include the > >>>>> crash backtrace. > >>>>> #0 0x00000000007924f4 PrintStackTraceSignalHandler(void*) > >>>>> (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x7924f4) > >>>>> #1 0x00000000007902ce llvm::sys::RunSignalHandlers() > >>>>> (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x7902ce) > >>>>> #2 0x0000000000792bd5 SignalHandler(int) > >>>>> (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x792bd5) > >>>>> #3 0x00007fddd54bb630 __restore_rt (/lib64/libpthread.so.0+0xf630) > >>>>> #4 0x00007fddd3b40377 raise > >>>>> > /usr/src/debug/glibc-2.17-c758a686/signal/../nptl/sysdeps/unix/sysv/linux/raise.c:55:0 > >>>>> #5 0x00007fddd3b41a68 abort > >>>>> /usr/src/debug/glibc-2.17-c758a686/stdlib/abort.c:92:0 > >>>>> #6 0x00007fddd411ae8b > >>>>> > (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2be8b) > >>>>> #7 0x00007fddd40fdb9f demangling_terminate_handler() > >>>>> > (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0xeb9f) > >>>>> #8 0x00007fddd411a0a3 std::__terminate(void (*)()) > >>>>> > (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2b0a3) > >>>>> #9 0x00007fddd411ce06 > >>>>> > (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2de06) > >>>>> #10 0x00007fddd411cd9f > >>>>> > (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2dd9f) > >>>>> #11 0x00007fddd43bded4 std::__1::__throw_system_error(int, char > const*) > >>>>> > (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++.so.1+0x90ed4) > >>>>> #12 0x0000000002a7a316 void* > >>>>> > std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, > >>>>> std::__1::default_delete<std::__1::__thread_struct> >, > >>>>> llvm::parallel::detail::(anonymous > >>>>> > namespace)::ThreadPoolExecutor::ThreadPoolExecutor(llvm::ThreadPoolStrategy)::'lambda'()> > >>>>> >(void*) (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x2a7a316) > >>>>> #13 0x00007fddd54b3ea5 start_thread > >>>>> /usr/src/debug/glibc-2.17-c758a686/nptl/pthread_create.c:307:0 > >>>>> #14 0x00007fddd3c088cd clone > >>>>> > /usr/src/debug////////glibc-2.17-c758a686/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:113:0 > >>>>> clang-11: error: unable to execute command: Aborted > >>>>> clang-11: error: linker command failed due to signal (use -v to see > >>>>> invocation) > >>>>> > >>>>> > >>>>> > >>>>> On Sun, Mar 29, 2020 at 1:44 AM Nemanja Ivanovic < > >>>>> nemanja.i.ibm at gmail.com> wrote: > >>>>> > >>>>> The discussion in https://reviews.llvm.org/D76240 > >>>>> > >>>>> may be of interest to the participants of this thread. Specifically, > >>>>> Fangrui's planned work on a command line option to limit threads for > LLD. > >>>>> Until that becomes a reality, you might want to use the CMake > variable > >>>>> -DLLVM_ENABLE_THREADS=OFF when building the LLD that you are using to > >>>>> prevent parallelism. > >>>>> > >>>>> > >>>>> > >>>>> On Sat, Mar 28, 2020 at 12:32 PM Alexandre Ganea via llvm-dev < > >>>>> llvm-dev at lists.llvm.org> wrote: > >>>>> > >>>>> Alex : > >>>>> > >>>>> Can you please try `numactl` or `taskset` after > >>>>> > https://github.com/llvm/llvm-project/commit/09158252f777c2e2f06a86b154c44abcbcf9bb74 > >>>>> ? > >>>>> > >>>>> > >>>>> > >>>>> There was a tiny bug in how *sched_getaffinity*() was used, see: > >>>>> https://reviews.llvm.org/D75153#1942336 > >>>>> > >>>>> > >>>>> > >>>>> *De :* Alex Brachet-Mialot <alexbrachetmialot at gmail.com> > >>>>> *Envoyé :* March 28, 2020 12:11 PM > >>>>> *À :* Itaru Kitayama <itaru.kitayama at gmail.com> > >>>>> *Cc :* LLVM Dev <llvm-dev at lists.llvm.org>; Alexandre Ganea < > >>>>> alexandre.ganea at ubisoft.com>; Fāng-ruì Sòng <maskray at google.com> > >>>>> *Objet :* Re: [llvm-dev] LLD issue on a massively parallel build > >>>>> machine > >>>>> > >>>>> > >>>>> > >>>>> I also run into problems with lld on machines with lots of cores > (208), > >>>>> but I run into rlimits for number of processes I can create, > something > >>>>> outside of my control. > >>>>> > >>>>> > >>>>> > >>>>> Unfortunately things like numactl or taskset do not limit the > >>>>> concurrency of lld currently. > >>>>> > >>>>> > >>>>> > >>>>> On Sat, Mar 28, 2020 at 4:10 AM Itaru Kitayama via llvm-dev < > >>>>> llvm-dev at lists.llvm.org> wrote: > >>>>> > >>>>> Hi, > >>>>> > >>>>> On a 1296-core Intel machine with 376 GB, setting > >>>>> > >>>>> > >>>>> > >>>>> -DLLVM_PARALLEL_LINK_JOB=1 > >>>>> > >>>>> > >>>>> > >>>>> does not help (switching back to ld scales) see: > >>>>> > >>>>> > >>>>> > >>>>> [5085/5201] Linking CXX executable bin/clang-11 > >>>>> FAILED: bin/clang-11 > >>>>> : && /home/usr4/c74014i/opt/clang/current/bin/clang++ -stdlib=libc++ > >>>>> -fPIC -fvisibility-inlines-hidden -Werror=date-time > >>>>> -Werror=unguarded-availability-new -Wall -Wextra > -Wno-unused-parameter > >>>>> -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic > >>>>> -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default > >>>>> -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor > >>>>> -Wstring-conversion -fdiagnostics-color -ffunction-sections > -fdata-sections > >>>>> -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O3 -DNDEBUG > >>>>> -stdlib=libc++ -fuse-ld=lld -Wl,--color-diagnostics > >>>>> -Wl,-allow-shlib-undefined -Wl,--export-dynamic -Wl,-O3 > >>>>> tools/clang/tools/driver/CMakeFiles/clang.dir/driver.cpp.o > >>>>> tools/clang/tools/driver/CMakeFiles/clang.dir/cc1_main.cpp.o > >>>>> tools/clang/tools/driver/CMakeFiles/clang.dir/cc1as_main.cpp.o > >>>>> > tools/clang/tools/driver/CMakeFiles/clang.dir/cc1gen_reproducer_main.cpp.o > >>>>> -o bin/clang-11 -Wl,-rpath,"\$ORIGIN/../lib" > lib/libLLVMAArch64CodeGen.a > >>>>> lib/libLLVMAArch64AsmParser.a lib/libLLVMAArch64Desc.a > >>>>> lib/libLLVMAArch64Disassembler.a lib/libLLVMAArch64Info.a > >>>>> lib/libLLVMAArch64Utils.a lib/libLLVMAMDGPUCodeGen.a > >>>>> lib/libLLVMAMDGPUAsmParser.a lib/libLLVMAMDGPUDesc.a > >>>>> lib/libLLVMAMDGPUDisassembler.a lib/libLLVMAMDGPUInfo.a > >>>>> lib/libLLVMAMDGPUUtils.a lib/libLLVMARMCodeGen.a > >>>>> lib/libLLVMARMAsmParser.a lib/libLLVMARMDesc.a > >>>>> lib/libLLVMARMDisassembler.a lib/libLLVMARMInfo.a > lib/libLLVMARMUtils.a > >>>>> lib/libLLVMAVRCodeGen.a lib/libLLVMAVRAsmParser.a > lib/libLLVMAVRDesc.a > >>>>> lib/libLLVMAVRDisassembler.a lib/libLLVMAVRInfo.a > >>>>> lib/libLLVMBPFCodeGen.a lib/libLLVMBPFAsmParser.a > lib/libLLVMBPFDesc.a > >>>>> lib/libLLVMBPFDisassembler.a lib/libLLVMBPFInfo.a > >>>>> lib/libLLVMHexagonCodeGen.a lib/libLLVMHexagonAsmParser.a > >>>>> lib/libLLVMHexagonDesc.a lib/libLLVMHexagonDisassembler.a > >>>>> lib/libLLVMHexagonInfo.a lib/libLLVMLanaiCodeGen.a > >>>>> lib/libLLVMLanaiAsmParser.a lib/libLLVMLanaiDesc.a > >>>>> lib/libLLVMLanaiDisassembler.a lib/libLLVMLanaiInfo.a > >>>>> lib/libLLVMMipsCodeGen.a lib/libLLVMMipsAsmParser.a > >>>>> lib/libLLVMMipsDesc.a lib/libLLVMMipsDisassembler.a > >>>>> lib/libLLVMMipsInfo.a lib/libLLVMMSP430CodeGen.a > >>>>> lib/libLLVMMSP430AsmParser.a lib/libLLVMMSP430Desc.a > >>>>> lib/libLLVMMSP430Disassembler.a lib/libLLVMMSP430Info.a > >>>>> lib/libLLVMNVPTXCodeGen.a lib/libLLVMNVPTXDesc.a > lib/libLLVMNVPTXInfo.a > >>>>> lib/libLLVMPowerPCCodeGen.a lib/libLLVMPowerPCAsmParser.a > >>>>> lib/libLLVMPowerPCDesc.a lib/libLLVMPowerPCDisassembler.a > >>>>> lib/libLLVMPowerPCInfo.a lib/libLLVMRISCVCodeGen.a > >>>>> lib/libLLVMRISCVAsmParser.a lib/libLLVMRISCVDesc.a > >>>>> lib/libLLVMRISCVDisassembler.a lib/libLLVMRISCVInfo.a > >>>>> lib/libLLVMRISCVUtils.a lib/libLLVMSparcCodeGen.a > >>>>> lib/libLLVMSparcAsmParser.a lib/libLLVMSparcDesc.a > >>>>> lib/libLLVMSparcDisassembler.a lib/libLLVMSparcInfo.a > >>>>> lib/libLLVMSystemZCodeGen.a lib/libLLVMSystemZAsmParser.a > >>>>> lib/libLLVMSystemZDesc.a lib/libLLVMSystemZDisassembler.a > >>>>> lib/libLLVMSystemZInfo.a lib/libLLVMWebAssemblyCodeGen.a > >>>>> lib/libLLVMWebAssemblyAsmParser.a lib/libLLVMWebAssemblyDesc.a > >>>>> lib/libLLVMWebAssemblyDisassembler.a lib/libLLVMWebAssemblyInfo.a > >>>>> lib/libLLVMX86CodeGen.a lib/libLLVMX86AsmParser.a > lib/libLLVMX86Desc.a > >>>>> lib/libLLVMX86Disassembler.a lib/libLLVMX86Info.a > lib/libLLVMX86Utils.a > >>>>> lib/libLLVMXCoreCodeGen.a lib/libLLVMXCoreDesc.a > >>>>> lib/libLLVMXCoreDisassembler.a lib/libLLVMXCoreInfo.a > >>>>> lib/libLLVMAnalysis.a lib/libLLVMCodeGen.a lib/libLLVMCore.a > >>>>> lib/libLLVMipo.a lib/libLLVMAggressiveInstCombine.a > >>>>> lib/libLLVMInstCombine.a lib/libLLVMInstrumentation.a > lib/libLLVMMC.a > >>>>> lib/libLLVMMCParser.a lib/libLLVMObjCARCOpts.a lib/libLLVMOption.a > >>>>> lib/libLLVMScalarOpts.a lib/libLLVMSupport.a > lib/libLLVMTransformUtils.a > >>>>> lib/libLLVMVectorize.a -lpthread lib/libclangBasic.a > >>>>> lib/libclangCodeGen.a lib/libclangDriver.a lib/libclangFrontend.a > >>>>> lib/libclangFrontendTool.a lib/libclangSerialization.a > >>>>> lib/libLLVMAArch64Desc.a lib/libLLVMAArch64Info.a > >>>>> lib/libLLVMAArch64Utils.a lib/libLLVMMIRParser.a > lib/libLLVMAMDGPUDesc.a > >>>>> lib/libLLVMAMDGPUInfo.a lib/libLLVMAMDGPUUtils.a > lib/libLLVMARMDesc.a > >>>>> lib/libLLVMARMInfo.a lib/libLLVMARMUtils.a > lib/libLLVMHexagonDesc.a > >>>>> lib/libLLVMHexagonInfo.a lib/libLLVMLanaiDesc.a > lib/libLLVMLanaiInfo.a > >>>>> lib/libLLVMSystemZDesc.a lib/libLLVMSystemZInfo.a > >>>>> lib/libLLVMWebAssemblyDesc.a lib/libLLVMWebAssemblyInfo.a > >>>>> lib/libLLVMCFGuard.a lib/libLLVMGlobalISel.a > lib/libLLVMAsmPrinter.a > >>>>> lib/libLLVMDebugInfoDWARF.a lib/libLLVMSelectionDAG.a > >>>>> lib/libLLVMMCDisassembler.a lib/libclangCodeGen.a > lib/libLLVMCoverage.a > >>>>> lib/libLLVMLTO.a lib/libLLVMObjCARCOpts.a lib/libLLVMPasses.a > >>>>> lib/libLLVMCodeGen.a lib/libLLVMTarget.a lib/libLLVMCoroutines.a > >>>>> lib/libLLVMipo.a lib/libLLVMInstrumentation.a > lib/libLLVMVectorize.a > >>>>> lib/libLLVMBitWriter.a lib/libLLVMIRReader.a > lib/libLLVMAsmParser.a > >>>>> lib/libLLVMLinker.a lib/libLLVMScalarOpts.a > >>>>> lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a > >>>>> lib/libclangRewriteFrontend.a lib/libclangARCMigrate.a > >>>>> lib/libclangStaticAnalyzerFrontend.a > lib/libclangStaticAnalyzerCheckers.a > >>>>> lib/libclangStaticAnalyzerCore.a lib/libclangCrossTU.a > >>>>> lib/libclangIndex.a lib/libclangFrontend.a lib/libclangDriver.a > >>>>> lib/libLLVMOption.a lib/libclangParse.a > lib/libclangSerialization.a > >>>>> lib/libclangSema.a lib/libclangAnalysis.a > lib/libclangASTMatchers.a > >>>>> lib/libclangEdit.a lib/libclangFormat.a > lib/libclangToolingInclusions.a > >>>>> lib/libclangToolingCore.a lib/libclangAST.a > lib/libLLVMFrontendOpenMP.a > >>>>> lib/libLLVMTransformUtils.a lib/libLLVMAnalysis.a > >>>>> lib/libLLVMProfileData.a lib/libLLVMObject.a lib/libLLVMMCParser.a > >>>>> lib/libLLVMBitReader.a lib/libLLVMTextAPI.a lib/libclangRewrite.a > >>>>> lib/libclangLex.a lib/libclangBasic.a lib/libLLVMCore.a > >>>>> lib/libLLVMRemarks.a lib/libLLVMBitstreamReader.a lib/libLLVMMC.a > >>>>> lib/libLLVMBinaryFormat.a lib/libLLVMDebugInfoCodeView.a > >>>>> lib/libLLVMDebugInfoMSF.a lib/libLLVMSupport.a -lz -lrt -ldl > -ltinfo > >>>>> -lpthread -lm lib/libLLVMDemangle.a && : > >>>>> ld.lld: error: failed to open bin/clang-11: Cannot allocate memory > >>>>> > >>>>> _______________________________________________ > >>>>> LLVM Developers mailing list > >>>>> llvm-dev at lists.llvm.org > >>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >>>>> > >>>>> _______________________________________________ > >>>>> LLVM Developers mailing list > >>>>> llvm-dev at lists.llvm.org > >>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >>>>> > >>>>> > > >_______________________________________________ > >LLVM Developers mailing list > >llvm-dev at lists.llvm.org > >https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200404/79031556/attachment-0001.html>
Fāng-ruì Sòng via llvm-dev
2020-Apr-04 00:29 UTC
[llvm-dev] LLD issue on a massively parallel build machine
On Fri, Apr 3, 2020 at 5:04 PM Itaru Kitayama <itaru.kitayama at gmail.com> wrote:> > Passing -Wl,--threads=1 via -DCMAKE_CXX_FLAGS causes a config error. > > -- Check for working CXX compiler: > /home/usr4/c74014i/opt/clang/current/bin/clang++ -- broken > CMake Error at > /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/share/cmake-3.16/Modules/CMakeTestCXXCompiler.cmake:53 > (message): > The C++ compiler > > "/home/usr4/c74014i/opt/clang/current/bin/clang++" > > is not able to compile a simple test program. > > It fails with the following output: > > Change Dir: /tmp/202004040902/CMakeFiles/CMakeTmp > > Run Build Command(s):/home/usr4/c74014i/opt/ninja/bin/ninja cmTC_9430a > && [1/2] Building CXX object CMakeFiles/cmTC_9430a.dir/testCXXCompiler.cxx.o > clang-11: warning: -Wl,--threads=1: 'linker' input unused > [-Wunused-command-line-argument] > [2/2] Linking CXX executable cmTC_9430a > FAILED: cmTC_9430a > : && /home/usr4/c74014i/opt/clang/current/bin/clang++ -Wl,--threads=1 > CMakeFiles/cmTC_9430a.dir/testCXXCompiler.cxx.o -o cmTC_9430a && : > /usr/bin/ld: unrecognized option '--threads=1' > /usr/bin/ld: use the --help option for usage information > clang-11: error: linker command failed with exit code 1 (use -v to see > invocation) > ninja: build stopped: subcommand failed. >-DCMAKE_EXE_LINKER_FLAGS=-Wl,--threads=1 -DCMAKE_SHARED_LINKER_FLAGS=-Wl,--threads=1 -Wl, should only be used at link time, not compile time.> On Thu, Apr 2, 2020 at 1:49 AM Fangrui Song <maskray at google.com> wrote: > >> On 2020-03-29, Nemanja Ivanovic via llvm-dev wrote: >> >Glad you got it working. >> >My suggestion about LLVM_ENABLE_THREADS didn't work because you didn't >> >apply it when building the build linker. >> > >> >When you don't have the ability to rebuild the build compiler, this >> doesn't >> >apply. In those cases, I end up doing a dirty hack where I use a wrapper >> >script with something like: >> > >> ><path-to-build-compiler> "$@" -Wl,--no-threads >> > >> >To invoke the build compiler. That way you still get full parallelism >> while >> >compiling and linking, but you prevent LLD from using threads. >> >> >> https://reviews.llvm.org/D76885 (committed yesterday) changed >> --no-threads to --threads={1,2,...} (--no-threads is used rarely (GNU ld >> does not support it) so I'd rather not keep the option for >> compatibility). >> >> You may try -Wl,--threads=1 >> >> >On Sat., Mar. 28, 2020, 4:19 p.m. Itaru Kitayama, < >> itaru.kitayama at gmail.com> >> >wrote: >> > >> >> Good news, I was able to use up to 37 cores for LLVM build with LLD. >> >> The build speed, did not measure precisely though, is comparable to the >> >> build with GNU ld case. >> >> >> >> Thank you all for your help! >> >> >> >> On Sun, Mar 29, 2020 at 5:04 AM Alex Brachet-Mialot < >> >> alexbrachetmialot at gmail.com> wrote: >> >> >> >>> Yes unfortunately that would limit you to 4 cores. >> >>> >> >>> There’s no easy way to use lld with —no-threads with our build system >> at >> >>> the moment unfortunately. >> >>> >> >>> I also had just been using ld.gold, but will switch now that numactl >> >>> works for me. >> >>> >> >>> On Sat, Mar 28, 2020 at 3:58 PM Itaru Kitayama < >> itaru.kitayama at gmail.com> >> >>> wrote: >> >>> >> >>>> That is slowing down the build visibly, for the speed I should stick >> >>>> with ld at the moment. >> >>>> >> >>>> >> >>>> On Sun, Mar 29, 2020 at 4:42 AM Alexandre Ganea < >> >>>> alexandre.ganea at ubisoft.com> wrote: >> >>>> >> >>>>> Would `taskset -c 0-3 ninja check-all -j4` work? >> >>>>> >> >>>>> >> >>>>> >> >>>>> *De :* Itaru Kitayama <itaru.kitayama at gmail.com> >> >>>>> *Envoyé :* March 28, 2020 3:37 PM >> >>>>> *À :* Alex Brachet-Mialot <alexbrachetmialot at gmail.com> >> >>>>> *Cc :* Alexandre Ganea <alexandre.ganea at ubisoft.com>; LLVM Dev < >> >>>>> llvm-dev at lists.llvm.org>; Nemanja Ivanovic <nemanja.i.ibm at gmail.com >> > >> >>>>> *Objet :* Re: [llvm-dev] LLD issue on a massively parallel build >> >>>>> machine >> >>>>> >> >>>>> >> >>>>> >> >>>>> $ free -g >> >>>>> total used free shared buff/cache >> >>>>> available >> >>>>> Mem: 376 149 20 1 207 >> >>>>> 225 >> >>>>> Swap: 3 0 3 >> >>>>> >> >>>>> >> >>>>> >> >>>>> Too small swap size for a 72-core login machine? >> >>>>> >> >>>>> >> >>>>> >> >>>>> On Sun, Mar 29, 2020 at 4:28 AM Alex Brachet-Mialot < >> >>>>> alexbrachetmialot at gmail.com> wrote: >> >>>>> >> >>>>> Enable threads is for building llvm with or without thread support. >> To >> >>>>> my knowledge it has no effect on the build system. >> >>>>> >> >>>>> >> >>>>> >> >>>>> Like was discussed above you could try limiting the number of >> >>>>> processes created (assuming your lld was after that commit) with >> numactl or >> >>>>> taskset. >> >>>>> >> >>>>> >> >>>>> >> >>>>> In your case though it looked like you were running out of memory. >> You >> >>>>> could try increasing your swap space? >> >>>>> >> >>>>> >> >>>>> >> >>>>> Alex >> >>>>> >> >>>>> >> >>>>> >> >>>>> On Sat, Mar 28, 2020 at 3:15 PM Itaru Kitayama < >> >>>>> itaru.kitayama at gmail.com> wrote: >> >>>>> >> >>>>> Hi, >> >>>>> >> >>>>> My configuration is below: >> >>>>> >> >>>>> cmake -GNinja -DLLVM_ENABLE_LLD=ON -DLLVM_ENABLE_THREADS=OFF >> >>>>> -DLLVM_ENABLE_LIBCXX=ON -DCMAKE_BUILD_TYPE=Release >> >>>>> -DGCC_INSTALL_PREFIX=/home/usr4/c74014i/opt/gcc-7.5.0/ >> >>>>> -DLIBOMPTARGET_ENABLE_DEBUG=ON >> >>>>> -DCMAKE_INSTALL_PREFIX=$HOME/opt/clang/${today} >> -DCMAKE_C_COMPILER=clang >> >>>>> -DCMAKE_C_FLAGS="" -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CXX_FLAGS="" >> >>>>> >> -DLLVM_ENABLE_PROJECTS="clang;openmp;lld;libcxx;libcxxabi;compiler-rt;libunwind" >> >>>>> -DCLANG_OPENMP_NVPTX_DEFAULT_ARCH=sm_60 >> >>>>> -DLIBOMPTARGET_NVPTX_COMPUTE_CAPABILITIES=60 >> -DLLVM_TARGETS_TO_BUILD="all" >> >>>>> /tmp/llvm-project/llvm >> >>>>> >> >>>>> >> >>>>> >> >>>>> but did not help my case: >> >>>>> >> >>>>> >> >>>>> >> >>>>> [...] >> >>>>> >> >>>>> [4802/5201] Linking CXX executable bin/lld >> >>>>> FAILED: bin/lld >> >>>>> : && /home/usr4/c74014i/opt/clang/current/bin/clang++ >> -stdlib=libc++ >> >>>>> -fPIC -fvisibility-inlines-hidden -Werror=date-time >> >>>>> -Werror=unguarded-availability-new -Wall -Wextra >> -Wno-unused-parameter >> >>>>> -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic >> >>>>> -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default >> >>>>> -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor >> >>>>> -Wstring-conversion -fdiagnostics-color -ffunction-sections >> -fdata-sections >> >>>>> -O3 -DNDEBUG -stdlib=libc++ -fuse-ld=lld -Wl,--color-diagnostics >> >>>>> -Wl,-allow-shlib-undefined -Wl,--export-dynamic -Wl,-O3 >> >>>>> tools/lld/tools/lld/CMakeFiles/lld.dir/lld.cpp.o -o bin/lld >> >>>>> -Wl,-rpath,"\$ORIGIN/../lib" lib/libLLVMSupport.a -lpthread >> >>>>> lib/liblldCommon.a lib/liblldCOFF.a lib/liblldDriver.a >> lib/liblldELF.a >> >>>>> lib/liblldMinGW.a lib/liblldWasm.a lib/liblldMachO.a >> >>>>> lib/liblldReaderWriter.a lib/liblldYAML.a lib/liblldCore.a >> >>>>> lib/liblldCOFF.a lib/libLLVMDebugInfoPDB.a lib/libLLVMLibDriver.a >> >>>>> lib/libLLVMWindowsManifest.a /usr/lib64/libxml2.so >> lib/liblldCommon.a >> >>>>> lib/libLLVMOption.a lib/libLLVMAArch64CodeGen.a >> >>>>> lib/libLLVMAArch64AsmParser.a lib/libLLVMAArch64Disassembler.a >> >>>>> lib/libLLVMAArch64Desc.a lib/libLLVMAArch64Info.a >> >>>>> lib/libLLVMAArch64Utils.a lib/libLLVMAMDGPUCodeGen.a >> >>>>> lib/libLLVMMIRParser.a lib/libLLVMAMDGPUAsmParser.a >> >>>>> lib/libLLVMAMDGPUDisassembler.a lib/libLLVMAMDGPUDesc.a >> >>>>> lib/libLLVMAMDGPUInfo.a lib/libLLVMAMDGPUUtils.a >> lib/libLLVMARMCodeGen.a >> >>>>> lib/libLLVMARMAsmParser.a lib/libLLVMARMDisassembler.a >> >>>>> lib/libLLVMARMDesc.a lib/libLLVMARMInfo.a lib/libLLVMARMUtils.a >> >>>>> lib/libLLVMAVRCodeGen.a lib/libLLVMAVRAsmParser.a >> lib/libLLVMAVRDesc.a >> >>>>> lib/libLLVMAVRDisassembler.a lib/libLLVMAVRInfo.a >> >>>>> lib/libLLVMBPFCodeGen.a lib/libLLVMBPFAsmParser.a >> lib/libLLVMBPFDesc.a >> >>>>> lib/libLLVMBPFDisassembler.a lib/libLLVMBPFInfo.a >> >>>>> lib/libLLVMHexagonCodeGen.a lib/libLLVMHexagonAsmParser.a >> >>>>> lib/libLLVMHexagonDisassembler.a lib/libLLVMHexagonDesc.a >> >>>>> lib/libLLVMHexagonInfo.a lib/libLLVMLanaiCodeGen.a >> >>>>> lib/libLLVMLanaiAsmParser.a lib/libLLVMLanaiDisassembler.a >> >>>>> lib/libLLVMLanaiDesc.a lib/libLLVMLanaiInfo.a >> lib/libLLVMMipsCodeGen.a >> >>>>> lib/libLLVMMipsAsmParser.a lib/libLLVMMipsDesc.a >> >>>>> lib/libLLVMMipsDisassembler.a lib/libLLVMMipsInfo.a >> >>>>> lib/libLLVMMSP430CodeGen.a lib/libLLVMMSP430AsmParser.a >> >>>>> lib/libLLVMMSP430Desc.a lib/libLLVMMSP430Disassembler.a >> >>>>> lib/libLLVMMSP430Info.a lib/libLLVMNVPTXCodeGen.a >> lib/libLLVMNVPTXDesc.a >> >>>>> lib/libLLVMNVPTXInfo.a lib/libLLVMPowerPCCodeGen.a >> >>>>> lib/libLLVMPowerPCAsmParser.a lib/libLLVMPowerPCDesc.a >> >>>>> lib/libLLVMPowerPCDisassembler.a lib/libLLVMPowerPCInfo.a >> >>>>> lib/libLLVMRISCVCodeGen.a lib/libLLVMRISCVAsmParser.a >> >>>>> lib/libLLVMRISCVDesc.a lib/libLLVMRISCVDisassembler.a >> >>>>> lib/libLLVMRISCVInfo.a lib/libLLVMRISCVUtils.a >> lib/libLLVMSparcCodeGen.a >> >>>>> lib/libLLVMSparcAsmParser.a lib/libLLVMSparcDesc.a >> >>>>> lib/libLLVMSparcDisassembler.a lib/libLLVMSparcInfo.a >> >>>>> lib/libLLVMSystemZCodeGen.a lib/libLLVMSystemZAsmParser.a >> >>>>> lib/libLLVMSystemZDisassembler.a lib/libLLVMSystemZDesc.a >> >>>>> lib/libLLVMSystemZInfo.a lib/libLLVMWebAssemblyCodeGen.a >> >>>>> lib/libLLVMWebAssemblyAsmParser.a >> lib/libLLVMWebAssemblyDisassembler.a >> >>>>> lib/libLLVMWebAssemblyDesc.a lib/libLLVMWebAssemblyInfo.a >> >>>>> lib/libLLVMX86CodeGen.a lib/libLLVMCFGuard.a >> lib/libLLVMGlobalISel.a >> >>>>> lib/libLLVMX86AsmParser.a lib/libLLVMX86Desc.a >> >>>>> lib/libLLVMX86Disassembler.a lib/libLLVMX86Info.a >> lib/libLLVMX86Utils.a >> >>>>> lib/libLLVMXCoreCodeGen.a lib/libLLVMAsmPrinter.a >> >>>>> lib/libLLVMDebugInfoDWARF.a lib/libLLVMSelectionDAG.a >> >>>>> lib/libLLVMXCoreDesc.a lib/libLLVMXCoreDisassembler.a >> >>>>> lib/libLLVMMCDisassembler.a lib/libLLVMXCoreInfo.a >> lib/libLLVMLTO.a >> >>>>> lib/libLLVMObjCARCOpts.a lib/libLLVMPasses.a lib/libLLVMCodeGen.a >> >>>>> lib/libLLVMTarget.a lib/libLLVMCoroutines.a lib/libLLVMipo.a >> >>>>> lib/libLLVMBitWriter.a lib/libLLVMScalarOpts.a >> lib/libLLVMVectorize.a >> >>>>> lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a >> >>>>> lib/libLLVMLinker.a lib/libLLVMFrontendOpenMP.a >> lib/libLLVMIRReader.a >> >>>>> lib/libLLVMAsmParser.a lib/libLLVMInstrumentation.a >> >>>>> lib/libLLVMTransformUtils.a lib/libLLVMAnalysis.a >> lib/libLLVMObject.a >> >>>>> lib/libLLVMBitReader.a lib/libLLVMMCParser.a lib/libLLVMMC.a >> >>>>> lib/libLLVMDebugInfoCodeView.a lib/libLLVMDebugInfoMSF.a >> >>>>> lib/libLLVMTextAPI.a lib/libLLVMProfileData.a lib/libLLVMCore.a >> >>>>> lib/libLLVMBinaryFormat.a lib/libLLVMRemarks.a >> >>>>> lib/libLLVMBitstreamReader.a lib/libLLVMSupport.a -lz -lrt -ldl >> >>>>> -ltinfo -lpthread -lm lib/libLLVMDemangle.a && cd >> >>>>> /tmp/build/202003290405/tools/lld/tools/lld && >> >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E >> >>>>> create_symlink lld /tmp/build/202003290405/./bin/lld-link && cd >> >>>>> /tmp/build/202003290405/tools/lld/tools/lld && >> >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E >> >>>>> create_symlink lld /tmp/build/202003290405/./bin/ld.lld && cd >> >>>>> /tmp/build/202003290405/tools/lld/tools/lld && >> >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E >> >>>>> create_symlink lld /tmp/build/202003290405/./bin/ld64.lld && cd >> >>>>> /tmp/build/202003290405/tools/lld/tools/lld && >> >>>>> /home/usr4/c74014i/opt/cmake-3.16.3-Linux-x86_64/bin/cmake -E >> >>>>> create_symlink lld /tmp/build/202003290405/./bin/wasm-ld >> >>>>> terminating with uncaught exception of type std::__1::system_error: >> >>>>> thread constructor failed: Resource temporarily unavailable >> >>>>> PLEASE submit a bug report to https://bugs.llvm.org/ and include >> the >> >>>>> crash backtrace. >> >>>>> #0 0x00000000007924f4 PrintStackTraceSignalHandler(void*) >> >>>>> (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x7924f4) >> >>>>> #1 0x00000000007902ce llvm::sys::RunSignalHandlers() >> >>>>> (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x7902ce) >> >>>>> #2 0x0000000000792bd5 SignalHandler(int) >> >>>>> (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x792bd5) >> >>>>> #3 0x00007fddd54bb630 __restore_rt (/lib64/libpthread.so.0+0xf630) >> >>>>> #4 0x00007fddd3b40377 raise >> >>>>> >> /usr/src/debug/glibc-2.17-c758a686/signal/../nptl/sysdeps/unix/sysv/linux/raise.c:55:0 >> >>>>> #5 0x00007fddd3b41a68 abort >> >>>>> /usr/src/debug/glibc-2.17-c758a686/stdlib/abort.c:92:0 >> >>>>> #6 0x00007fddd411ae8b >> >>>>> >> (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2be8b) >> >>>>> #7 0x00007fddd40fdb9f demangling_terminate_handler() >> >>>>> >> (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0xeb9f) >> >>>>> #8 0x00007fddd411a0a3 std::__terminate(void (*)()) >> >>>>> >> (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2b0a3) >> >>>>> #9 0x00007fddd411ce06 >> >>>>> >> (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2de06) >> >>>>> #10 0x00007fddd411cd9f >> >>>>> >> (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++abi.so.1+0x2dd9f) >> >>>>> #11 0x00007fddd43bded4 std::__1::__throw_system_error(int, char >> const*) >> >>>>> >> (/home/usr4/c74014i/opt/clang/202003290200/bin/../lib/libc++.so.1+0x90ed4) >> >>>>> #12 0x0000000002a7a316 void* >> >>>>> >> std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, >> >>>>> std::__1::default_delete<std::__1::__thread_struct> >, >> >>>>> llvm::parallel::detail::(anonymous >> >>>>> >> namespace)::ThreadPoolExecutor::ThreadPoolExecutor(llvm::ThreadPoolStrategy)::'lambda'()> >> >>>>> >(void*) (/home/usr4/c74014i/opt/clang/current/bin/ld.lld+0x2a7a316) >> >>>>> #13 0x00007fddd54b3ea5 start_thread >> >>>>> /usr/src/debug/glibc-2.17-c758a686/nptl/pthread_create.c:307:0 >> >>>>> #14 0x00007fddd3c088cd clone >> >>>>> >> /usr/src/debug////////glibc-2.17-c758a686/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:113:0 >> >>>>> clang-11: error: unable to execute command: Aborted >> >>>>> clang-11: error: linker command failed due to signal (use -v to see >> >>>>> invocation) >> >>>>> >> >>>>> >> >>>>> >> >>>>> On Sun, Mar 29, 2020 at 1:44 AM Nemanja Ivanovic < >> >>>>> nemanja.i.ibm at gmail.com> wrote: >> >>>>> >> >>>>> The discussion in https://reviews.llvm.org/D76240 >> >>>>> >> >>>>> may be of interest to the participants of this thread. Specifically, >> >>>>> Fangrui's planned work on a command line option to limit threads >> for LLD. >> >>>>> Until that becomes a reality, you might want to use the CMake >> variable >> >>>>> -DLLVM_ENABLE_THREADS=OFF when building the LLD that you are using >> to >> >>>>> prevent parallelism. >> >>>>> >> >>>>> >> >>>>> >> >>>>> On Sat, Mar 28, 2020 at 12:32 PM Alexandre Ganea via llvm-dev < >> >>>>> llvm-dev at lists.llvm.org> wrote: >> >>>>> >> >>>>> Alex : >> >>>>> >> >>>>> Can you please try `numactl` or `taskset` after >> >>>>> >> https://github.com/llvm/llvm-project/commit/09158252f777c2e2f06a86b154c44abcbcf9bb74 >> >>>>> ? >> >>>>> >> >>>>> >> >>>>> >> >>>>> There was a tiny bug in how *sched_getaffinity*() was used, see: >> >>>>> https://reviews.llvm.org/D75153#1942336 >> >>>>> >> >>>>> >> >>>>> >> >>>>> *De :* Alex Brachet-Mialot <alexbrachetmialot at gmail.com> >> >>>>> *Envoyé :* March 28, 2020 12:11 PM >> >>>>> *À :* Itaru Kitayama <itaru.kitayama at gmail.com> >> >>>>> *Cc :* LLVM Dev <llvm-dev at lists.llvm.org>; Alexandre Ganea < >> >>>>> alexandre.ganea at ubisoft.com>; Fāng-ruì Sòng <maskray at google.com> >> >>>>> *Objet :* Re: [llvm-dev] LLD issue on a massively parallel build >> >>>>> machine >> >>>>> >> >>>>> >> >>>>> >> >>>>> I also run into problems with lld on machines with lots of cores >> (208), >> >>>>> but I run into rlimits for number of processes I can create, >> something >> >>>>> outside of my control. >> >>>>> >> >>>>> >> >>>>> >> >>>>> Unfortunately things like numactl or taskset do not limit the >> >>>>> concurrency of lld currently. >> >>>>> >> >>>>> >> >>>>> >> >>>>> On Sat, Mar 28, 2020 at 4:10 AM Itaru Kitayama via llvm-dev < >> >>>>> llvm-dev at lists.llvm.org> wrote: >> >>>>> >> >>>>> Hi, >> >>>>> >> >>>>> On a 1296-core Intel machine with 376 GB, setting >> >>>>> >> >>>>> >> >>>>> >> >>>>> -DLLVM_PARALLEL_LINK_JOB=1 >> >>>>> >> >>>>> >> >>>>> >> >>>>> does not help (switching back to ld scales) see: >> >>>>> >> >>>>> >> >>>>> >> >>>>> [5085/5201] Linking CXX executable bin/clang-11 >> >>>>> FAILED: bin/clang-11 >> >>>>> : && /home/usr4/c74014i/opt/clang/current/bin/clang++ >> -stdlib=libc++ >> >>>>> -fPIC -fvisibility-inlines-hidden -Werror=date-time >> >>>>> -Werror=unguarded-availability-new -Wall -Wextra >> -Wno-unused-parameter >> >>>>> -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic >> >>>>> -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default >> >>>>> -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor >> >>>>> -Wstring-conversion -fdiagnostics-color -ffunction-sections >> -fdata-sections >> >>>>> -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O3 -DNDEBUG >> >>>>> -stdlib=libc++ -fuse-ld=lld -Wl,--color-diagnostics >> >>>>> -Wl,-allow-shlib-undefined -Wl,--export-dynamic -Wl,-O3 >> >>>>> tools/clang/tools/driver/CMakeFiles/clang.dir/driver.cpp.o >> >>>>> tools/clang/tools/driver/CMakeFiles/clang.dir/cc1_main.cpp.o >> >>>>> tools/clang/tools/driver/CMakeFiles/clang.dir/cc1as_main.cpp.o >> >>>>> >> tools/clang/tools/driver/CMakeFiles/clang.dir/cc1gen_reproducer_main.cpp.o >> >>>>> -o bin/clang-11 -Wl,-rpath,"\$ORIGIN/../lib" >> lib/libLLVMAArch64CodeGen.a >> >>>>> lib/libLLVMAArch64AsmParser.a lib/libLLVMAArch64Desc.a >> >>>>> lib/libLLVMAArch64Disassembler.a lib/libLLVMAArch64Info.a >> >>>>> lib/libLLVMAArch64Utils.a lib/libLLVMAMDGPUCodeGen.a >> >>>>> lib/libLLVMAMDGPUAsmParser.a lib/libLLVMAMDGPUDesc.a >> >>>>> lib/libLLVMAMDGPUDisassembler.a lib/libLLVMAMDGPUInfo.a >> >>>>> lib/libLLVMAMDGPUUtils.a lib/libLLVMARMCodeGen.a >> >>>>> lib/libLLVMARMAsmParser.a lib/libLLVMARMDesc.a >> >>>>> lib/libLLVMARMDisassembler.a lib/libLLVMARMInfo.a >> lib/libLLVMARMUtils.a >> >>>>> lib/libLLVMAVRCodeGen.a lib/libLLVMAVRAsmParser.a >> lib/libLLVMAVRDesc.a >> >>>>> lib/libLLVMAVRDisassembler.a lib/libLLVMAVRInfo.a >> >>>>> lib/libLLVMBPFCodeGen.a lib/libLLVMBPFAsmParser.a >> lib/libLLVMBPFDesc.a >> >>>>> lib/libLLVMBPFDisassembler.a lib/libLLVMBPFInfo.a >> >>>>> lib/libLLVMHexagonCodeGen.a lib/libLLVMHexagonAsmParser.a >> >>>>> lib/libLLVMHexagonDesc.a lib/libLLVMHexagonDisassembler.a >> >>>>> lib/libLLVMHexagonInfo.a lib/libLLVMLanaiCodeGen.a >> >>>>> lib/libLLVMLanaiAsmParser.a lib/libLLVMLanaiDesc.a >> >>>>> lib/libLLVMLanaiDisassembler.a lib/libLLVMLanaiInfo.a >> >>>>> lib/libLLVMMipsCodeGen.a lib/libLLVMMipsAsmParser.a >> >>>>> lib/libLLVMMipsDesc.a lib/libLLVMMipsDisassembler.a >> >>>>> lib/libLLVMMipsInfo.a lib/libLLVMMSP430CodeGen.a >> >>>>> lib/libLLVMMSP430AsmParser.a lib/libLLVMMSP430Desc.a >> >>>>> lib/libLLVMMSP430Disassembler.a lib/libLLVMMSP430Info.a >> >>>>> lib/libLLVMNVPTXCodeGen.a lib/libLLVMNVPTXDesc.a >> lib/libLLVMNVPTXInfo.a >> >>>>> lib/libLLVMPowerPCCodeGen.a lib/libLLVMPowerPCAsmParser.a >> >>>>> lib/libLLVMPowerPCDesc.a lib/libLLVMPowerPCDisassembler.a >> >>>>> lib/libLLVMPowerPCInfo.a lib/libLLVMRISCVCodeGen.a >> >>>>> lib/libLLVMRISCVAsmParser.a lib/libLLVMRISCVDesc.a >> >>>>> lib/libLLVMRISCVDisassembler.a lib/libLLVMRISCVInfo.a >> >>>>> lib/libLLVMRISCVUtils.a lib/libLLVMSparcCodeGen.a >> >>>>> lib/libLLVMSparcAsmParser.a lib/libLLVMSparcDesc.a >> >>>>> lib/libLLVMSparcDisassembler.a lib/libLLVMSparcInfo.a >> >>>>> lib/libLLVMSystemZCodeGen.a lib/libLLVMSystemZAsmParser.a >> >>>>> lib/libLLVMSystemZDesc.a lib/libLLVMSystemZDisassembler.a >> >>>>> lib/libLLVMSystemZInfo.a lib/libLLVMWebAssemblyCodeGen.a >> >>>>> lib/libLLVMWebAssemblyAsmParser.a lib/libLLVMWebAssemblyDesc.a >> >>>>> lib/libLLVMWebAssemblyDisassembler.a lib/libLLVMWebAssemblyInfo.a >> >>>>> lib/libLLVMX86CodeGen.a lib/libLLVMX86AsmParser.a >> lib/libLLVMX86Desc.a >> >>>>> lib/libLLVMX86Disassembler.a lib/libLLVMX86Info.a >> lib/libLLVMX86Utils.a >> >>>>> lib/libLLVMXCoreCodeGen.a lib/libLLVMXCoreDesc.a >> >>>>> lib/libLLVMXCoreDisassembler.a lib/libLLVMXCoreInfo.a >> >>>>> lib/libLLVMAnalysis.a lib/libLLVMCodeGen.a lib/libLLVMCore.a >> >>>>> lib/libLLVMipo.a lib/libLLVMAggressiveInstCombine.a >> >>>>> lib/libLLVMInstCombine.a lib/libLLVMInstrumentation.a >> lib/libLLVMMC.a >> >>>>> lib/libLLVMMCParser.a lib/libLLVMObjCARCOpts.a >> lib/libLLVMOption.a >> >>>>> lib/libLLVMScalarOpts.a lib/libLLVMSupport.a >> lib/libLLVMTransformUtils.a >> >>>>> lib/libLLVMVectorize.a -lpthread lib/libclangBasic.a >> >>>>> lib/libclangCodeGen.a lib/libclangDriver.a lib/libclangFrontend.a >> >>>>> lib/libclangFrontendTool.a lib/libclangSerialization.a >> >>>>> lib/libLLVMAArch64Desc.a lib/libLLVMAArch64Info.a >> >>>>> lib/libLLVMAArch64Utils.a lib/libLLVMMIRParser.a >> lib/libLLVMAMDGPUDesc.a >> >>>>> lib/libLLVMAMDGPUInfo.a lib/libLLVMAMDGPUUtils.a >> lib/libLLVMARMDesc.a >> >>>>> lib/libLLVMARMInfo.a lib/libLLVMARMUtils.a >> lib/libLLVMHexagonDesc.a >> >>>>> lib/libLLVMHexagonInfo.a lib/libLLVMLanaiDesc.a >> lib/libLLVMLanaiInfo.a >> >>>>> lib/libLLVMSystemZDesc.a lib/libLLVMSystemZInfo.a >> >>>>> lib/libLLVMWebAssemblyDesc.a lib/libLLVMWebAssemblyInfo.a >> >>>>> lib/libLLVMCFGuard.a lib/libLLVMGlobalISel.a >> lib/libLLVMAsmPrinter.a >> >>>>> lib/libLLVMDebugInfoDWARF.a lib/libLLVMSelectionDAG.a >> >>>>> lib/libLLVMMCDisassembler.a lib/libclangCodeGen.a >> lib/libLLVMCoverage.a >> >>>>> lib/libLLVMLTO.a lib/libLLVMObjCARCOpts.a lib/libLLVMPasses.a >> >>>>> lib/libLLVMCodeGen.a lib/libLLVMTarget.a lib/libLLVMCoroutines.a >> >>>>> lib/libLLVMipo.a lib/libLLVMInstrumentation.a >> lib/libLLVMVectorize.a >> >>>>> lib/libLLVMBitWriter.a lib/libLLVMIRReader.a >> lib/libLLVMAsmParser.a >> >>>>> lib/libLLVMLinker.a lib/libLLVMScalarOpts.a >> >>>>> lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a >> >>>>> lib/libclangRewriteFrontend.a lib/libclangARCMigrate.a >> >>>>> lib/libclangStaticAnalyzerFrontend.a >> lib/libclangStaticAnalyzerCheckers.a >> >>>>> lib/libclangStaticAnalyzerCore.a lib/libclangCrossTU.a >> >>>>> lib/libclangIndex.a lib/libclangFrontend.a lib/libclangDriver.a >> >>>>> lib/libLLVMOption.a lib/libclangParse.a >> lib/libclangSerialization.a >> >>>>> lib/libclangSema.a lib/libclangAnalysis.a >> lib/libclangASTMatchers.a >> >>>>> lib/libclangEdit.a lib/libclangFormat.a >> lib/libclangToolingInclusions.a >> >>>>> lib/libclangToolingCore.a lib/libclangAST.a >> lib/libLLVMFrontendOpenMP.a >> >>>>> lib/libLLVMTransformUtils.a lib/libLLVMAnalysis.a >> >>>>> lib/libLLVMProfileData.a lib/libLLVMObject.a >> lib/libLLVMMCParser.a >> >>>>> lib/libLLVMBitReader.a lib/libLLVMTextAPI.a lib/libclangRewrite.a >> >>>>> lib/libclangLex.a lib/libclangBasic.a lib/libLLVMCore.a >> >>>>> lib/libLLVMRemarks.a lib/libLLVMBitstreamReader.a lib/libLLVMMC.a >> >>>>> lib/libLLVMBinaryFormat.a lib/libLLVMDebugInfoCodeView.a >> >>>>> lib/libLLVMDebugInfoMSF.a lib/libLLVMSupport.a -lz -lrt -ldl >> -ltinfo >> >>>>> -lpthread -lm lib/libLLVMDemangle.a && : >> >>>>> ld.lld: error: failed to open bin/clang-11: Cannot allocate memory >> >>>>> >> >>>>> _______________________________________________ >> >>>>> LLVM Developers mailing list >> >>>>> llvm-dev at lists.llvm.org >> >>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >>>>> >> >>>>> _______________________________________________ >> >>>>> LLVM Developers mailing list >> >>>>> llvm-dev at lists.llvm.org >> >>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >>>>> >> >>>>> >> >> >_______________________________________________ >> >LLVM Developers mailing list >> >llvm-dev at lists.llvm.org >> >https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >>-- 宋方睿 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200403/2a64c29b/attachment.html>