如何使用 Visual Profiler 分析 PyCuda 代码?

Posted

技术标签:

【中文标题】如何使用 Visual Profiler 分析 PyCuda 代码?【英文标题】:How to profile PyCuda code with the Visual Profiler? 【发布时间】:2011-07-28 10:19:00 【问题描述】:

当我创建一个新会话并告诉 Visual Profiler 启动我的 python/pycuda 脚本时,我收到以下错误消息:Execution run #1 of program '' failed, exit code: 255

这些是我的偏好:

启动:python "/pathtopycudafile/mysuperkernel.py" 工作目录:"/pathtopycudafile/mysuperkernel.py" 参数:[empty]

我在 Ubuntu 10.10 下使用 CUDA 4.0。 64位。分析编译的示例有效。

附言我知道 SO question How to profile PyCuda code in Linux?,但似乎是一个不相关的问题。

小例子

pycudaexample.py:

import pycuda.autoinit
import pycuda.driver as drv
import numpy

from pycuda.compiler import SourceModule

mod = SourceModule("""
__global__ void multiply_them(float *dest, float *a, float *b)

  const int i = threadIdx.x;
  dest[i] = a[i] * b[i];

""")

multiply_them = mod.get_function("multiply_them")

a = numpy.random.randn(400).astype(numpy.float32)
b = numpy.random.randn(400).astype(numpy.float32)

dest = numpy.zeros_like(a)
multiply_them(
        drv.Out(dest), drv.In(a), drv.In(b),
        block=(400,1,1), grid=(1,1))

pycuda.autoinit.context.detach()

示例设置

错误信息

【问题讨论】:

这根本不是无关的,答案正是需要做的。 CUDA 上下文需要在执行结束时显式销毁,以便保存配置文件数据的缓冲区被刷新并写入磁盘。我一直在用 hash bangs 分析可执行文件中的 python 代码,只要在退出之前调用pycuda.autoinit.context.detach(),它就可以工作。 How to profile PyCuda code in Linux?的可能重复 @talonmies,我在脚本末尾添加了 pycuda.autoinit.context.detach(),但仍然出现相同的错误消息。“程序的执行运行 #1”失败,退出代码: 255' 在您的问题中发布一个最小的复制案例,有人可能有时间看看它。 【参考方案1】:

您为计算分析器指定可执行文件的方式有问题。如果我在您发布的代码的顶部放了一条井号线:

#!/usr/bin/env python

然后给python文件可执行权限,计算分析器运行代码没有抱怨,我得到这个:

【讨论】:

【参考方案2】:

您可以使用两种方法。

启动脚本解释器

Launch    python
Arguments "/pathtopycudafile/mysuperkernel.py"

启动可执行脚本

Launch    "/pathtopycudafile/mysuperkernel.py"
Arguments [blank]

mysuperkernel.py must be executable (chmod +x)
mysuperkenrel.py must have a #! to specify the path to the interpreter

查看@talonmies 的回答

【讨论】:

以上是关于如何使用 Visual Profiler 分析 PyCuda 代码?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Visual Studio 2012 Profiler 分析 C++

如何使用 NVIDIA Visual Profiler 测量每个扭曲的银行冲突?

解释 NVIDIA Visual Profiler 输出

Visual Studio 2008 Profiler - C++ 库问题

从命令行与 Visual Studio 运行 Profiler

Cuda Visual Profiler 未指定的启动失败