我正在使用caffe
在8 GPU(1080Ti)服务器上运行训练脚本。
如果我训练6个或更少的GPU(使用CUDA_VISIBLE_DEVICES
),一切都很好。
(我设置了export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5
并在训练脚本中指定了这些GPU。)
但是,如果我在7或8个GPU上进行训练,则在开始训练时会始终看到此错误:
Error: (unix time) try if you are using GNU date
SIGSEGV (@0x70) received by PID 17206 (TID 0x7fc678ffd700) from PID 112; stack trace:
@ 0x7fc86186b4b0 (unknown)
@ 0x7fc861983f75 (unknown)
@ 0x7fc863c4b4c7 std::__cxx11::basic_string<>::_M_construct<>()
@ 0x7fc863c4c60b _ZN5caffe2db10LMDBCursor5valueB5cxx11Ev
@ 0x7fc863ace3e7 caffe::AnnotatedDataLayer<>::DataLayerSetUp()
@ 0x7fc863a6e4d5 caffe::BasePrefetchingDataLayer<>::LayerSetUp()
@ 0x7fc863cbf2b4 caffe::Net<>::Init()
@ 0x7fc863cc11ae caffe::Net<>::Net()
@ 0x7fc863bb9c9a caffe::Solver<>::InitTestNets()
@ 0x7fc863bbb84d caffe::Solver<>::Init()
@ 0x7fc863bbbb3f caffe::Solver<>::Solver()
@ 0x7fc863ba7d61 caffe::Creator_SGDSolver<>()
@ 0x7fc863ccc1c2 caffe::Worker<>::InternalThreadEntry()
@ 0x7fc863cf94c5 caffe::InternalThread::entry()
@ 0x7fc863cfa38e boost::detail::thread_data<>::run()
@ 0x7fc85350d5d5 (unknown)
@ 0x7fc83fee56ba start_thread
@ 0x7fc86193d41d clone
@ 0x0 (unknown)```
跟踪开始处的Error: (unix time) ...
显然是thrown by glog
。
它似乎是在发生一般故障时抛出的。
This thread显示了触发Error: (unix time)...
和类似跟踪的许多不同问题。
在线程中,请注意,多个GPU可能会触发此错误。
这就是我看来的根本原因。
有什么我需要进一步研究以了解发生了什么事情?