Nvidia 视觉分析器错误:无法创建分析文件
Posted
技术标签:
【中文标题】Nvidia 视觉分析器错误:无法创建分析文件【英文标题】:Nvidia Visual profiler Error: Cannot create profiling file 【发布时间】:2017-10-12 15:27:38 【问题描述】:我是 nvprof 的新用户,当我尝试使用 nvprof 分析我的代码时出现错误。我在我的代码中添加了一些 OpenACC 指令。我使用的cuda工具包是Cuda8.0。我的代码是用 fortran90+OpenMPI 编写的。我使用 16 个内核进行并行计算。这是我用来提交代码的脚本:
#!/bin/bash -l
#
#SBATCH --nodes=1
#SBATCH --ntasks=16
#SBATCH --ntasks-per-node=24
#SBATCH --ntasks-per-core=2
#SBATCH --cpus-per-task=1
#SBATCH --constraint=gpu
#SBATCH --time=24:00:00
#SBATCH --account=s807
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
export CRAY_CUDA_MPS=1
export TMPDIR=/scratch/snx3000/guow/Incompact3d_GPU/test1
export PGI_ACC_TIME=1
set -ex
# set some parameters
OUT=log.txt
#WMIN=1400
NP=16
# tasks: $SLURM_NTASKS
# tasks-per-node: $SLURM_NTASKS_PER_NODE
# cpus-per-task: $SLURM_CPUS_PER_TASK
srun nvprof -o nvprof.out ./incompact3d $WMIN >> $OUT
作业在运行几秒钟后终止,我收到以下错误消息:
+ OUT=log.txt
+ NP=16
+ srun nvprof -o nvprof.out ./incompact3d
==20144== NVPROF is profiling process 20144, command: ./incompact3d
==20148== NVPROF is profiling process 20148, command: ./incompact3d
==20140== NVPROF is profiling process 20140, command: ./incompact3d
==20133== NVPROF is profiling process 20133, command: ./incompact3d
==20134== NVPROF is profiling process 20134, command: ./incompact3d
==20150== NVPROF is profiling process 20150, command: ./incompact3d
==20146== NVPROF is profiling process 20146, command: ./incompact3d
==20128== NVPROF is profiling process 20128, command: ./incompact3d
==20154== NVPROF is profiling process 20154, command: ./incompact3d
==20156== NVPROF is profiling process 20156, command: ./incompact3d
==20152== NVPROF is profiling process 20152, command: ./incompact3d
==20136== NVPROF is profiling process 20136, command: ./incompact3d
==20130== NVPROF is profiling process 20130, command: ./incompact3d
==20158== NVPROF is profiling process 20158, command: ./incompact3d
==20138== NVPROF is profiling process 20138, command: ./incompact3d
==20142== NVPROF is profiling process 20142, command: ./incompact3d
==20146== Error: Cannot create profiling file: /scratch/snx3000/guow/Incompact3d_GPU/test2_OpenAcc/nvprof.out
==20142== Error: Cannot create profiling file: /scratch/snx3000/guow/Incompact3d_GPU/test2_OpenAcc/nvprof.out
==20138== Error: Cannot create profiling file: /scratch/snx3000/guow/Incompact3d_GPU/test2_OpenAcc/nvprof.out
==20133== Error: Cannot create profiling file: /scratch/snx3000/guow/Incompact3d_GPU/test2_OpenAcc/nvprof.out
==20134== Error: Cannot create profiling file: /scratch/snx3000/guow/Incompact3d_GPU/test2_OpenAcc/nvprof.out
==20136== Error: Cannot create profiling file: /scratch/snx3000/guow/Incompact3d_GPU/test2_OpenAcc/nvprof.out
==20156== Error: Cannot create profiling file: /scratch/snx3000/guow/Incompact3d_GPU/test2_OpenAcc/nvprof.out
srun: First task exited 30s ago
srun: tasks 0,4,6-7,9-13: running
srun: tasks 1-3,5,8,14-15: exited
srun: Terminating job step 3892463.0
slurmstepd: error: *** STEP 3892463.0 ON nid04439 CANCELLED AT 2017-10-12T15:04:00 ***
srun: Job step aborted: Waiting up to 32 seconds for job step to finish.
srun: error: nid04439: tasks 0,4,6-7,9-13: Killed
srun: Terminating job step 3892463.0
生成了一个 nvprof.out 文件,但是当我使用命令“nvvp nvprof.out”检查它时没有显示任何内容。你以前遇到过这种情况吗?任何建议将不胜感激!
【问题讨论】:
【参考方案1】:尝试使用命令:
srun nvprof -o nvprof.%p.out ./incompact3d $WMIN >> $OUT
"%p" 将填写每个 MPI 等级的进程 ID,因此每个等级将其配置文件输出到不同的文件。否则,所有队伍都在尝试使用相同的文件,这可能会导致问题。
【讨论】:
嗨,垫子,感谢您的回复。当我添加 %p.它可以生成 16 个输出文件。但是当我将这 16 个输出文件导入 nvprof 时,GPU 详细信息、CPU 详细信息标签中没有显示任何内容。而且我只能看到 OpenACC 的时间线行。在我单击“检查 GPU 使用情况”时的分析标签中,结果显示“无 GPU 设备”。但是代码是在 CPU 和 GPU 上运行的。您能告诉我如何显示 GPU、CPU 详细信息和其他时间线信息吗? 如果你的代码在 GPU 上运行,那么应该有 GPU 信息。但是,如果节点没有安装“libcupti.so”,这可以解释为什么缺少信息。 CUPTI 是与设备接口的分析器库。另一种可能性是您没有为您正在使用的设备构建 OpenACC 代码。您将哪些“-ta”选项传递给编译器?你用的是什么设备?对于 CPU profiling,您需要在 nvprof 中添加“--cpu-profiling on”选项,或者使用默认启用 CPU profiling 的 pgprof。 感谢您的回复!我使用的 -ta 选项是 -ta=tesla:cuda8.0。我在 Cray XC50 上运行我的模拟。计算节点是 Intel® Xeon® E5-2690 v3 @ 2.60GHz(12 核,64GB RAM)和 NVIDIA® Tesla® P100 16GB。我添加了“--cpu-profiling on”选项,并使用单核进行计算。现在我可以看到 CPU 分析了。 "-ta=tesla:cuda8.0" 将 P100 作为默认目标设备之一,所以你很好。您能否添加“-Minfo=accel”并查看编译器反馈消息以查看编译器是否正在生成设备内核?另外,尝试设置环境变量“PGI_ACC_TIME=1”,然后在没有 nvprof 的情况下运行。这应该会产生一个简单的 GPU 配置文件。如果您只看到从主机测量的“经过时间”,但没有看到通过 libcupti 测量的“设备时间”,那么我们就会知道这是一个 libcupti 问题。 嗨,垫子。我添加 -Minfo=accel ,我可以看到编译器的反馈说“加速器内核生成”。当我设置 PGI_ACC_TIME=1 时,我可以看到“经过的时间”,但在“内核启动 xxxx 次”的语句之后看不到“device_time”。但是设备时间显示在语句“数据复制传输:xxxxxx”和“数据复制传输:xxxxxx”之后。也许正如你所说,这是一个 libcupti 问题。以上是关于Nvidia 视觉分析器错误:无法创建分析文件的主要内容,如果未能解决你的问题,请参考以下文章