IntelligentSoftwareSystems / Galois

Galois: C++ library for multi-core and multi-node parallelization
http://iss.ices.utexas.edu/?p=projects/galois
Other
310 stars 131 forks source link

fmt linkage error #387

Closed YuxinxinChen closed 2 years ago

YuxinxinChen commented 2 years ago

Hi,

I am trying to compile and run Galois heterogenous distribution graph lib on Summit. However, I got errors when I was compiling it. I uses the master branch. The CMakeList.txt I modified are below. I made thos changes because some libs are locally installed:

[yuxinc@login4.summit Galois]$ git diff 
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 476b5a79a..877b52adf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -154,7 +154,7 @@ endif()

 find_package(Boost 1.58.0 REQUIRED COMPONENTS serialization iostreams)

-find_package(LLVM REQUIRED CONFIG)
+find_package(LLVM REQUIRED PATHS "/sw/summit/llvm/10.0.1/10.0.1-0/" CONFIG)
 if("${LLVM_PACKAGE_VERSION}" VERSION_LESS "7")
   message(FATAL_ERROR "LLVM 7 or greater is required.")
 endif()
diff --git a/libsupport/CMakeLists.txt b/libsupport/CMakeLists.txt
index 351539781..2c690a946 100644
--- a/libsupport/CMakeLists.txt
+++ b/libsupport/CMakeLists.txt
@@ -15,7 +15,7 @@ target_include_directories(galois_support PUBLIC
   $<INSTALL_INTERFACE:include>
 )

-find_package(fmt REQUIRED)
+find_package(fmt REQUIRED PATHS "/ccs/home/yuxinc/pkg/fmt/build")
 if (fmt_VERSION VERSION_LESS 4)
   message(FATAL_ERROR "fmt must be version 4 or higher. Found ${fmt_VERSION}.")
 endif()

When I run cmake ${GALOIS_ROOT} -DGALOIS_ENABLE_DIST=1 -DGALOIS_CUDA_CAPABILITY="7.0" -DCMAKE_CUDA_ARCHITECTURES=70 in path Galois/lonestar/analytics/distributed, the cmake run successfully. However, when I run make in path Galois/lonestar/analytics/distributed I got errors:

format.cc:(.text+0x3ce0): undefined reference to `std::__throw_bad_array_new_length()'
format.cc:(.text+0x3d10): undefined reference to `std::__throw_bad_array_new_length()'
format.cc:(.text+0x3d30): undefined reference to `std::__throw_bad_array_new_length()'
/ccs/home/yuxinc/pkg/fmt/build/libfmt.a(format.cc.o): In function `fmt::v8::basic_memory_buffer<unsigned int, 32ul, std::allocator<unsigned int> >::grow(unsigned long)':
format.cc:(.text._ZN3fmt2v819basic_memory_bufferIjLm32ESaIjEE4growEm[_ZN3fmt2v819basic_memory_bufferIjLm32ESaIjEE4growEm]+0x130): undefined reference to `std::__throw_bad_array_new_length()'
/ccs/home/yuxinc/pkg/fmt/build/libfmt.a(format.cc.o): In function `fmt::v8::basic_memory_buffer<int, 500ul, std::allocator<int> >::grow(unsigned long)':
format.cc:(.text._ZN3fmt2v819basic_memory_bufferIiLm500ESaIiEE4growEm[_ZN3fmt2v819basic_memory_bufferIiLm500ESaIiEE4growEm]+0x130): undefined reference to `std::__throw_bad_array_new_length()'
/ccs/home/yuxinc/pkg/fmt/build/libfmt.a(format.cc.o):format.cc:(.text._ZN3fmt2v819basic_memory_bufferIwLm500ESaIwEE4growEm[_ZN3fmt2v819basic_memory_bufferIwLm500ESaIwEE4growEm]+0x130): more undefined references to `std::__throw_bad_array_new_length()' follow
/usr/bin/ld: link errors found, deleting executable `unit-getenv'
collect2: error: ld returned 1 exit status
make[2]: *** [libsupport/test/CMakeFiles/unit-getenv.dir/build.make:99: libsupport/test/unit-getenv] Error 1
make[1]: *** [CMakeFiles/Makefile2:2666: libsupport/test/CMakeFiles/unit-getenv.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 10%] Linking CXX executable unit-logging
/ccs/home/yuxinc/pkg/fmt/build/libfmt.a(format.cc.o): In function `fmt::v8::detail::utf8_to_utf16::utf8_to_utf16(fmt::v8::basic_string_view<char>)':
format.cc:(.text+0x3ce0): undefined reference to `std::__throw_bad_array_new_length()'
format.cc:(.text+0x3d10): undefined reference to `std::__throw_bad_array_new_length()'
format.cc:(.text+0x3d30): undefined reference to `std::__throw_bad_array_new_length()'
/ccs/home/yuxinc/pkg/fmt/build/libfmt.a(format.cc.o): In function `fmt::v8::basic_memory_buffer<unsigned int, 32ul, std::allocator<unsigned int> >::grow(unsigned long)':
format.cc:(.text._ZN3fmt2v819basic_memory_bufferIjLm32ESaIjEE4growEm[_ZN3fmt2v819basic_memory_bufferIjLm32ESaIjEE4growEm]+0x130): undefined reference to `std::__throw_bad_array_new_length()'
/ccs/home/yuxinc/pkg/fmt/build/libfmt.a(format.cc.o): In function `fmt::v8::basic_memory_buffer<wchar_t, 500ul, std::allocator<wchar_t> >::grow(unsigned long)':
format.cc:(.text._ZN3fmt2v819basic_memory_bufferIwLm500ESaIwEE4growEm[_ZN3fmt2v819basic_memory_bufferIwLm500ESaIwEE4growEm]+0x130): undefined reference to `std::__throw_bad_array_new_length()'
/ccs/home/yuxinc/pkg/fmt/build/libfmt.a(format.cc.o):format.cc:(.text._ZN3fmt2v86detail6bufferIwE6appendIwEEvPKT_S7_[_ZN3fmt2v86detail6bufferIwE6appendIwEEvPKT_S7_]+0x270): more undefined references to `std::__throw_bad_array_new_length()' follow
/usr/bin/ld: link errors found, deleting executable `unit-logging'
collect2: error: ld returned 1 exit status
make[2]: *** [libsupport/test/CMakeFiles/unit-logging.dir/build.make:99: libsupport/test/unit-logging] Error 1
make[1]: *** [CMakeFiles/Makefile2:2640: libsupport/test/CMakeFiles/unit-logging.dir/all] Error 2
[ 11%] Linking CXX static library libgalois_shmem.a
[ 11%] Built target galois_shmem
/ccs/home/yuxinc/Galois/libgpu/src/csr_graph.cu: In member function 'void CSRGraphTex::copy_to_gpu(CSRGraphTex&)':
/ccs/home/yuxinc/Galois/libgpu/src/csr_graph.cu:75:23: note: the layout of aggregates containing vectors with 8-byte alignment has changed in GCC 5
   75 |   copygraph.nnodes = nnodes;
      |                      ~^~~~~~ 
[ 12%] Linking CUDA static library libgalois_gpu.a
[ 12%] Built target galois_gpu
make: *** [Makefile:166: all] Error 2

I also tried on my workstation, some fmt linkage error. Could you help me fix this?

Thanks!

Yuxin

nicelhc13 commented 2 years ago

Please use more recent compiler as README.md suggested (gcc:>=7). It seems to me like compatibility issue.