Python 如何使用可视化分析器分析PyCuda代码?

Python 如何使用可视化分析器分析PyCuda代码?,python,profiling,cuda,pycuda,Python,Profiling,Cuda,Pycuda,当我创建新会话并告诉可视化探查器启动python/pycuda脚本时,我收到以下错误消息:程序“”的执行运行#1失败,退出代码:255 以下是我的偏好: 启动:python”/pathtopycudafile/mysuperkernel.py“ 工作目录:“/pathtopycudafile/mysuperkernel.py” 参数:[empty] 我在Ubuntu 10.10下使用CUDA 4.0。64位。分析编译的示例是有效的 p、 我知道有这么一个问题,但似乎是一个无关的问题 最小示例

当我创建新会话并告诉可视化探查器启动python/pycuda脚本时,我收到以下错误消息:
程序“”的执行运行#1失败,退出代码:255

以下是我的偏好:

  • 启动:
    python”/pathtopycudafile/mysuperkernel.py“
  • 工作目录:
    “/pathtopycudafile/mysuperkernel.py”
  • 参数:
    [empty]
我在Ubuntu 10.10下使用CUDA 4.0。64位。分析编译的示例是有效的

p、 我知道有这么一个问题,但似乎是一个无关的问题

最小示例

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()
示例设置

错误消息


指定compute profiler可执行文件的方式有问题。如果我在您发布的代码顶部添加一行hash-bang:

#!/usr/bin/env python
然后授予python文件可执行权限,compute profiler会毫无怨言地运行代码,我得到以下结果:


您可以使用两种方法

启动脚本解释器

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 answer

这一点也不无关,答案正是我们需要做的。CUDA上下文需要在执行结束时显式销毁,以便刷新保存配置文件数据的缓冲区并将其写入磁盘。我总是在可执行文件中用hash-bang分析python代码,只要在退出之前调用
pycuda.autoinit.context.detach()
。可能是@talonmies的重复,我在脚本末尾添加了pycuda.autoinit.context.detach(),但仍然会出现相同的错误消息。'Execution run#1 of program''失败,退出代码:255'在你的问题中发布一个最小的复制案例,有人可能有时间来看看它。