NVIDIA HPC SDK環境でnccl-testsをビルドする場合は、CUDA、NCCL、MPIの各パスを正しく設定したうえでmakeを実行します。ここでは、必要な環境変数の設定とビルド手順を簡潔にまとめます。
手順概要
まず、NVIDIA HPC SDKのインストール先を基準に、CUDAとNCCLの場所を指定します。続いて、NCCLに同梱されているHPC-XのOpen MPIをMPI_HOMEとして設定します。
export CUDA_HOME="$NVHPC_ROOT/cuda"
export NCCL_HOME="$NVHPC_ROOT/comm_libs/nccl"
export MPI_HOME="$(readlink -f "$NCCL_HOME")/../hpcx/latest/ompi"
make -kj MPI=1 CUDA_HOME="$CUDA_HOME" NCCL_HOME="$NCCL_HOME" MPI_HOME="$MPI_HOME"
各環境変数の意味
CUDA_HOME
CUDA_HOMEには、NVIDIA HPC SDK内のCUDAディレクトリを指定します。
export CUDA_HOME="$NVHPC_ROOT/cuda"
これにより、ビルド時にCUDAのヘッダやライブラリを正しく参照できます。
NCCL_HOME
NCCL_HOMEには、HPC SDKに含まれるNCCLライブラリの場所を指定します。
export NCCL_HOME="$NVHPC_ROOT/comm_libs/nccl"
nccl-testsはこのパスを使ってNCCL本体を見つけます。
MPI_HOME
MPI_HOMEには、NCCLの周辺ライブラリとして配置されているHPC-XのOpen MPIを指定します。
export MPI_HOME="$(readlink -f "$NCCL_HOME")/../hpcx/latest/ompi"
readlink -fを使うことで、シンボリックリンクを解決した実体パスを基準に、適切なMPIディレクトリを参照できます。
ビルドコマンド
環境変数を設定したあと、以下のコマンドでnccl-testsをビルドします。
make -kj MPI=1 CUDA_HOME="$CUDA_HOME" NCCL_HOME="$NCCL_HOME" MPI_HOME="$MPI_HOME"
コマンドのポイント
MPI=1MPI対応でビルドします。CUDA_HOME=...CUDAの参照先を明示します。NCCL_HOME=...NCCLの参照先を明示します。MPI_HOME=...使用するMPI実装の場所を指定します。-kj並列ビルドを有効にします。
まとめ
NVIDIA HPC SDK環境でnccl-testsをビルドするには、CUDA_HOME、NCCL_HOME、MPI_HOMEを正しく設定し、その値をmakeに渡すことが重要です。特に、MPIにはNCCL周辺に含まれるHPC-XのOpen MPIを指定する点がポイントです。これにより、HPC SDK環境に合わせた形でnccl-testsをスムーズにビルドできます。