nvprof - 如何将 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]} )"
...
当然,我停止并重新启动了这些。欢迎任何评论。
解决方案
我发现可以通过如下编辑 /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 &
...
推荐阅读
- django - 如何在 django 中将参数传递给基于类的视图?
- reactjs - 如何根据请求路由中的参数实现条件路由?
- c - 如何使用数组指针打印结构成员?
- google-cloud-storage - 是否可以通过 Digital Ocean Spaces(S3 兼容)每天使用 Google Cloud Storage 备份?
- wordpress - 带有 Timber/Twigg 模板的 WordPress 前端的 TinyMCE
- sql-server - 选择具有不同列值的不同 ID
- python - python的问题:未定义的符号:sqmI
- qemu - U-Boot with OpenSBI on HiFive Unleashed in QEMU: Store/AMO access fault
- javascript - 在 React 应用程序的 Util 文件中初始化 Google 地图
- android-studio - 为什么我没有收到错误并且应用程序无法打开