NVSHMEM配置

Alice Yu Lv3

环境说明

  • Debian
  • 单机两卡两个NUMA节点
  • 我大部分使用的是源码编译,一开始没有给我分配sudo权限,后来必须要安装一个驱动,因此后面具有了sudo权限

依赖项:GDRCopy

  • 从源码安装
    1
    2
    3
    4
    5
    `sudo apt install nvidia-dkms-<your-nvidia-driver-version>`
    make prefix=<install-to-this-location> CUDA=<cuda-install-top-dir> all install
    # 比如make prefix=$HOME/gdrcopy CUDA=/usr/local/cuda all install
    sudo ./insmod.sh
    # insmod.sh用于加载内核模块,会把gdrdrv驱动先删掉再重新加载

依赖项:Hydra process manager

  • 在nvshmem_src里面有一个脚本install_hydra.sh
    1
    2
    3
    ./install_hydra.sh <download_path> <install_path>
    # 比如 ./install_hydra.sh /home/cyu/hydra_src /home/cyu/hydra
    export HYDRA_HOME=<install_path>

NVSHMEM安装配置

  • 使用cmake
  • 进入nvshmem_src目录
    1
    2
    mkdir build
    cd build
  • 进行cmake configure,把要设置的环境变量写到-D后面
    1
    cmake -S .. -B .  -DNVSHMEM_USE_GDRCOPY=1   -DNVSHMEM_MPI_SUPPORT=1  -DGDRCOPY_HOME=$HOME/gdrcopy   -DMPI_HOME=/usr/mpi/gcc/openmpi-4.1.7rc1   -DMPI_INCLUDE_DIR=/usr/mpi/gcc/openmpi-4.1.7rc1/include   -DMPI_LIBRARY=/usr/mpi/gcc/openmpi-4.1.7rc1/lib/libmpi.so -DNVSHMEM_IBGDA_SUPPORT=1 -DNVSHMEM_IBRC_SUPPORT=0
  • 编译
    1
    make -j (nproc)
  • 测试,留在nvshmem_src/build目录,下面展示测试shmem_put_bw
    1
    $HYDRA_HOME/bin/nvshmrun -n 2 -ppn 2 ./perftest/device/pt-to-pt/shmem_put_bw -b 8 -e 8388608 -c 256