Не удалось профилировать унифицированную память

Я пытаюсь профилировать код cuda в Ubuntu 16.04 с Cuda 8.0, но он возвращает сообщение «Невозможно профилировать приложение. Не удалось профилировать унифицированную память». Я пробовал профилировать с терминала, а также с Nisght Eclipe. Код компилируется и выполняется, но не может быть профилирован.

Код-

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));

Команда для компиляции кода-

nvcc -lcusparse main.cu -o hello.out

Профилирование

nvprof -o prof ./hello.out

Ошибка-

== 13621 == NVPROF - это процесс профилирования 13621, команда: ./hello.out ======== Ошибка: профилирование объединенной памяти не выполнено.

Кто-нибудь может мне с этим помочь?


person Dushyant Sahoo    schedule 10.10.2016    source источник
comment
Пожалуйста, предоставьте короткий полный тестовый пример. Программа, которую вы пытаетесь профилировать, как вы ее скомпилировали, полную команду, которую вы использовали для ее профилирования, и полное выходное сообщение.   -  person Robert Crovella    schedule 11.10.2016
comment
Обновил вопрос   -  person Dushyant Sahoo    schedule 11.10.2016


Ответы (3)


имел ту же вводящую в заблуждение ошибку, просто нужно было запустить профилировщик с привилегиями root, например sudo nvprof или sudo nvvp.

person Stefan Hobeditz    schedule 27.10.2016

Я страдаю той же ошибкой. Но ошибка остается, даже если я добавляю sudo привилегию. Терминал возвращает sudo: nvprof: command not found.

Попробуйте эту команду, у меня она работает. nvprof --unified-memory-profiling off /hello.out

person yan zhang    schedule 12.07.2017
comment
Вы должны добавить путь cuda в PATH для root или указать точный путь после sudo like = sudo /usr/local/cuda-8.0/bin/nvprof - person Muhammet Ali Asan; 17.08.2017
comment
Некоторые пользователи предлагают: * если вы получаете эту ошибку из терминала: sudo: nvprof: command not found Вы можете попробовать sudo -su. * - person GhostCat; 02.09.2017
comment
/usr/local/cuda/bin/nvprof python file.py мне тоже подходит без sudo - person skytree; 10.08.2018
comment
sudo /usr/local/cuda/bin/nvprof ./cuda_app > ./log/stdout.txt 2> ./log/gpu_log.txt будет работать. - person skytree; 19.10.2018
comment
Отключение профилирования унифицированной памяти может быть не очень хорошей идеей для тех, кто заинтересован в профилировании использования унифицированной памяти. Есть ли другая альтернатива? - person MuneshSingh; 02.06.2019

Чтобы это исправить, вам не нужен root-доступ. Поскольку вы используете Cuda 8.0, это должно работать. Проблема кроется в конфиге iBUS. Все, что вам нужно сделать, это удалить папку /home/[userpting/.config/ibus/bus, и проблема исчезнет.

person Pasindu    schedule 17.06.2018