0

私は 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」を使用して確認しても何も表示されません。このような状況に遭遇したことはありませんか?どんな提案でも大歓迎です!

4

1 に答える 1

2

次のコマンドを使用してみてください。

srun nvprof -o nvprof.%p.out ./incompact3d $WMIN >> $OUT

「%p」には各 MPI ランクのプロセス ID が入力されるため、各ランクはそのプロファイルを異なるファイルに出力します。そうしないと、すべてのランクが同じファイルを使用しようとするため、問題が発生する可能性があります。

于 2017-10-12T17:38:45.077 に答える