有人可以给我一个关于如何将 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]} )"
...
当然,我停止并重新启动了这些。 欢迎任何评论。
我发现nvprof可以通过编辑/opt/gpudb/core/bin/gpudb来应用,如下所示。
[root@localhost ~]# vi /opt/gpudb/core/bin/gpudb
...
# nohup $HOST_MANAGER_CMD >> $HOST_MANAGER_LOG_FILENAME 2>&1 &
nohup /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 $HOST_MANAGER_CMD >> $HOST_MANAGER_LOG_FILENAME 2>&1 &
...