nvprof 正在崩溃,因为它将一个非常大的文件写入 /tmp/ 并用完磁盘 space

nvprof is crashing as it writes a very large file to /tmp/ and runs out of disk space

如何解决 运行 在可用 space 相对较少的磁盘上时发生的 nvprof 崩溃?

具体来说,在分析我的 cuda 内核时,我使用了以下两个命令:

# Generate the timeline
nvprof -f -o ~/myproj/profiling/timeline-`date -I`.out ~/myproj/build/myexe
# Generate profiling data
nvprof -f --kernels ::mykernel:1 --analysis-metrics -o ~/myproj/profiling/analysis-metrics-`date -I`.out ~/myproj/build/myexe

第一个 nvprof 命令工作正常。第二个 nvprof 需要将 12GB 的临时文件写入 /tmp 才能继续。由于我的 38GB 云盘只有 6GB 可用,nvprof 崩溃了。假设我无法释放更多磁盘 space,我该如何解决这个问题?

旁注: 它与诊断问题几乎无关,但 nvprof 报告了 Error: Application received signal 7,即 "Bus error (bad memory access)"(有关详细信息,请参阅 http://man7.org/linux/man-pages/man7/signal.7.html)。

可以通过设置 TMPDIR 环境变量来指示 nvprof 使用不同的临时目录。这很有用,因为从 Linux 内核 2.6 开始,您很有可能在 /dev/shm 有可用的 RAM 磁盘(有关更多信息,请参阅 https://superuser.com/a/45509/363816)。因此,在 [bash] 脚本的开头添加以下内容可能会 work-around 您的问题。

export TMPDIR=/dev/shm