OpenBLAS: openblas-0.3.10 build failure on dynamic zarch

openblas-0.3.10 fails to build in Fedora s390x with DYNAMIC_ARCH=1 DYNAMIC_OLDER=1. I get a link error

/usr/bin/ld: ../libRblas-r0.3.10.a(dynamic_zarch.o): in function `gotoblas_corename':
/builddir/build/BUILD/openblas-0.3.10/Rblas/driver/others/dynamic_zarch.c:70: undefined reference to `gotoblas_Z13'
/usr/bin/ld: ../libRblas-r0.3.10.a(dynamic_zarch.o): in function `force_coretype':
/builddir/build/BUILD/openblas-0.3.10/Rblas/driver/others/dynamic_zarch.c:129: undefined reference to `gotoblas_Z13'
/usr/bin/ld: ../libRblas-r0.3.10.a(dynamic_zarch.o): in function `gotoblas_corename':
/builddir/build/BUILD/openblas-0.3.10/Rblas/driver/others/dynamic_zarch.c:70: undefined reference to `gotoblas_Z13'
/usr/bin/ld: ../libRblas-r0.3.10.a(dynamic_zarch.o): in function `force_coretype':
/builddir/build/BUILD/openblas-0.3.10/Rblas/driver/others/dynamic_zarch.c:129: undefined reference to `gotoblas_Z13'
collect2: error: ld returned 1 exit status

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 20 (6 by maintainers)

Most upvoted comments

How about

$ gendiff OpenBLAS-0.3.10/ .threadsafe
diff -up OpenBLAS-0.3.10/cpp_thread_test/dgemv_thread_safety.cpp.threadsafe OpenBLAS-0.3.10/cpp_thread_test/dgemv_thread_safety.cpp
--- OpenBLAS-0.3.10/cpp_thread_test/dgemv_thread_safety.cpp.threadsafe	2020-06-14 22:03:04.000000000 +0200
+++ OpenBLAS-0.3.10/cpp_thread_test/dgemv_thread_safety.cpp	2020-06-17 14:04:01.061831613 +0200
@@ -13,12 +13,9 @@ void launch_cblas_dgemv(double* A, doubl
 
 int main(int argc, char* argv[]){
 	blasint randomMatSize = 1024; //dimension of the random square matrices and vectors being used
-	uint32_t numConcurrentThreads = 52; //number of concurrent calls of the functions being tested
 	uint32_t numTestRounds = 16; //number of testing rounds before success exit
 	uint32_t maxHwThreads = omp_get_max_threads();
-	
-	if (maxHwThreads < 52)
-		numConcurrentThreads = maxHwThreads -4;
+	uint32_t numConcurrentThreads = std::max(64, maxHwThreads); //number of concurrent calls of the functions being tested
 	
 	if (argc > 4){
 		std::cout<<"ERROR: too many arguments for thread safety tester"<<std::endl;

This should probably be unified with the section already containing various other gcc version tests in Makefile.system (there is already a “major version >4”, and at least one test for a particular minor version IIRC)