Skip to content
This repository has been archived by the owner on Nov 17, 2023. It is now read-only.

Disable MKL_USE_STATIC_LIBS by default #17794

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Disable MKL_USE_STATIC_LIBS by default #17794

wants to merge 1 commit into from

Conversation

leezu
Copy link
Contributor

@leezu leezu commented Mar 9, 2020

Description

Disable MKL_USE_STATIC_LIBS by default

Fixes #17791

#17751 tried to prevent the situation where MKLDNN dlopens intel omp after another omp has already been opened by the dynamic linker. #17751 both disabled MKL_USE_SINGLE_DYNAMIC_LIBRARY and enabled MKL_USE_STATIC_LIBS. Enabling MKL_USE_STATIC_LIBS by default is however not needed and causes issues on some systems. Thus disable MKL_USE_STATIC_LIBS by default again.

@leezu leezu requested a review from szha as a code owner March 9, 2020 16:25
@leezu leezu requested a review from TaoLv March 9, 2020 16:59
@TaoLv
Copy link
Member

TaoLv commented Mar 10, 2020

I don't think MKL-DNN will dlopen intel omp.

@TaoLv
Copy link
Member

TaoLv commented Mar 10, 2020

I hope the MKL package on ArchLinux can be fixed to include those missing files to support static linking.

@leezu
Copy link
Contributor Author

leezu commented Mar 10, 2020

I don't think MKL-DNN will dlopen intel omp.

Sorry, I meant mkl dynamic single library will dlopen intel omp.

@TaoLv
Copy link
Member

TaoLv commented Mar 10, 2020

Hah I should have guessed so. Given it looks like an issue of the system, can we keep the flag ON by default and suggest the users to turn it OFF when the static libraries are not present in the system? At least I see static libraries are distributed through yum/apt and the official parallel studio package from Intel.

@leezu
Copy link
Contributor Author

leezu commented Mar 10, 2020

Why would you prefer static linking?

@TaoLv
Copy link
Member

TaoLv commented Mar 10, 2020

Previously we mainly used makefile and it's static linked there: https://github.com/apache/incubator-mxnet/blob/master/make/config.mk#L142.

@leezu
Copy link
Contributor Author

leezu commented Mar 10, 2020

Thank you for clarifying. Is there any other advantage besides following the Makefile setup?

For distributing the libmxnet.so as part of a binary package static linking will be preferable, but that's a separate use-case and handled by the configuration files in config/distribution/.... For the local build defaults, dynamically linking system libraries may be a reasonable default?

@pengzhao-intel pengzhao-intel added this to In progress in CPU Performance and Quantization via automation Mar 11, 2020
CPU Performance and Quantization automation moved this from In progress to Reviewer approved Apr 4, 2020
@pengzhao-intel
Copy link
Contributor

@leezu could you rebase the code and run CI again?

@leezu
Copy link
Contributor Author

leezu commented May 7, 2020

Blocked by #18255

@leezu
Copy link
Contributor Author

leezu commented May 18, 2020

@mxnet-bot run ci [unix-cpu]

@mxnet-bot
Copy link

Jenkins CI successfully triggered : [unix-cpu]

@leezu
Copy link
Contributor Author

leezu commented Jun 25, 2020

@mxnet-bot run ci [unix-cpu]

@mxnet-bot
Copy link

Jenkins CI successfully triggered : [unix-cpu]

@leezu
Copy link
Contributor Author

leezu commented Jun 26, 2020

@mxnet-bot run ci [unix-cpu]

@mxnet-bot
Copy link

Jenkins CI successfully triggered : [unix-cpu]

@leezu
Copy link
Contributor Author

leezu commented Jul 3, 2020

@mxnet-bot run ci [unix-cpu]

@mxnet-bot
Copy link

Jenkins CI successfully triggered : [unix-cpu]

@leezu
Copy link
Contributor Author

leezu commented Jul 6, 2020

@pengzhao-intel @TaoLv I investigated the CI failure, and there is a deterministic segfault in the mkl library when using dynamic linking. Do you have any suggestion how to proceed fixing it?

See frame #32 below:

#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007f4a9ba03801 in __GI_abort () at abort.c:79
#2  0x00007f4a8fc2a957 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3  0x00007f4a8fc30ae6 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4  0x00007f4a8fc30b21 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5  0x00007f49dda599a1 in std::thread::~thread (this=0x417c720, __in_chrg=<optimized out>) at /usr/include/c++/7/thread:135
#6  0x00007f49ddb03549 in std::_Destroy<std::thread> (__pointer=0x417c720) at /usr/include/c++/7/bits/stl_construct.h:98
#7  0x00007f49ddaea19f in std::_Destroy_aux<false>::__destroy<std::thread*> (__first=0x417c720, __last=0x417c728) at /usr/include/c++/7/bits/stl_construct.h:108
#8  0x00007f49ddac4066 in std::_Destroy<std::thread*> (__first=0x417c720, __last=0x417c728) at /usr/include/c++/7/bits/stl_construct.h:137
#9  0x00007f49ddaa2545 in std::_Destroy<std::thread*, std::thread> (__first=0x417c720, __last=0x417c728) at /usr/include/c++/7/bits/stl_construct.h:206
#10 0x00007f49dda78543 in std::vector<std::thread, std::allocator<std::thread> >::~vector (this=0x3a01aa0, __in_chrg=<optimized out>) at /usr/include/c++/7/bits/stl_vector.h:434
#11 0x00007f49ddd25766 in mxnet::engine::ThreadPool::~ThreadPool (this=0x3a01aa0, __in_chrg=<optimized out>) at /work/mxnet/src/engine/./thread_pool.h:82
#12 0x00007f49ddd2f070 in std::default_delete<mxnet::engine::ThreadPool>::operator() (this=0x3373108, __ptr=0x3a01aa0) at /usr/include/c++/7/bits/unique_ptr.h:78
#13 0x00007f49ddd29837 in std::unique_ptr<mxnet::engine::ThreadPool, std::default_delete<mxnet::engine::ThreadPool> >::~unique_ptr (this=0x3373108, __in_chrg=<optimized out>)
    at /usr/include/c++/7/bits/unique_ptr.h:263
#14 0x00007f49ddd39d81 in mxnet::engine::ThreadedEnginePerDevice::ThreadWorkerBlock<(dmlc::ConcurrentQueueType)0>::~ThreadWorkerBlock (this=0x3373040, __in_chrg=<optimized out>)
    at /work/mxnet/src/engine/threaded_engine_perdevice.cc:214
#15 0x00007f49ddd3b526 in std::_Sp_counted_ptr<mxnet::engine::ThreadedEnginePerDevice::ThreadWorkerBlock<(dmlc::ConcurrentQueueType)0>*, (__gnu_cxx::_Lock_policy)2>::_M_dispose (
    this=0x38f13e0) at /usr/include/c++/7/bits/shared_ptr_base.h:376
#16 0x00007f49dd90945f in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=0x38f13e0) at /usr/include/c++/7/bits/shared_ptr_base.h:154
#17 0x00007f49dd9090c1 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count (this=0x7f47b40003d8, __in_chrg=<optimized out>)
    at /usr/include/c++/7/bits/shared_ptr_base.h:684
#18 0x00007f49ddd258b7 in std::__shared_ptr<mxnet::engine::ThreadedEnginePerDevice::ThreadWorkerBlock<(dmlc::ConcurrentQueueType)0>, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr (
    this=0x7f47b40003d0, __in_chrg=<optimized out>) at /usr/include/c++/7/bits/shared_ptr_base.h:1123
#19 0x00007f49ddd323dc in std::__shared_ptr<mxnet::engine::ThreadedEnginePerDevice::ThreadWorkerBlock<(dmlc::ConcurrentQueueType)0>, (__gnu_cxx::_Lock_policy)2>::operator= (
    this=0x7f47b4000470, __r=...) at /usr/include/c++/7/bits/shared_ptr_base.h:1213
#20 0x00007f49ddd2e7f0 in std::shared_ptr<mxnet::engine::ThreadedEnginePerDevice::ThreadWorkerBlock<(dmlc::ConcurrentQueueType)0> >::operator= (this=0x7f47b4000470, __r=...)
    at /usr/include/c++/7/bits/shared_ptr.h:319
#21 0x00007f49ddd28cce in mxnet::common::LazyAllocArray<mxnet::engine::ThreadedEnginePerDevice::ThreadWorkerBlock<(dmlc::ConcurrentQueueType)0> >::Clear (this=0x4189188)
    at /work/mxnet/src/engine/../common/lazy_alloc_array.h:149
#22 0x00007f49ddd25f01 in mxnet::engine::ThreadedEnginePerDevice::StopNoWait (this=0x4189080) at /work/mxnet/src/engine/threaded_engine_perdevice.cc:67
#23 0x00007f49ddd25c7e in mxnet::engine::ThreadedEnginePerDevice::~ThreadedEnginePerDevice (this=0x4189080, __in_chrg=<optimized out>)
    at /work/mxnet/src/engine/threaded_engine_perdevice.cc:59
#24 0x00007f49ddd25e16 in mxnet::engine::ThreadedEnginePerDevice::~ThreadedEnginePerDevice (this=0x4189080, __in_chrg=<optimized out>)
    at /work/mxnet/src/engine/threaded_engine_perdevice.cc:60
#25 0x00007f49ddd004b6 in std::_Sp_counted_ptr<mxnet::Engine*, (__gnu_cxx::_Lock_policy)2>::_M_dispose (this=0x3ea9440) at /usr/include/c++/7/bits/shared_ptr_base.h:376
#26 0x00007f49dd90945f in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=0x3ea9440) at /usr/include/c++/7/bits/shared_ptr_base.h:154
#27 0x00007f49dd9090c1 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count (this=0x7f49f1628038 <mxnet::Engine::_GetSharedRef()::sptr+8>, __in_chrg=<optimized out>)
    at /usr/include/c++/7/bits/shared_ptr_base.h:684
#28 0x00007f49dda55e5d in std::__shared_ptr<mxnet::Engine, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr (this=0x7f49f1628030 <mxnet::Engine::_GetSharedRef()::sptr>,
    __in_chrg=<optimized out>) at /usr/include/c++/7/bits/shared_ptr_base.h:1123
#29 0x00007f49dda55e8b in std::shared_ptr<mxnet::Engine>::~shared_ptr (this=0x7f49f1628030 <mxnet::Engine::_GetSharedRef()::sptr>, __in_chrg=<optimized out>)
---Type <return> to continue, or q <return> to quit---
    at /usr/include/c++/7/bits/shared_ptr.h:93
#30 0x00007f4a9ba06041 in __run_exit_handlers (status=2, listp=0x7f4a9bdae718 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true)
    at exit.c:108
#31 0x00007f4a9ba0613a in __GI_exit (status=<optimized out>) at exit.c:139
#32 0x00007f49d0f3be78 in mkl_serv_exit () from /opt/intel/mkl/lib/intel64/libmkl_core.so
#33 0x00007f49d0f4cdbb in mkl_blas_get_kernel_api_version () from /opt/intel/mkl/lib/intel64/libmkl_core.so
#34 0x00007f49d5405962 in mkl_blas_sgemm () from /opt/intel/mkl/lib/intel64/libmkl_intel_thread.so
#35 0x00007f4a9496de67 in sgemm_ () from /opt/intel/mkl/lib/intel64/libmkl_intel_lp64.so
#36 0x00007f4a949d5da1 in cblas_sgemm () from /opt/intel/mkl/lib/intel64/libmkl_intel_lp64.so
#37 0x00007f49de499496 in linalg_gemm<mshadow::cpu, float> (A=..., B=..., C=..., alpha=1, beta=0, tA=false, tB=true, s=0x0) at /work/mxnet/src/operator/contrib/./../linalg_impl.h:156
#38 0x00007f49de4b6769 in linalg_gemm<mshadow::cpu, float> (A=..., B=..., C=..., tA=false, tB=true, s=0x0, req=mxnet::kWriteTo)
    at /work/mxnet/src/operator/contrib/./../linalg_impl.h:465
#39 0x00007f49defcb0cf in mxnet::op::FCForward<mshadow::cpu, float> (ctx=..., param=..., in_data=std::vector of length 3, capacity 3 = {...},
    req=std::vector of length 1, capacity 1 = {...}, out_data=std::vector of length 1, capacity 1 = {...}) at /work/mxnet/src/operator/nn/./fully_connected-inl.h:209
#40 0x00007f49defc8829 in mxnet::op::FullyConnectedCompute<mshadow::cpu> (attrs=..., ctx=..., inputs=std::vector of length 3, capacity 3 = {...},
    req=std::vector of length 1, capacity 1 = {...}, outputs=std::vector of length 1, capacity 1 = {...}) at /work/mxnet/src/operator/nn/./fully_connected-inl.h:420
#41 0x00007f49defab615 in mxnet::op::FullyConnectedComputeExCPU (attrs=..., ctx=..., inputs=std::vector of length 3, capacity 3 = {...},
    req=std::vector of length 1, capacity 1 = {...}, outputs=std::vector of length 1, capacity 1 = {...}) at /work/mxnet/src/operator/nn/fully_connected.cc:138
#42 0x00007f49de165579 in std::_Function_handler<void (nnvm::NodeAttrs const&, mxnet::OpContext const&, std::vector<mxnet::NDArray, std::allocator<mxnet::NDArray> > const&, std::vector<mxnet::OpReqType, std::allocator<mxnet::OpReqType> > const&, std::vector<mxnet::NDArray, std::allocator<mxnet::NDArray> > const&), void (*)(nnvm::NodeAttrs const&, mxnet::OpContext const&, std::vector<mxnet::NDArray, std::allocator<mxnet::NDArray> > const&, std::vector<mxnet::OpReqType, std::allocator<mxnet::OpReqType> > const&, std::vector<mxnet::NDArray, std::allocator<mxnet::NDArray> > const&)>::_M_invoke(std::_Any_data const&, nnvm::NodeAttrs const&, mxnet::OpContext const&, std::vector<mxnet::NDArray, std::allocator<mxnet::NDArray> > const&, std::vector<mxnet::OpReqType, std::allocator<mxnet::OpReqType> > const&, std::vector<mxnet::NDArray, std::allocator<mxnet::NDArray> > const&) (__functor=..., __args#0=...,
    __args#1=..., __args#2=std::vector of length 3, capacity 3 = {...}, __args#3=std::vector of length 1, capacity 1 = {...}, __args#4=std::vector of length 1, capacity 1 = {...})
    at /usr/include/c++/7/bits/std_function.h:316
#43 0x00007f49ddd46622 in std::function<void (nnvm::NodeAttrs const&, mxnet::OpContext const&, std::vector<mxnet::NDArray, std::allocator<mxnet::NDArray> > const&, std::vector<mxnet::OpReqType, std::allocator<mxnet::OpReqType> > const&, std::vector<mxnet::NDArray, std::allocator<mxnet::NDArray> > const&)>::operator()(nnvm::NodeAttrs const&, mxnet::OpContext const&, std::vector<mxnet::NDArray, std::allocator<mxnet::NDArray> > const&, std::vector<mxnet::OpReqType, std::allocator<mxnet::OpReqType> > const&, std::vector<mxnet::NDArray, std::allocator<mxnet::NDArray> > const&) const (this=0x3e46a20, __args#0=..., __args#1=..., __args#2=std::vector of length 3, capacity 3 = {...},
    __args#3=std::vector of length 1, capacity 1 = {...}, __args#4=std::vector of length 1, capacity 1 = {...}) at /usr/include/c++/7/bits/std_function.h:706
#44 0x00007f49dddfe80e in mxnet::imperative::PushFComputeEx(std::function<void (nnvm::NodeAttrs const&, mxnet::OpContext const&, std::vector<mxnet::NDArray, std::allocator<mxnet::NDArray> > const&, std::vector<mxnet::OpReqType, std::allocator<mxnet::OpReqType> > const&, std::vector<mxnet::NDArray, std::allocator<mxnet::NDArray> > const&)> const&, nnvm::Op const*, nnvm::NodeAttrs const&, mxnet::Context const&, std::vector<mxnet::engine::Var*, std::allocator<mxnet::engine::Var*> > const&, std::vector<mxnet::engine::Var*, std::allocator<mxnet::engine::Var*> > const&, std::vector<mxnet::Resource, std::allocator<mxnet::Resource> > const&, std::vector<mxnet::NDArray*, std::allocator<mxnet::NDArray*> > const&, std::vector<mxnet::NDArray*, std::allocator<mxnet::NDArray*> > const&, std::vector<mxnet::OpReqType, std::allocator<mxnet::OpReqType> > const&)::{lambda(mxnet::RunContext)#1}::operator()(mxnet::RunContext) const (__closure=0x3e46a00, rctx=...) at /work/mxnet/src/imperative/./imperative_utils.h:549
#45 0x00007f49dde0a4a5 in std::_Function_handler<void (mxnet::RunContext), mxnet::imperative::PushFComputeEx(std::function<void (nnvm::NodeAttrs const&, mxnet::OpContext const&, std::vector<mxnet::NDArray, std::allocator<mxnet::NDArray> > const&, std::vector<mxnet::OpReqType, std::allocator<mxnet::OpReqType> > const&, std::vector<mxnet::NDArray, std::allocator<mxnet::NDArray> > const&)> const&, nnvm::Op const*, nnvm::NodeAttrs const&, mxnet::Context const&, std::vector<mxnet::engine::Var*, std::allocator<mxnet::engine::Var*> > const&, std::vector<mxnet::engine::Var*, std::allocator<mxnet::engine::Var*> > const&, std::vector<mxnet::Resource, std::allocator<mxnet::Resource> > const&, std::vector<mxnet::NDArray*, std::allocator<mxnet::NDArray*> > const&, std::vector<mxnet::NDArray*, std::allocator<mxnet::NDArray*> > const&, std::vector<mxnet::OpReqType, std::allocator<mxnet::OpReqType> > const&)::{lambda(mxnet::RunContext)#1}>::_M_invoke(std::_Any_data const&, mxnet::RunContext&&) (__functor=..., __args#0=...) at /usr/include/c++/7/bits/std_function.h:316
---Type <return> to continue, or q <return> to quit---
#46 0x00007f49ddd0445e in std::function<void (mxnet::RunContext)>::operator()(mxnet::RunContext) const (this=0x41e7980, __args#0=...) at /usr/include/c++/7/bits/std_function.h:706
#47 0x00007f49ddd0d186 in mxnet::engine::ThreadedEngine::<lambda(mxnet::RunContext, mxnet::Engine::CallbackOnComplete)>::operator()(mxnet::RunContext, mxnet::Engine::CallbackOnComplete) const (__closure=0x41e7980, ctx=..., on_complete=...) at /work/mxnet/src/engine/threaded_engine.cc:354
#48 0x00007f49ddd0f118 in std::_Function_handler<void(mxnet::RunContext, mxnet::engine::CallbackOnComplete), mxnet::engine::ThreadedEngine::PushSync(mxnet::Engine::SyncFn, mxnet::Context, const std::vector<mxnet::engine::Var*>&, const std::vector<mxnet::engine::Var*>&, mxnet::FnProperty, int, char const*)::<lambda(mxnet::RunContext, mxnet::Engine::CallbackOnComplete)> >::_M_invoke(const std::_Any_data &, mxnet::RunContext &&, mxnet::engine::CallbackOnComplete &&) (__functor=..., __args#0=..., __args#1=...)
    at /usr/include/c++/7/bits/std_function.h:316
#49 0x00007f49ddd0585b in std::function<void (mxnet::RunContext, mxnet::engine::CallbackOnComplete)>::operator()(mxnet::RunContext, mxnet::engine::CallbackOnComplete) const (
    this=0x418ad80, __args#0=..., __args#1=...) at /usr/include/c++/7/bits/std_function.h:706
#50 0x00007f49ddd2464f in mxnet::engine::ThreadedEngine::ExecuteOprBlock (this=0x4189080, run_ctx=..., opr_block=0x418c3c0) at /work/mxnet/src/engine/./threaded_engine.h:381
#51 0x00007f49ddd29fe1 in mxnet::engine::ThreadedEnginePerDevice::CPUWorker<(dmlc::ConcurrentQueueType)0> (this=0x4189080, ctx=..., block=0x3373040,
    ready_event=std::shared_ptr<dmlc::ManualEvent> (use count 1, weak count 0) = {...}) at /work/mxnet/src/engine/threaded_engine_perdevice.cc:302
#52 0x00007f49ddd26671 in mxnet::engine::ThreadedEnginePerDevice::PushToExecute(mxnet::engine::OprBlock*, bool)::{lambda()#1}::operator()() const::{lambda(std::shared_ptr<dmlc::ManualEvent>)#1}::operator()(dmlc::ManualEvent) const (__closure=0x3e6b910, ready_event=std::shared_ptr<dmlc::ManualEvent> (use count 1, weak count 0) = {...})
    at /work/mxnet/src/engine/threaded_engine_perdevice.cc:118
#53 0x00007f49ddd2fde7 in std::_Function_handler<void (std::shared_ptr<dmlc::ManualEvent>), mxnet::engine::ThreadedEnginePerDevice::PushToExecute(mxnet::engine::OprBlock*, bool)::{lambda()#1}::operator()() const::{lambda(std::shared_ptr<dmlc::ManualEvent>)#1}>::_M_invoke(std::_Any_data const&, std::shared_ptr<dmlc::ManualEvent>&&) (__functor=..., __args#0=...)
    at /usr/include/c++/7/bits/std_function.h:316
#54 0x00007f49ddd31e23 in std::function<void (std::shared_ptr<dmlc::ManualEvent>)>::operator()(std::shared_ptr<dmlc::ManualEvent>) const (this=0x3e74298,
    __args#0=std::shared_ptr<dmlc::ManualEvent> (empty) = {...}) at /usr/include/c++/7/bits/std_function.h:706
#55 0x00007f49ddd2e23a in std::__invoke_impl<void, std::function<void (std::shared_ptr<dmlc::ManualEvent>)>, std::shared_ptr<dmlc::ManualEvent> >(std::__invoke_other, std::function<void (std::shared_ptr<dmlc::ManualEvent>)>&&, std::shared_ptr<dmlc::ManualEvent>&&) (__f=...) at /usr/include/c++/7/bits/invoke.h:60
#56 0x00007f49ddd2838a in std::__invoke<std::function<void (std::shared_ptr<dmlc::ManualEvent>)>, std::shared_ptr<dmlc::ManualEvent> >(std::function<void (std::shared_ptr<dmlc::ManualEvent>)>&&, std::shared_ptr<dmlc::ManualEvent>&&) (__fn=...) at /usr/include/c++/7/bits/invoke.h:95
#57 0x00007f49ddd3b994 in std::thread::_Invoker<std::tuple<std::function<void (std::shared_ptr<dmlc::ManualEvent>)>, std::shared_ptr<dmlc::ManualEvent> > >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) (this=0x3e74288) at /usr/include/c++/7/thread:234
#58 0x00007f49ddd3b898 in std::thread::_Invoker<std::tuple<std::function<void (std::shared_ptr<dmlc::ManualEvent>)>, std::shared_ptr<dmlc::ManualEvent> > >::operator()() (
    this=0x3e74288) at /usr/include/c++/7/thread:243
#59 0x00007f49ddd3b801 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<std::function<void (std::shared_ptr<dmlc::ManualEvent>)>, std::shared_ptr<dmlc::ManualEvent> > > >::_M_run() (this=0x3e74280) at /usr/include/c++/7/thread:186
#60 0x00007f4a8fc5b6df in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#61 0x00007f4a9b7ab6db in start_thread (arg=0x7f47b4002700) at pthread_create.c:463
#62 0x00007f4a9bae488f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

To reproduce, check out this branch and run

git clean -fxd; python ci/build.py --no-pull --platform ubuntu_cpu /work/runtime_functions.sh build_ubuntu_cpu_mkl
docker  run -it --rm -v  /home/ubuntu/src/mxnet-master:/work/mxnet mxnetci/build.ubuntu_cpu:latest /bin/bash
apt install gdb
gdb python3
run -m pytest --durations=50 --cov-report xml:tests_unittest.xml --verbose tests/python/unittest/test_gluon.py::test_parameter_sharing

This is the ldd output

ldd build/libmxnet.so
        linux-vdso.so.1 (0x00007ffdd25e3000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f3ebca23000)
        libmkl_intel_lp64.so => /opt/intel/mkl/lib/intel64/libmkl_intel_lp64.so (0x00007f3ebbeb7000)
        libmkl_intel_thread.so => /opt/intel/mkl/lib/intel64/libmkl_intel_thread.so (0x00007f3eb994b000)
        libmkl_core.so => /opt/intel/mkl/lib/intel64/libmkl_core.so (0x00007f3eb562b000)
        libiomp5.so => /opt/intel/compilers_and_libraries/linux/lib/intel64/libiomp5.so (0x00007f3eb523b000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f3eb5033000)
        libopencv_imgcodecs.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2 (0x00007f3eb4dfa000)
        libopencv_imgproc.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2 (0x00007f3eb48a9000)
        libopencv_core.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2 (0x00007f3eb446e000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f3eb424f000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f3eb3ec6000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f3eb3b28000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f3eb3910000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3eb351f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f3edb011000)
        libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 (0x00007f3eb32b7000)
        libwebp.so.6 => /usr/lib/x86_64-linux-gnu/libwebp.so.6 (0x00007f3eb304e000)
        libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f3eb2e1c000)
        libgdcmMSFF.so.2.8 => /usr/lib/x86_64-linux-gnu/libgdcmMSFF.so.2.8 (0x00007f3eb2999000)
        libtiff.so.5 => /usr/lib/x86_64-linux-gnu/libtiff.so.5 (0x00007f3eb2722000)
        libIlmImf-2_2.so.22 => /usr/lib/x86_64-linux-gnu/libIlmImf-2_2.so.22 (0x00007f3eb225e000)
        libHalf.so.12 => /usr/lib/x86_64-linux-gnu/libHalf.so.12 (0x00007f3eb201b000)
        libgdal.so.20 => /usr/lib/libgdal.so.20 (0x00007f3eb0e0d000)
        libgdcmDSED.so.2.8 => /usr/lib/x86_64-linux-gnu/libgdcmDSED.so.2.8 (0x00007f3eb0afa000)
        libtbb.so.2 => /usr/lib/x86_64-linux-gnu/libtbb.so.2 (0x00007f3eb08be000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f3eb06a1000)
        libgdcmIOD.so.2.8 => /usr/lib/x86_64-linux-gnu/libgdcmIOD.so.2.8 (0x00007f3eb048b000)
        libgdcmDICT.so.2.8 => /usr/lib/x86_64-linux-gnu/libgdcmDICT.so.2.8 (0x00007f3eb002b000)
        libgdcmjpeg8.so.2.8 => /usr/lib/x86_64-linux-gnu/libgdcmjpeg8.so.2.8 (0x00007f3eafe03000)
        libgdcmjpeg12.so.2.8 => /usr/lib/x86_64-linux-gnu/libgdcmjpeg12.so.2.8 (0x00007f3eafbdb000)
        libgdcmjpeg16.so.2.8 => /usr/lib/x86_64-linux-gnu/libgdcmjpeg16.so.2.8 (0x00007f3eaf9b3000)
        libopenjp2.so.7 => /usr/lib/x86_64-linux-gnu/libopenjp2.so.7 (0x00007f3eaf75d000)
        libCharLS.so.1 => /usr/lib/x86_64-linux-gnu/libCharLS.so.1 (0x00007f3eaf516000)
        libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f3eaf30f000)
        libjson-c.so.3 => /lib/x86_64-linux-gnu/libjson-c.so.3 (0x00007f3eaf104000)
        libgdcmCommon.so.2.8 => /usr/lib/x86_64-linux-gnu/libgdcmCommon.so.2.8 (0x00007f3eaeedb000)
        liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f3eaecb5000)
        libjbig.so.0 => /usr/lib/x86_64-linux-gnu/libjbig.so.0 (0x00007f3eaeaa7000)
        libIex-2_2.so.12 => /usr/lib/x86_64-linux-gnu/libIex-2_2.so.12 (0x00007f3eae889000)
        libIlmThread-2_2.so.12 => /usr/lib/x86_64-linux-gnu/libIlmThread-2_2.so.12 (0x00007f3eae682000)
        libarmadillo.so.8 => /usr/lib/libarmadillo.so.8 (0x00007f3eae479000)
        libproj.so.12 => /usr/lib/x86_64-linux-gnu/libproj.so.12 (0x00007f3eae210000)
        libpoppler.so.73 => /usr/lib/x86_64-linux-gnu/libpoppler.so.73 (0x00007f3eadd7a000)
        libfreexl.so.1 => /usr/lib/x86_64-linux-gnu/libfreexl.so.1 (0x00007f3eadb71000)
        libqhull.so.7 => /usr/lib/x86_64-linux-gnu/libqhull.so.7 (0x00007f3ead917000)
        libgeos_c.so.1 => /usr/lib/x86_64-linux-gnu/libgeos_c.so.1 (0x00007f3ead6e8000)
        libepsilon.so.1 => /usr/lib/x86_64-linux-gnu/libepsilon.so.1 (0x00007f3ead4d0000)
        libodbc.so.2 => /usr/lib/x86_64-linux-gnu/libodbc.so.2 (0x00007f3ead263000)
        libodbcinst.so.2 => /usr/lib/x86_64-linux-gnu/libodbcinst.so.2 (0x00007f3ead04e000)
        libkmlbase.so.1 => /usr/lib/x86_64-linux-gnu/libkmlbase.so.1 (0x00007f3eace33000)
        libkmldom.so.1 => /usr/lib/x86_64-linux-gnu/libkmldom.so.1 (0x00007f3eacb7c000)
        libkmlengine.so.1 => /usr/lib/x86_64-linux-gnu/libkmlengine.so.1 (0x00007f3eac944000)
        libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f3eac712000)
        libxerces-c-3.2.so => /usr/lib/x86_64-linux-gnu/libxerces-c-3.2.so (0x00007f3eac19e000)
        libnetcdf.so.13 => /usr/lib/x86_64-linux-gnu/libnetcdf.so.13 (0x00007f3eabe7c000)
        libhdf5_serial.so.100 => /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.100 (0x00007f3eab924000)
        libmfhdfalt.so.0 => /usr/lib/libmfhdfalt.so.0 (0x00007f3eab6fe000)
        libdfalt.so.0 => /usr/lib/libdfalt.so.0 (0x00007f3eab45b000)
        libogdi.so.3.2 => /usr/lib/libogdi.so.3.2 (0x00007f3eab23b000)
        libgif.so.7 => /usr/lib/x86_64-linux-gnu/libgif.so.7 (0x00007f3eab032000)
        libgeotiff.so.2 => /usr/lib/x86_64-linux-gnu/libgeotiff.so.2 (0x00007f3eaadfc000)
        libpq.so.5 => /usr/lib/x86_64-linux-gnu/libpq.so.5 (0x00007f3eaabb3000)
        libdapclient.so.6 => /usr/lib/x86_64-linux-gnu/libdapclient.so.6 (0x00007f3eaa972000)
        libdap.so.25 => /usr/lib/x86_64-linux-gnu/libdap.so.25 (0x00007f3eaa5e2000)
        libspatialite.so.7 => /usr/lib/x86_64-linux-gnu/libspatialite.so.7 (0x00007f3ea9e60000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f3ea9bee000)
        libcurl-gnutls.so.4 => /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 (0x00007f3ea9971000)
        libfyba.so.0 => /usr/lib/x86_64-linux-gnu/libfyba.so.0 (0x00007f3ea971c000)
        libxml2.so.2 => /usr/lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f3ea935b000)
        libmysqlclient.so.20 => /usr/lib/x86_64-linux-gnu/libmysqlclient.so.20 (0x00007f3ea8da3000)
        libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f3ea88d8000)
        libblas.so.3 => /usr/lib/x86_64-linux-gnu/libblas.so.3 (0x00007f3ea867d000)
        liblapack.so.3 => /usr/lib/x86_64-linux-gnu/liblapack.so.3 (0x00007f3ea7df7000)
        libarpack.so.2 => /usr/lib/x86_64-linux-gnu/libarpack.so.2 (0x00007f3ea7bad000)
        libsuperlu.so.5 => /usr/lib/x86_64-linux-gnu/libsuperlu.so.5 (0x00007f3ea793d000)
        libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f3ea7689000)
        libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f3ea7444000)
        libnss3.so => /usr/lib/x86_64-linux-gnu/libnss3.so (0x00007f3ea7100000)
        libsmime3.so => /usr/lib/x86_64-linux-gnu/libsmime3.so (0x00007f3ea6ed4000)
        libnspr4.so => /usr/lib/x86_64-linux-gnu/libnspr4.so (0x00007f3ea6c97000)
        liblcms2.so.2 => /usr/lib/x86_64-linux-gnu/liblcms2.so.2 (0x00007f3ea6a3f000)
        libgeos-3.6.2.so => /usr/lib/x86_64-linux-gnu/libgeos-3.6.2.so (0x00007f3ea66a6000)
        libltdl.so.7 => /usr/lib/x86_64-linux-gnu/libltdl.so.7 (0x00007f3ea649c000)
        libminizip.so.1 => /usr/lib/x86_64-linux-gnu/libminizip.so.1 (0x00007f3ea6291000)
        liburiparser.so.1 => /usr/lib/x86_64-linux-gnu/liburiparser.so.1 (0x00007f3ea6076000)
        libicuuc.so.60 => /usr/lib/x86_64-linux-gnu/libicuuc.so.60 (0x00007f3ea5cbe000)
        libhdf5_serial_hl.so.100 => /usr/lib/x86_64-linux-gnu/libhdf5_serial_hl.so.100 (0x00007f3ea5a9b000)
        libsz.so.2 => /usr/lib/x86_64-linux-gnu/libsz.so.2 (0x00007f3ea5898000)
        libssl.so.1.1 => /usr/lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f3ea560b000)
        libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007f3ea53c0000)
        libldap_r-2.4.so.2 => /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 (0x00007f3ea516e000)
        libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007f3ea4e65000)
        libnghttp2.so.14 => /usr/lib/x86_64-linux-gnu/libnghttp2.so.14 (0x00007f3ea4c40000)
        libidn2.so.0 => /usr/lib/x86_64-linux-gnu/libidn2.so.0 (0x00007f3ea4a23000)
        librtmp.so.1 => /usr/lib/x86_64-linux-gnu/librtmp.so.1 (0x00007f3ea4807000)
        libpsl.so.5 => /usr/lib/x86_64-linux-gnu/libpsl.so.5 (0x00007f3ea45f9000)
        libnettle.so.6 => /usr/lib/x86_64-linux-gnu/libnettle.so.6 (0x00007f3ea43c3000)
        libgnutls.so.30 => /usr/lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007f3ea405d000)
        liblber-2.4.so.2 => /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 (0x00007f3ea3e4f000)
        libfyut.so.0 => /usr/lib/x86_64-linux-gnu/libfyut.so.0 (0x00007f3ea3c46000)
        libfygm.so.0 => /usr/lib/x86_64-linux-gnu/libfygm.so.0 (0x00007f3ea3a3f000)
        libopenblas.so.0 => /usr/lib/x86_64-linux-gnu/libopenblas.so.0 (0x00007f3ea1799000)
        libgfortran.so.4 => /usr/lib/x86_64-linux-gnu/libgfortran.so.4 (0x00007f3ea13ba000)
        libnssutil3.so => /usr/lib/x86_64-linux-gnu/libnssutil3.so (0x00007f3ea118b000)
        libplc4.so => /usr/lib/x86_64-linux-gnu/libplc4.so (0x00007f3ea0f86000)
        libplds4.so => /usr/lib/x86_64-linux-gnu/libplds4.so (0x00007f3ea0d82000)
        libicudata.so.60 => /usr/lib/x86_64-linux-gnu/libicudata.so.60 (0x00007f3e9f1d9000)
        libaec.so.0 => /usr/lib/x86_64-linux-gnu/libaec.so.0 (0x00007f3e9efd1000)
        libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f3e9ecfb000)
        libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f3e9eac9000)
        libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f3e9e8c5000)
        libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f3e9e6ba000)
        libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f3e9e49f000)
        libsasl2.so.2 => /usr/lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007f3e9e284000)
        libgssapi.so.3 => /usr/lib/x86_64-linux-gnu/libgssapi.so.3 (0x00007f3e9e043000)
        libunistring.so.2 => /usr/lib/x86_64-linux-gnu/libunistring.so.2 (0x00007f3e9dcc5000)
        libhogweed.so.4 => /usr/lib/x86_64-linux-gnu/libhogweed.so.4 (0x00007f3e9da91000)
        libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f3e9d810000)
        libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f3e9d4e1000)
        libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007f3e9d2ce000)
        libquadmath.so.0 => /usr/lib/x86_64-linux-gnu/libquadmath.so.0 (0x00007f3e9d08e000)
        libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f3e9ce8a000)
        libheimntlm.so.0 => /usr/lib/x86_64-linux-gnu/libheimntlm.so.0 (0x00007f3e9cc81000)
        libkrb5.so.26 => /usr/lib/x86_64-linux-gnu/libkrb5.so.26 (0x00007f3e9c9f4000)
        libasn1.so.8 => /usr/lib/x86_64-linux-gnu/libasn1.so.8 (0x00007f3e9c752000)
        libhcrypto.so.4 => /usr/lib/x86_64-linux-gnu/libhcrypto.so.4 (0x00007f3e9c51c000)
        libroken.so.18 => /usr/lib/x86_64-linux-gnu/libroken.so.18 (0x00007f3e9c306000)
        libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f3e9c0fe000)
        libwind.so.0 => /usr/lib/x86_64-linux-gnu/libwind.so.0 (0x00007f3e9bed5000)
        libheimbase.so.1 => /usr/lib/x86_64-linux-gnu/libheimbase.so.1 (0x00007f3e9bcc6000)
        libhx509.so.5 => /usr/lib/x86_64-linux-gnu/libhx509.so.5 (0x00007f3e9ba7c000)
        libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f3e9b844000)

and these are the immediate shared library dependencies

readelf -d build/libmxnet.so | grep NEEDED
 0x0000000000000001 (NEEDED)             Shared library: [libdl.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [libmkl_intel_lp64.so]
 0x0000000000000001 (NEEDED)             Shared library: [libmkl_intel_thread.so]
 0x0000000000000001 (NEEDED)             Shared library: [libmkl_core.so]
 0x0000000000000001 (NEEDED)             Shared library: [libiomp5.so]
 0x0000000000000001 (NEEDED)             Shared library: [librt.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libopencv_imgcodecs.so.3.2]
 0x0000000000000001 (NEEDED)             Shared library: [libopencv_imgproc.so.3.2]
 0x0000000000000001 (NEEDED)             Shared library: [libopencv_core.so.3.2]
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [ld-linux-x86-64.so.2]

@leezu leezu requested a review from aaronmarkham as a code owner July 6, 2020 03:06
@leezu leezu requested a review from marcoabreu as a code owner July 6, 2020 03:06
@TaoLv TaoLv mentioned this pull request Jul 28, 2020
@lanking520 lanking520 added pr-awaiting-testing PR is reviewed and waiting CI build and test pr-work-in-progress PR is still work in progress and removed pr-awaiting-testing PR is reviewed and waiting CI build and test labels Nov 2, 2020
@lanking520 lanking520 added pr-awaiting-testing PR is reviewed and waiting CI build and test pr-work-in-progress PR is still work in progress and removed pr-work-in-progress PR is still work in progress pr-awaiting-testing PR is reviewed and waiting CI build and test labels Dec 1, 2020
@lanking520 lanking520 added pr-awaiting-testing PR is reviewed and waiting CI build and test pr-work-in-progress PR is still work in progress and removed pr-work-in-progress PR is still work in progress pr-awaiting-testing PR is reviewed and waiting CI build and test labels Dec 2, 2020
Co-authored-by: Anna Karbownik <anna.karbownik@intel.com>,
@lanking520 lanking520 added pr-awaiting-testing PR is reviewed and waiting CI build and test pr-work-in-progress PR is still work in progress and removed pr-work-in-progress PR is still work in progress pr-awaiting-testing PR is reviewed and waiting CI build and test labels Dec 4, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
MKL pr-work-in-progress PR is still work in progress
Projects
No open projects
CPU Performance and Quantization
  
Reviewer approved
Development

Successfully merging this pull request may close these issues.

fail to find MKL
5 participants