我有一个内核,如何在启动内核时获得每个线程使用的寄存器数量?我的意思是以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;
}
}
如果使用的实数已超过最大值,是否可以在不使程序崩溃的情况下获取数字?
以上是可以的,它不会超过我机器的最大值。我只想以方便的方式获得号码。谢谢!
答案 0 :(得分:2)
PyCuda已经将此作为Cuda函数对象的一部分提供。该属性称为histeq
。
以下是一个显示如何使用它的小例子:
pycuda.driver.Function.num_regs
请注意,您不需要使用SourceModule。您也可以从例如加载模块。一个立方体文件。有关详情,请参阅documentation。