在本地安装OpenMPI的问题与CUDA一起使用



简短版本

我有我需要在本地运行的CUDA代码。因此,我试图按照OpenMPI说明安装OpenMPI。当我尝试make我的代码时,我会收到非常长的错误输出,类似于OpenMPI文档所描述的。我试图用该文档的建议修复来重新安装OpenMPI,但是现在我在安装过程中遇到了这些错误:

Making all in tools/ompi_info
make[2]: Entering directory '/home/hatfull/Downloads/openmpi-2.1.1/ompi/tools/ompi_info'
  CC       ompi_info.o
  CC       param.o
  CCLD     ompi_info
ld: warning: libimf.so, needed by ../../../ompi/.libs/libmpi.so, not found (try using -rpath or -rpath-link)
ld: warning: libsvml.so, needed by ../../../ompi/.libs/libmpi.so, not found (try using -rpath or -rpath-link)
ld: warning: libirng.so, needed by ../../../ompi/.libs/libmpi.so, not found (try using -rpath or -rpath-link)
ld: warning: libintlc.so.5, needed by ../../../ompi/.libs/libmpi.so, not found (try using -rpath or -rpath-link)
ld: .libs/ompi_info: hidden symbol `__intel_cpu_features_init_x' in /opt/intel/compilers_and_libraries_2017.4.196/linux/compiler/lib/intel64_lin/libirc.a(cpu_feature_disp.o) is referenced by DSO
ld: final link failed: Bad value
Makefile:1785: recipe for target 'ompi_info' failed
make[2]: *** [ompi_info] Error 1
make[2]: Leaving directory '/home/hatfull/Downloads/openmpi-2.1.1/ompi/tools/ompi_info'
Makefile:3353: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/hatfull/Downloads/openmpi-2.1.1/ompi'
Makefile:1806: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

我在做什么错?请帮忙!S.O.S。!

长版本

我有我需要在本地运行的CUDA代码。因此,我试图按照OpenMPI说明安装OpenMPI。我将焦油存储为~/Downloads/openmpi-2.1.1.tar.gz。hance,我跑了

$gunzip -c openmpi-2.1.1.tar.gz | tar xf -
$cd openmpi-2.1.1
$./configure --prefix=/opt/openmpi-2.1.1 &> configure_log1
$sudo make all install &> install_log_take1

成功。请注意,我将指示中的--prefix=/usr/local更改为--prefix=/opt/openmpi-2.1.1。我包括configure_log1和install_log_take1。

当我尝试使用makefile makefile.ulfhednar make我的代码时,

$make -f makefile.ulfhednar clean
$make -f makefile.ulfhednar &> make_log1

我在Make_log1中收到了非常长的错误输出,该输出看起来与OpenMPI文档所描述的相似。它说解决方案是使用配置选项" ./configure CC=icc CXX=icpc F77=ifort FC=ifort ..."安装OpenMPI,因此我使用命令重新安装了

$cd ~/Downloads/openmpi-2.1.1
$sudo make uninstall
$sudo rm -r /opt/openmpi-2.1.1
$cd ..
$sudo rm -r openmpi-2.1.1
$gunzip -c openmpi-2.1.1.tar.gz | tar xf -
$cd openmpi-2.1.1
$which icc
/opt/intel/compilers_and_libraries_2017.4.196/linux/bin/intel64/icc
$which icpc
/opt/intel/compilers_and_libraries_2017.4.196/linux/bin/intel64/icpc
$which ifort
/opt/intel/compilers_and_libraries_2017.4.196/linux/bin/intel64/ifort
$./configure --prefix=/opt/openmpi-2.1.1 CC=/opt/intel/compilers_and_libraries_2017.4.196/linux/bin/intel64/icc CXX=/opt/intel/compilers_and_libraries_2017.4.196/linux/bin/intel64/icpc F77=/opt/intel/compilers_and_libraries_2017.4.196/linux/bin/intel64/ifort FC=/opt/intel/compilers_and_libraries_2017.4.196/linux/bin/intel64/ifort &> configure_log2
$sudo make all install &> install_log_take2

这是configure_log2和install_log_take2。在install_log_take2中注意到以下几行:

Making all in tools/ompi_info
make[2]: Entering directory '/home/hatfull/Downloads/openmpi-2.1.1/ompi/tools/ompi_info'
  CC       ompi_info.o
  CC       param.o
  CCLD     ompi_info
ld: warning: libimf.so, needed by ../../../ompi/.libs/libmpi.so, not found (try using -rpath or -rpath-link)
ld: warning: libsvml.so, needed by ../../../ompi/.libs/libmpi.so, not found (try using -rpath or -rpath-link)
ld: warning: libirng.so, needed by ../../../ompi/.libs/libmpi.so, not found (try using -rpath or -rpath-link)
ld: warning: libintlc.so.5, needed by ../../../ompi/.libs/libmpi.so, not found (try using -rpath or -rpath-link)
ld: .libs/ompi_info: hidden symbol `__intel_cpu_features_init_x' in /opt/intel/compilers_and_libraries_2017.4.196/linux/compiler/lib/intel64_lin/libirc.a(cpu_feature_disp.o) is referenced by DSO
ld: final link failed: Bad value
Makefile:1785: recipe for target 'ompi_info' failed
make[2]: *** [ompi_info] Error 1
make[2]: Leaving directory '/home/hatfull/Downloads/openmpi-2.1.1/ompi/tools/ompi_info'
Makefile:3353: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/hatfull/Downloads/openmpi-2.1.1/ompi'
Makefile:1806: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

对不起,我不得不将所有日志文件上传到Mediafire,Pastebin不接受它们,因为它们太大。

我在做什么错?请帮忙!S.O.S。!

我找到了解决方案!!!

我登录到root,并在不使用sudo的情况下跑过安装步骤。

#gunzip -c openmpi-2.1.1.tar.gz | tar xf -
#cd openmpi-2.1.1
#./configure --prefix=/opt/openmpi-2.1.1 CC=icc CXX=icpc FC=ifort
#make all install

我试图将OpenMPI与英特尔作曲家编译器一起使用,这引起了权限问题。我遵循此处找到的安装说明,但是我在尝试安装时遇到了相同的问题。问题是链接器ld"找不到"适当的库,因为当调用sudo时,这些库不再在$LD_LIBRARY_PATH变量中提供。避免这种情况的唯一方法是登录root用户并将$LD_LIBRARY_PATH变量设置为与普通用户相同的变量。

我一直被困在 days 上,现在我很高兴!我希望将来对别人有帮助。

最新更新