Я не очень знаком с установкой пакета от conda. Я устанавливаю OpenMPI conda install -c conda-forge/label/gcc7 openmpi
. После этого я пишу следующий файл CMakeLists.txt
cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
project(CUDA_MPI LANGUAGES CXX CUDA)
find_package(CUDA REQUIRED)
find_package(MPI REQUIRED)
add_library(Timer STATIC timer.h
timer.cpp)
add_library(Coll STATIC collectives.h
collectives.cu)
add_executable(CUDA_MPI ${CMAKE_CURRENT_SOURCE_DIR}/test/test.cpp)
include_directories(/usr/lib/x86_64-linux-gnu/openmpi/include)
target_link_libraries(CUDA_MPI PUBLIC Timer Coll MPI::MPI_CXX ${CUDA_LIBRARIES})
Мой журнал конфигурации выглядит следующим образом. Кажется, что инструмент CMake может найти библиотеку OpenMPI, но не может найти файл заголовка.
-- The CXX compiler identification is GNU 7.3.0
-- The CUDA compiler identification is NVIDIA 10.0.130
-- Check for working CXX compiler: /home/szhangcj/.conda/envs/distributed/bin/x86_64-conda_cos6-linux-gnu-c++
-- Check for working CXX compiler: /home/szhangcj/.conda/envs/distributed/bin/x86_64-conda_cos6-linux-gnu-c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Check for working CUDA compiler: /usr/local/cuda/bin/nvcc
-- Check for working CUDA compiler: /usr/local/cuda/bin/nvcc -- works
-- Detecting CUDA compiler ABI info
-- Detecting CUDA compiler ABI info - done
-- Looking for C++ include pthread.h
-- Looking for C++ include pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Found CUDA: /usr/local/cuda (found version "10.0")
-- Found MPI_CXX: /home/szhangcj/.conda/envs/distributed/lib/libmpi_cxx.so (found version "3.1")
-- Found MPI: TRUE (found version "3.1")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/szhangcj/HPC/MPI/baidu-allreduce/build
Сообщение об ошибке на этапе генерации выглядит следующим образом:
Scanning dependencies of target Timer
[ 14%] Building CXX object CMakeFiles/Timer.dir/timer.cpp.o
[ 28%] Linking CXX static library libTimer.a
[ 28%] Built target Timer
Scanning dependencies of target Coll
[ 42%] Building CUDA object CMakeFiles/Coll.dir/collectives.cu.o
/home/szhangcj/HPC/MPI/baidu-allreduce/collectives.cu:9:10: fatal error: mpi.h: No such file or directory
#include <mpi.h>
^~~~~~~
compilation terminated.
CMakeFiles/Coll.dir/build.make:62: recipe for target 'CMakeFiles/Coll.dir/collectives.cu.o' failed
make[2]: *** [CMakeFiles/Coll.dir/collectives.cu.o] Error 1
CMakeFiles/Makefile2:147: recipe for target 'CMakeFiles/Coll.dir/all' failed
make[1]: *** [CMakeFiles/Coll.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
Я проверил каталог установки и обнаружил, что в папке openmpi нет каталога include. Как я могу это исправить?
Более того, на другой машине я повторяю тот же процесс, чтобы установить Openmpi с помощью conda. После этого я даже не могу найти библиотеку MPI.