有人可以给我一个关于如何将 nvprof 应用于 Kinetica 的提示吗?
1) 我看到位于 GPU 上的 Kinetica 进程的名称是 gpudb_cluster_cuda,其父进程是 gpudb_host_manager。我发现 gpudb_host_manager 是由 /etc/rc.d/init.d/gpudb_host_manager 启动的。
2)因此我将其修改如下。这应该有效 - 即使对于它的子进程也是如此。但事实并非如此。没有为 gpudb_cluster_cuda 生成分析数据。
# vi /etc/rc.d/init.d/gpudb_host_manager
...
# $START_PROG"$GPUDB_EXE start-host-manager 2>&1 | tee -a ${STARTUP_LOG}; ( exit \${PIPESTATUS[0]} )"
$START_PROG"/usr/local/cuda-9.2/bin/nvprof --log-file /tmp/nvprof/%p.txt --export-profile /tmp/nvprof/%p.nvvp --print-gpu-trace --profile-child-processes $GPUDB_EXE start-host-manager 2>&1 | tee -a ${STARTUP_LOG}; ( exit \${PIPESTATUS[0]} )"
...
我将 nvprof 应用于 /etc/rc.d/init.d/gpudb,它会产生一些痕迹,但它根本不使用 GPU。
# vi /etc/rc.d/init.d/gpudb
...
# $START_PROG"$GPUDB_EXE start 2>&1 | tee -a ${STARTUP_LOG}; ( exit \${PIPESTATUS[0]} )"
$START_PROG"/usr/local/cuda-9.2/bin/nvprof --log-file /tmp/nvprof/%p.txt --export-profile /tmp/nvprof/%p.nvvp --print-gpu-trace --profile-child-processes $GPUDB_EXE start 2>&1 | tee -a ${STARTUP_LOG}; ( exit \${PIPESTATUS[0]} )"
...
当然,我停止并重新启动了这些。欢迎任何评论。