PyCUDA如何在启动内核时获得每个线程使用的寄存器数量?

时间:2018-03-31 12:46:54

标签: cuda pycuda

我有一个内核,如何在启动内核时获得每个线程使用的寄存器数量?我的意思是以PyCuda的方式。

一个简单的例子是:

__global__ 
void 
make_blobs(float* matrix, float2 *pts, int num_pts, float sigma, int rows, int cols) {
    int x = threadIdx.x + blockIdx.x * blockDim.x;
    int y = threadIdx.y + blockIdx.y * blockDim.y;
    if (x < cols && y < rows) {
        int  idx = y*cols + x;
        float temp = 0.f;
        for (int i = 0; i < num_pts; i++) {
            float x_0 = pts[i].x;
            float y_0 = pts[i].y;
            temp += exp(-(pow(x - x_0, 2) + pow(y - y_0, 2)) / (2 * sigma*sigma));
        }
        matrix[idx] = temp;
        }
    }

如果使用的实数已超过最大值,是否可以在不使程序崩溃的情况下获取数字?

以上是可以的,它不会超过我机器的最大值。我只想以方便的方式获得号码。谢谢!

1 个答案:

答案 0 :(得分:2)

PyCuda已经将此作为Cuda函数对象的一部分提供。该属性称为histeq

以下是一个显示如何使用它的小例子:

pycuda.driver.Function.num_regs

请注意,您不需要使用SourceModule。您也可以从例如加载模块。一个立方体文件。有关详情,请参阅documentation