2017-10-12 38 views
0

私はnvprofの新規ユーザーです.NVprofを使用してコードをプロファイルしようとしたときにエラーが発生しました。自分のコードにOpenACCのディレクティブをいくつか追加しました。私が使ったcudaツールキットはCuda8.0です。私のコードはfortran90 + OpenMPIで書かれています。私は並列計算に16コアを使用しました。ここで私は、コードを提出するために使用するスクリプトは次のとおりです。Nvidia Visualプロファイラエラー:プロファイリングファイルを作成できません

#!/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」コマンドを使用して確認すると何も表示されません。これまでにこのような状況に会ったことがありますか?任意の提案をいただければ幸いです!

答えて

2

は、コマンドを使用してみてください:

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

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

+0

こんにちはマット、ご返信ありがとうございます。 %pを追加すると動作します。 16の出力ファイルを生成することができます。しかし、これらの16の出力ファイルをnvprofにインポートすると、GPUの詳細、つまりCPUの詳細ラベルには何も表示されません。そして、私はOpenACCのタイムラインの列しか見ることができません。分析ラベルで「GPU使用状況を調べる」をクリックすると、結果に「GPUデバイスがありません」と表示されます。しかし、コードはCPUとGPU上で実行されます。 GPU、CPUの詳細、その他のタイムライン情報を表示する方法を教えてください。 –

+0

コードをGPUで実行している場合は、GPU情報が必要です。しかし、ノードに "libcupti.so"がインストールされていないと、情報が失われている理由を説明することができます。 CUPTIは、デバイスとインターフェイスするプロファイラライブラリです。もう1つの可能性は、使用しているデバイスのOpenACCコードを作成していないことです。どのような "-ta"オプションをコンパイラに渡しましたか?どのようなデバイスを使用していますか? CPUプロファイリングの場合は、nvprofに "--cpu-profiling on"オプションを追加するか、デフォルトでCPUプロファイリングを有効にするpgprofを使用する必要があります。 –

+0

あなたの返信ありがとう! -taオプションは-ta = tesla:cuda8.0です。私はCray XC50でシミュレーションを実行しています。計算ノードはIntel®Xeon®E5-2690 v3 @ 2.60GHz(12コア、64GB RAM)およびNVIDIA®Tesla®P100 16GBです。私は "--cpu-profilling on"オプションを追加し、私は計算するために単一のコアを使用しました。今度はCPUプロファイリングを見ることができます。 –

関連する問題