&引用;设备功能maxrregcount“;编译cuda代码时的消息

&引用;设备功能maxrregcount“;编译cuda代码时的消息,cuda,cublas,dynamic-parallelism,Cuda,Cublas,Dynamic Parallelism,我正在尝试编写一个代码,在内核中执行多个向量点积。我正在使用库中的函数执行向量点积。这是我的代码: using namespace std; __global__ void ker(float * a, float * c,long long result_size,int n, int m) { float *sum; int id = blockIdx.x*blockDim.x+threadIdx.x; float *out1,*out2; int k; if(id<result_s

我正在尝试编写一个代码,在内核中执行多个向量点积。我正在使用库中的函数执行向量点积。这是我的代码:

using namespace std;
__global__ void ker(float * a, float * c,long long result_size,int n, int m)
{
float *sum;
int id = blockIdx.x*blockDim.x+threadIdx.x;
float *out1,*out2;
int k;

if(id<result_size)
        {
                cublasHandle_t handle;
                cublasCreate(&handle);
                out1 = a + id*m;
                for(k=0;k<n;k++)
                {
                        out2 =a + k*m;
                        cublasSdot(handle, m,out1,1,out2,1,sum);
                        c[id*n + k]= *sum;
                }
        }
}
int main()
{
int n=70000,m=100;
long result_size=n;
result_size*=n;
float * dev_data,*dev_result;
float * data = new float [n*m];
float * result = new float [result_size];
for (int i = 0; i< n; i++)
        for(int j = 0; j <m;j++)
        {
           data[i*m+j]=rand();
        }

cudaMalloc ((void**)&dev_data,sizeof(float)*m*n);
cudaMalloc ((void**)&dev_result,sizeof(float)*result_size);
cudaMemcpy( dev_data, data, sizeof(float) * m* n, cudaMemcpyHostToDevice);
int block_size=1024;
int grid_size=ceil((float)result_size/(float)block_size);
ker<<<grid_size,block_size>>>(dev_data,dev_result,result_size,n,m);
cudaDeviceSynchronize();
cudaMemcpy(result, dev_result, sizeof(float)*(result_size), cudaMemcpyDeviceToHost);
return 0;
}
但我得到了以下信息:

ptxas info    : 'device-function-maxrregcount' is a BETA feature

有人能告诉我该怎么处理这条消息吗?

正如Talonmes所说,这条消息是信息性的

NVCC的maxregcount选项用于指定内核及其使用的所有设备函数可以使用的寄存器限制:

如果内核被限制为具有launch_bounds属性或--maxrregcount选项的特定数量的寄存器,那么内核调用的所有函数使用的寄存器不得超过该数量;如果它们超过了限制,那么将给出一个链接错误

见:

似乎设备函数maxregcount仅用于覆盖设备函数的此值。因此,您可以在内核和设备函数上拥有不同的最大允许寄存器数量

对于设备函数,此选项覆盖由--maxregcount指定的值


来源:

正如talonmies所说,这条消息是信息性的

NVCC的maxregcount选项用于指定内核及其使用的所有设备函数可以使用的寄存器限制:

如果内核被限制为具有launch_bounds属性或--maxrregcount选项的特定数量的寄存器,那么内核调用的所有函数使用的寄存器不得超过该数量;如果它们超过了限制,那么将给出一个链接错误

见:

似乎设备函数maxregcount仅用于覆盖设备函数的此值。因此,您可以在内核和设备函数上拥有不同的最大允许寄存器数量

对于设备函数,此选项覆盖由--maxregcount指定的值


来源:

什么都没有。这只是一个信息性的问题。这只是一种信息
ptxas info    : 'device-function-maxrregcount' is a BETA feature