Ubuntu 统一内存分析失败

Ubuntu 统一内存分析失败,ubuntu,cuda,ubuntu-16.04,nsight,Ubuntu,Cuda,Ubuntu 16.04,Nsight,我试图在Ubuntu16.04上评测cuda代码,该版本有cuda 8.0,但返回“无法评测应用程序。统一内存评测失败”。我试着从terminal和Nist Eclipe进行分析。代码正在编译和运行,但无法进行分析 代码- cusparseHandle\u t handle; cusparseCreate(&handle); cusparseSafeCall(cusparseCreate(&handle)); //设置参数 常数int n_i=10; 常数int d=18; 常数int n_t=

我试图在Ubuntu16.04上评测cuda代码,该版本有cuda 8.0,但返回“无法评测应用程序。统一内存评测失败”。我试着从terminal和Nist Eclipe进行分析。代码正在编译和运行,但无法进行分析

代码-

cusparseHandle\u t handle;
cusparseCreate(&handle);
cusparseSafeCall(cusparseCreate(&handle));
//设置参数
常数int n_i=10;
常数int d=18;
常数int n_t=40;
常数int n_tau=2;
常数int n_k=10;
float*data=generate_matrix3_1(d,n_i,n_t);
//float*data=get_data1(d,n_i,n_t);
float*a=生成矩阵3\u 1(n\u i,n\u k,n\u tau);
float*b=稀疏生成矩阵1(n_k,d,0.5);
float*c=稀疏生成矩阵1(n_k,d,0.5);
float*previous_a=generate_matrix3_1(n_i,n_k,n_tau);
float*previous_b=稀疏生成矩阵1(n_k,d,0.1);
float*previous_c=sparse_generate_matrix1(n_k,d,0.1);
//计算数据范数
浮动标准_数据=0;
for(int i=0;i
用于编译代码的命令-

nvcc-lcusparse main.cu-o hello.out

轮廓-

nvprof-o prof./hello.out

错误-

==13621==NVPROF正在分析进程13621,命令:./hello.out ======错误:统一内存分析失败


有人能帮我吗?

也有同样的错误,只是必须使用root权限运行探查器,例如
sudo nvp
sudo nvp
我也遇到同样的错误。但即使我添加了
sudo
特权,错误仍然存在。终端返回未找到的
sudo:nvprof:command


试试这个命令,它对我有效
nvprof——统一内存评测关闭/hello.out

修复此问题不需要root访问权限。因为您使用的是Cuda 8.0,所以应该可以正常工作。问题在于“iBUS”配置。您只需删除文件夹/home/[user]/.config/ibus/bus,问题就会解决。

请提供一个简短完整的测试用例。您试图分析的程序、编译方式、用于分析该程序的完整命令以及完整的输出消息。更新了问题您应该将cuda路径添加到根目录的路径,或者在sudo like=“sudo/usr/local/cuda-8.0/bin/nvpro”之后给出确切的路径一些用户建议:*如果您从terminal:sudo:nvprof:command not found收到此错误,您可以尝试sudo-su*
/usr/local/cuda/bin/nvprof python file.py
对我来说也很合适,没有
sudo
sudo/usr/local/cuda/bin/nvprof./cuda\u app>/log/stdout.txt 2>/log/gpu\u log.txt
,关闭统一内存评测对于那些有兴趣评测统一内存使用情况的人来说可能不是个好主意。还有其他选择吗?
cusparseHandle_t handle;
cusparseCreate(&handle);
cusparseSafeCall(cusparseCreate(&handle));

//set the parameters
const int n_i = 10;
const int d = 18;
const int n_t = 40;
const int n_tau = 2;
const int n_k = 10;

float *data = generate_matrix3_1(d, n_i, n_t);
//float* data = get_data1(d, n_i,n_t);
float* a = generate_matrix3_1(n_i,n_k,n_tau);
float* b = sparse_generate_matrix1(n_k,d,0.5);
float* c = sparse_generate_matrix1(n_k,d,0.5);

float* previous_a = generate_matrix3_1(n_i,n_k,n_tau);
float* previous_b = sparse_generate_matrix1(n_k,d,0.1);
float* previous_c = sparse_generate_matrix1(n_k,d,0.1);

// calculate norm of data
float norm_data = 0;
for (int i = 0; i < n_i; i++)
{
    for (int t = n_tau; t < n_t; t++)
    {
        for (int p = 0; p < d; p++)
        {
            norm_data = norm_data + ((data[p*n_i*n_t + i*n_t + t])*(data[p*n_i*n_t + i*n_t + t]));
        }
    }
}

// set lambda and gamma parameter
float lambda = 0.0001;
float gamma_a = 2;
float gamma_b = 3;
float gamma_c = 4;

float updated_t = 1;
float updated_t1 = 0;

float rel_error = 0;
int loop = 1;
float objective = 0;

// create sparse format for the data
float **h_data = new float*[1];
int **h_data_RowIndices = new int*[1];
int **h_data_ColIndices = new int*[1];
int nnz_data = create_sparse_MY(data,d,n_i*n_t,h_data,h_data_RowIndices,h_data_ColIndices);

// transfer sparse data to device memory
int *d_data_RowIndices;  (cudaMalloc(&d_data_RowIndices, (d+1) * sizeof(int)));
(cudaMemcpy(d_data_RowIndices, h_data_RowIndices[0], (d+1) * sizeof(int), cudaMemcpyHostToDevice));
int *d_data_ColIndices;  (cudaMalloc(&d_data_ColIndices, nnz_data * sizeof(int)));
(cudaMemcpy(d_data_ColIndices, h_data_ColIndices[0], (nnz_data) * sizeof(int), cudaMemcpyHostToDevice));