ICLDisco / parsec

PaRSEC is a generic framework for architecture aware scheduling and management of micro-tasks on distributed, GPU accelerated, many-core heterogeneous architectures. PaRSEC assigns computation threads to the cores, GPU accelerators, overlaps communications and computations and uses a dynamic, fully-distributed scheduler based on architectural features such as NUMA nodes and algorithmic features such as data reuse.
Other
47 stars 17 forks source link

Linkin of dplasma test executables fails #191

Closed abouteiller closed 5 years ago

abouteiller commented 5 years ago

Original report by Joseph Schuchart (Bitbucket: jschuchart, GitHub: jschuchart).


I am trying to link the dplasma testing binaries on my local systems, which fails with

[ 81%] Linking C executable testing_zgemm_dtd
../lib/libdplasma.so.2.0: undefined reference to `clarfg'
../lib/libdplasma.so.2.0: undefined reference to `slarfg'
../lib/libdplasma.so.2.0: undefined reference to `zlarfg'
../lib/libdplasma.so.2.0: undefined reference to `dlarfg'
collect2: error: ld returned 1 exit status
dplasma/testing/CMakeFiles/testing_zgemm_dtd.dir/build.make:106: recipe for target 'dplasma/testing/testing_zgemm_dtd' failed
make[2]: *** [dplasma/testing/testing_zgemm_dtd] Error 1

I am on 0fd3570cc0c8 (latest commit). Previously I used an older commit (e3b49b4f3fe5) which worked just fine (but I cannot use due to an unrelated issue that seems fixed in the current master). I am able to built all tests on our Cray, presumably because the Cray wrapper scripts link the MKL if the module has been loaded (?).

From the CMake output on my system:

$ cmake ../ -DCOREBLAS_PKG_DIR=$HOME/opt/plasma-2.8.0/lib/pkgconfig/
-- Building for target x86_64
-- Found target X86_64
-- Looking for include file stdatomic.h
-- Looking for include file stdatomic.h - found
-- Performing Test PARSEC_ATOMIC_USE_C11_128
-- Performing Test PARSEC_ATOMIC_USE_C11_128 - Failed
-- Performing Test PARSEC_ATOMIC_USE_C11_128
-- Performing Test PARSEC_ATOMIC_USE_C11_128 - Failed
-- Performing Test PARSEC_ATOMIC_USE_C11_128
-- Performing Test PARSEC_ATOMIC_USE_C11_128 - Success
--   support for 32 bits atomics - found
--   support for 64 bits atomics - found
--   support for 128 bits atomics - found
CUDA_TOOLKIT_ROOT_DIR not found or specified
-- Could NOT find CUDA (missing: CUDA_TOOLKIT_ROOT_DIR CUDA_NVCC_EXECUTABLE CUDA_INCLUDE_DIRS CUDA_CUDART_LIBRARY) 
-- Fortran adds libraries path /usr/lib/gcc/x86_64-linux-gnu/7;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib
-- Fortran adds libraries gfortran;m;gcc_s;gcc;quadmath;m;gcc_s;gcc;c;gcc_s;gcc
-- LINK_DIRECTORIES = /lib;/lib32;/lib64;/usr/lib;/usr/lib32;/usr/lib64
-- INSTALL_PREFIX = /usr/local/lib
-- Could NOT find GTG (missing: GTG_LIBRARY GTG_INCLUDE_DIR) 
-- Checking for module 'libgvc'
--   No package 'libgvc' found
-- Could NOT find GRAPHVIZ (missing: GRAPHVIZ_LIBRARY GRAPHVIZ_INCLUDE_DIR) 
-- Could NOT find Cython (missing: CYTHON_EXECUTABLE) (Required is at least version "0.21.2")
-- PARSEC Modular Component Architecture (MCA) discovery:
-- -- Found Component `pins'
-- ---- Module `iterators_checker' is ON
-- The PAPI Library is found at PAPI_LIBRARY-NOTFOUND
-- Module papi not selectable: PARSEC_PROF_TRACE disabled.
-- ---- Module `print_steals' is ON
-- ---- Module `ptg_to_dtd' is ON
-- Module task_profiler not selectable: PARSEC_PROF_TRACE disabled.
-- Component pins sources: mca/pins/pins.c;mca/pins/pins_init.c
-- -- Found Component `sched'
-- ---- Module `ap' is ON
-- ---- Module `gd' is ON
-- ---- Module `ip' is ON
-- ---- Module `lfq' is ON
-- ---- Module `lhq' is ON
-- ---- Module `ll' is ON
-- ---- Module `ltq' is ON
-- ---- Module `pbq' is ON
-- ---- Module `rnd' is ON
-- ---- Module `spq' is ON
-- Component sched sources: 
-- PARSEC Modular Component Architecture (MCA) discovery done.
-- Could NOT find Omega; Options depending on Omega will be disabled (missing: OMEGA_INCLUDE_DIR OMEGA_LIBRARY) 
-- Checking for one of the modules 'coreblas'
-- Found COREBLAS: /home/joseph/opt/plasma-2.8.0/include  
-- Looking for core_blas.h
-- Looking for core_blas.h - found
-- Performing Test COREBLAS_C_COMPILE_SUCCESS
-- Performing Test COREBLAS_C_COMPILE_SUCCESS - Success
-- Found COREBLAS: 
    COREBLAS_INCLUDE_DIRS = [/home/joseph/opt/plasma-2.8.0/include]
    COREBLAS_LIBRARY_DIRS = [/home/joseph/opt/plasma-2.8.0/lib]
    COREBLAS_LIBRARIES    = [coreblas;cblas;lapacke;tmg;lapack;refblas;pthread;m;hwloc]
    COREBLAS_LDFLAGS      = []
-- Generate precision dependencies in /home/joseph/src/parsec/icldistcomp-parsec-0fd3570cc0c8/dplasma/include
-- Generate precision dependencies in /home/joseph/src/parsec/icldistcomp-parsec-0fd3570cc0c8/dplasma/include - Done
-- Generate precision dependencies in /home/joseph/src/parsec/icldistcomp-parsec-0fd3570cc0c8/dplasma/cores
-- Generate precision dependencies in /home/joseph/src/parsec/icldistcomp-parsec-0fd3570cc0c8/dplasma/cores - Done
-- Generate precision dependencies in /home/joseph/src/parsec/icldistcomp-parsec-0fd3570cc0c8/dplasma/cores
-- Generate precision dependencies in /home/joseph/src/parsec/icldistcomp-parsec-0fd3570cc0c8/dplasma/cores - Done
-- Generate precision dependencies in /home/joseph/src/parsec/icldistcomp-parsec-0fd3570cc0c8/dplasma/lib
-- Generate precision dependencies in /home/joseph/src/parsec/icldistcomp-parsec-0fd3570cc0c8/dplasma/lib - Done
-- Generate precision dependencies in /home/joseph/src/parsec/icldistcomp-parsec-0fd3570cc0c8/dplasma/lib
-- Generate precision dependencies in /home/joseph/src/parsec/icldistcomp-parsec-0fd3570cc0c8/dplasma/lib - Done
-- Generate precision dependencies in /home/joseph/src/parsec/icldistcomp-parsec-0fd3570cc0c8/dplasma/testing
-- Generate precision dependencies in /home/joseph/src/parsec/icldistcomp-parsec-0fd3570cc0c8/dplasma/testing - Done
-- Internal PaRSEC uses CAS 128B. Reconfiguring parsec_options.h

Configuration flags:
  CMAKE_C_FLAGS          =  -m64 -std=c1x
  CMAKE_C_LDFLAGS        =  -m64
  CMAKE_EXE_LINKER_FLAGS = 
  EXTRA_LIBS             = -latomic;-lpthread;/usr/lib/x86_64-linux-gnu/libdl.so;/usr/lib/x86_64-linux-gnu/libhwloc.so;/home/joseph/opt/openmpi-3.0.0/lib/libmpi.so;-L/usr/lib/gcc/x86_64-linux-gnu/7;-L/usr/lib/x86_64-linux-gnu;-L/usr/lib;-L/lib/x86_64-linux-gnu;-L/lib;gfortran;m;gcc_s;gcc;quadmath;m;gcc_s;gcc;c;gcc_s;gcc

-- Configuring done
-- Generating done
-- Build files have been written to: /home/joseph/src/parsec/icldistcomp-parsec-0fd3570cc0c8/build
abouteiller commented 5 years ago

Original comment by Thomas Herault (Bitbucket: herault, GitHub: therault).


This might be related to commit 38a731f743bae0f547553d6b2bf22a1b990bb920 (bb).

Can you try to rollback this commit and report if this solves your issue?

Thanks

abouteiller commented 5 years ago

Original comment by Joseph Schuchart (Bitbucket: jschuchart, GitHub: jschuchart).


Thanks for the quick response. Indeed, rolling back that commit fixes my problem.

abouteiller commented 5 years ago

Original comment by Thomas Herault (Bitbucket: herault, GitHub: therault).


Resolved by commit b5c0c75 (bb)