2016-10-10 13 views
11

Tôi đang cố gắng để cấu hình mã cuda trên Ubuntu 16.04 có Cuda 8.0 nhưng nó trở về "Không thể ứng dụng hồ sơ. Cấu hình bộ nhớ hợp nhất không thành công". Tôi đã cố gắng profiling từ thiết bị đầu cuối và cũng từ Nisght Eclipe. Mã được biên dịch và chạy nhưng không thể nhận được hồ sơ.Cấu hình bộ nhớ hợp nhất không thành công

số-

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

lệnh để compile số-

nvcc -lcusparse main.cu -o hello.out

Profiling-

nvprof -o prof ./ hello.out

Lỗi-

== 13621 == NVPROF là quá trình lược tả 13621, lệnh: ./hello.out ======== Lỗi: lược tả bộ nhớ hợp nhất không thành công.

Ai đó có thể giúp tôi không?

+0

Vui lòng cung cấp trường hợp kiểm tra hoàn chỉnh ngắn. Chương trình bạn đang cố gắng để hồ sơ, làm thế nào bạn biên dịch nó, lệnh đầy đủ bạn sử dụng để cấu hình nó, và thông báo đầu ra đầy đủ. –

+0

Cập nhật câu hỏi –

Trả lời

20

có lỗi gây hiểu lầm tương tự, chỉ cần chạy profiler với các đặc quyền gốc, ví dụ: sudo nvprof hoặc sudo nvvp.

5

Tôi gặp lỗi tương tự. Nhưng lỗi vẫn còn tôi thêm đặc quyền sudo. Thiết bị đầu cuối trả về sudo: nvprof: command not found.

Hãy thử lệnh này, nó hoạt động cho tôi. nvprof --unified-memory-profiling off /hello.out

+1

Bạn nên thêm đường dẫn cuda vào PATH cho thư mục gốc hoặc cung cấp đường dẫn chính xác sau sudo like = "sudo /usr/local/cuda-8.0/bin/nvprof" –

+0

Một số người dùng đề xuất: * nếu bạn gặp lỗi này từ terminal: sudo: nvprof: không tìm thấy lệnh Bạn có thể thử sudo -su. * – GhostCat

Các vấn đề liên quan