2016-08-22 11 views
0

Запуск CuSolverRf sample с образцом .mtx файлов lap2D_5pt_n100.mtx и lap3D_7pt_n20.mtx позволяет программе работать бесперебойно. Однако, когда я вставляю в моем собственном .mtx файл, я получаю ошибку после шага 8:Ошибка присвоения статуса cuSolverRf

"CUDA ошибки в cuSolverRF.ccp: 649 код = 2 ..."

Я сузили проблему здесь:

checkCudaErrors(cusolverRfSetupHost(
    rowsA, nnzA, 
    h_csrRowPtrA, h_csrColIndA, h_csrValA, 
    nnzL, 
    h_csrRowPtrL, h_csrColIndL, h_csrValL, 
    nnzU, 
    h_csrRowPtrU, h_csrColIndU, h_csrValU, 
    h_P, 
    h_Q, 
    cusolverRfH)); 

что бы перейти к

void check(T result, char const *const func, const char *const file, int const line) 
{ 
    if (result) 
    { 
     fprintf(stderr, "CUDA error at %s:%d code=%d(%s) \"%s\" \n", 
       file, line, static_cast<unsigned int>(result), _cudaGetErrorEnum(result), func); 
     DEVICE_RESET 
     // Make sure we call CUDA Device Reset before exiting 
     exit(EXIT_FAILURE); 
    } 
} 

Мой Qu Как получается «результат»? и что я могу сделать, чтобы преодолеть проблему или что я делаю неправильно?

Дополнительная информация: моя матрица 196530 от 196530 с 2530798 nnz.

ответ

2

Код ошибки 2 соответствует CUSOLVER_STATUS_ALLOC_FAILED: распределение

quoting the cuSOLVER documentation:

ресурсов не удалось в библиотеке cuSolver. Это обычно вызвано сбоем cudaMalloc(). Чтобы исправить: перед вызовом функции освободите ранее выделенную память как можно больше.

Это означает, что память для вашей матрицы не может быть выделена, возможно, из-за превышения памяти вашего GPU. Попробуйте освободить память (как указано в документации), используйте меньшую матрицу ввода или используйте графический процессор с большим объемом памяти.

+0

Я попробовал освободить, как упоминалось, но это не имело никакого эффекта. На этой ноте, освобождая освобождение от всех значений, хранящихся на графическом процессоре? – ceeely

+1

@ceeely да, но, может быть, у вас есть значения, хранящиеся в памяти GPU, которые вам не нужны для cuSOLVER (т.е. с предыдущего шага) –

+0

Для контекста у меня были подозрения о части памяти памяти GPU, поскольку я использую старый GPU (Nvidia Quadro 4000). Если это причина, угадайте, что настало время для столь необходимого обновления. – ceeely