几天前,我尝试编译并制作 CUDA Toolkit 5.0 示例以验证安装。但是,在制作过程中,制作 simpleMPI 样本时出错。在不详细说明的情况下,我假设我需要将 Open MPI 安装到我的主机上。我已经下载了当时的最新版本,例如 openmpi-1.6.2。然后根据我运行的Open MPI FAQ page
./configure --prefix=/usr/local
make all install
但不幸的是,在 make 命令期间出现了错误。我决定深入并弄清楚,Mac OS X 有一个内置的 Open MPI 包。我为 Mac OS X 用户找到了另一个常见问题解答页面,并尝试以这种方式在 /opt/openmpi 文件夹中安装 Open MPI
./configure --prefix=/opt/openmpi 2>&1 | tee config.out
shell$ make -j 4 2>&1 | tee make.out`
又没有运气了。使失败。在那一刻,我明白我可以跳过 simpleMPI 示例,我就这样做了!
再一次,在不详细说明的情况下,我决定从不必要的文件中清理我的系统,并做了愚蠢的事情make unistall
而不是make clean
.
现在,nvcc编译器似乎坏了,我需要重新安装或修复内置的 Open MPI 包。
问题是我怎样才能做到这一点?我也有 TimeMachine 备份。
PS此处描述了 simpleMPI CUDA 示例的问题。如何制作 simpleMPI 示例构建已经有一个明确的答案。
更新 [2012 年 11 月 3 日 22:09 UTC]
成功安装 MPICH2 后没有运气。添加到 PATH 的正确值:
vim ~/.bash_profile
export MPI_DIR=/usr/local/Cellar/mpich2/1.5/
export PATH=$MPI_DIR/bin:/usr/local/cuda/bin:/Developer/NVIDIA/CUDA-5.0/bin:$PATH
export LD_LIBRARY_PATH=$MPI_DIR/lib:$LD_LIBRARY_PATH
export DYLD_LIBRARY_PATH=/usr/local/cuda/lib:$DYLD_LIBRARY_PATH
export EDITOR=vim
通过终端调用运行 NSight nsight
。这很重要,因为我试图将 NSight 锁定到 Docks 中。但是从 Dock NSight 运行时找不到 GPU 设备。所以每次我使用终端。
我尝试创建新的 CUDA Runtime C/C++ 项目并简单地运行它。但是 NSight make 每次都以同样的方式失败。这里是:
nvcc -G -g -O0 "src/Simple CUDA RT Proj.o" "../src/Simple CUDA RT Proj.cu"
i686-apple-darwin11-llvm-g++-4.2: src/Simple CUDA RT Proj.o: No such file or directory
make: *** [src/Simple CUDA RT Proj.o] Error 1
每个项目都缺少相同的问题主要 .o 文件。
更新 [2012 年 11 月 4 日 10:36 UTC]
我已经通过brew安装了 Fortran 编译器。并尝试使用前缀 urs/local 构建 OMPI(根据 OSX FAQ 实体)。一两个小时后,make 失败并出现错误:
sh: usr/local/cuda/bin/echo: No such file or directory
make[2]: *** [util/hostfile/orte_hosts.7] Error 127
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1
更新 [2012 年 11 月 5 日 13:40 UTC]
尝试使用以下参数构建 open-mpi-v1.9:
./configure --enable-shared --enable-sharedlibs=osx-gcc --enable-fast=all --prefix=/usr/local --with-cuda=/usr/local/cuda --with-cudalib=/usr/local/cuda/lib
现在 make 失败并出现类似错误:
sh: usr/local/cuda/bin/mv: No such file or directory
看起来 make-script 尝试访问 cuda/bin 目录中的顶级二进制文件并且 make 失败。似乎 make-script 错误地将相对快速的系统范围调用转换为使用 cuda bin 目录的绝对路径mv
。echo
这是不正确的配置选项还是 Open MPI 错误?
或者,也许 Open MPI 不是主要问题?也许我应该寻找别的东西?我的主要煤炭正在运行 CUDA 代码!