首页 > 解决方案 > 如何将 nvprof 应用于 Kinetica?

问题描述

有人可以给我一个关于如何将 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]} )"
...

当然,我停止并重新启动了这些。欢迎任何评论。

标签: nvprofkinetica

解决方案


我发现可以通过如下编辑 /opt/gpudb/core/bin/gpudb 来应用 nvprof。

[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 &
...

推荐阅读