微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

防止启用 CUDA 的 MPI 检查 CUDA 设备

如何解决防止启用 CUDA 的 MPI 检查 CUDA 设备

我们集群上的 OpenMPI 4.0.5 是用 CUDA 支持构建的,但我想在不需要 CUDA 的情况下对 pnetcdf 进行基准测试。由于我想做一些可以从节点的 1/4 开始的测试运行,并且我的测试不会使用 GPU,所以我想问一下是否有办法抑制 CUDA 设备的 MPI 检查.因为当我在没有 GPU 的情况下简单地获得 SLURM 分配时,仅凭这一点我就会得到很多错误

这些错误来自 hwloc,可以通过 HWLOC_HIDE_ERRORS=1 抑制,但我想知道是否有更具体的方法

重现步骤:

frontend$ salloc -n 16 -t 8:00:00 -A k20200
node$ exec bash -l
node$ module load gcc openmpi
node$ mpicc -o /tmp/hello ~/usr/src/helloworld_mpi.c
node$ srun -n 1 /tmp/hello
CUDA: Failed to get number of devices with cudaGetDeviceCount(): no CUDA-capable device is detected
Hello World!,I'm rank 0 of 1!
node$ HWLOC_HIDE_ERRORS=1 srun -n 1 /tmp/hello
Hello World!,I'm rank 0 of 1!
node$ logout

上面使用的示例代码如下,但任何不使用 CUDA 的程序在本练习中同样有用

#include <stdio.h>
#include <stdlib.h>

#include <mpi.h>

#define xmpi(rc)                                  \
  do {                                            \
    int err = (rc);                               \
    if (err != MPI_SUCCESS) {                     \
      char msg[MPI_MAX_ERROR_STRING + 1];         \
      int msg_len;                                \
                                                  \
      if (MPI_Error_string(err,msg,&msg_len)    \
          == MPI_SUCCESS){                        \
        msg[msg_len] = '\0';                      \
                                                  \
        fprintf(stderr,\
                "Problem in MPI call: %d = %s\n",\
                err,msg);                        \
        MPI_Abort(MPI_COMM_WORLD,1);             \
      }                                           \
    }                                             \
  } while (0)

int
main(int argc,char *argv[])
{
  xmpi(MPI_Init(&argc,&argv));
  int rank,size;
  xmpi(MPI_Comm_rank(MPI_COMM_WORLD,&rank));
  xmpi(MPI_Comm_size(MPI_COMM_WORLD,&size));
  printf("Hello World!,I'm rank %d of %d!\n",rank,size);
  xmpi(MPI_Finalize());
  return EXIT_SUCCESS;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。