2016-01-07 4 views
0

Я запускаю мое ядро ​​и проверку возможных ошибок следующим образом:ядра таймаута для большого массива, когда X Server на

kernel<<<grid,block>>>(d_Basis, d_repul_aux,nao); 
    cout<<"done with the ERIs...."<<endl; 
    std::string error = cudaGetErrorString(cudaPeekAtLastError()); 
    cout<<error<<endl; 

HANDLE_ERROR(cudaMemcpy(eris_gpu_cpu_aux.data(),d_repulsion_aux,eris_size*sizeof(double),cudaMemcpyDeviceToHost)); 

где cudaGetErrorString (cudaPeekAtLastError()) используется для того, чтобы сделать ошибку проверки ядро и я определили:

static void HandleError(cudaError_t err, 
         const char *file, 
         int line) { 
    if (err != cudaSuccess) { 
    printf("%s in %s at line %d\n", cudaGetErrorString(err), 
      file, line); 
    exit(EXIT_FAILURE); 
    } 
} 

#define HANDLE_ERROR(err) (HandleError(err, __FILE__, __LINE__)) 

Когда сервер X выключен, вычисление выполняется, как показано на рисунке; но если я перехожу на сервере X, ядро ​​зависает, и я получаю следующий результат:

done with the ERIs.... 
no error 
the launch timed out and was terminated in main.cu at line 1038 

Линия 1038 в исходном коде соответствует:

HANDLE_ERROR (cudaMemcpy (eris_gpu_cpu_aux.data() , d_repulsion_aux, eris_size * SizeOf (дважды), cudaMemcpyDeviceToHost));

Что означает, что вычисление происходит сбой при копировании результатов с устройства на хост. Я использую графическую карту GEforce GTx-480 и CUDA 7.5.

Попытка решить проблему, я попытался отключить опцию «Интерактивный» в файле /etc/X11/xorg.conf, но X-сервер не распознает эту опцию. Что я могу сделать для совместного использования ресурсов графического процессора между X Server и моим приложением GPGPU? Я настаиваю на этом, потому что мне неудобно писать и/или отлаживать мой код, используя среду текстового режима.

+1

Ошибка cudaMemcpy, следующий за ядром, на самом деле является неудачным завершением ядра. Вы должны следовать инструкциям [здесь] (http://nvidia.custhelp.com/app/answers/detail/a_id/3029/~/using-cuda-and-x). Ваши утверждения о том, что X-сервер не распознает этот параметр, не имеют смысла. Этот параметр обрабатывается драйвером NVIDIA GPU, а не X-сервером. Поэтому я предполагаю, что вы неправильно изменили xorg.conf, иначе вы изменили файл xorg.conf, который ваш X-сервер даже не использует для конфигурации дисплея. –

+0

Большое спасибо за ваш совет. Фактически, я использовал неверный синтаксис для отключения интерактивной опции, можно найти пример правильного синтаксиса [здесь.] (Http://devblogs.nvidia.com/parallelforall/hpc -визуализация-nvidia-tesla-gpus /) – user3116936

+0

Итак, проблема исправлена? –

ответ

1

Мой предыдущий файл /etc/X11/xorg.conf были следующими:

# nvidia-xconfig: X configuration file generated by nvidia-xconfig 
# nvidia-xconfig: version 319.21 ([email protected]) Sun May 12 00:46:48 PDT 2013 


Section "ServerLayout" 
    Identifier  "Layout0" 
    Screen  0 "Screen0" 0 0 
    InputDevice "Keyboard0" "CoreKeyboard" 
    InputDevice "Mouse0" "CorePointer" 
EndSection 

Section "Files" 
EndSection 

Section "InputDevice" 

    # generated from default 
    Identifier  "Mouse0" 
    Driver   "mouse" 
    Option   "Protocol" "auto" 
    Option   "Device" "/dev/psaux" 
    Option   "Emulate3Buttons" "no" 
    Option   "ZAxisMapping" "4 5" 
EndSection 

Section "InputDevice" 

    # generated from default 
    Identifier  "Keyboard0" 
    Driver   "kbd" 
EndSection 

Section "Monitor" 
    Identifier  "Monitor0" 
    VendorName  "Unknown" 
    ModelName  "Unknown" 
    HorizSync  28.0 - 33.0 
    VertRefresh  43.0 - 72.0 
    Option   "DPMS" 
EndSection 

Section "Device" 
    Identifier  "Device0" 
    Driver   "nvidia" 
    VendorName  "NVIDIA Corporation" 
EndSection 

Section "Screen" 
    Identifier  "Screen0" 
    Device   "Device0" 
    Monitor  "Monitor0" 
    DefaultDepth 24 
    SubSection  "Display" 
     Depth  24 
    EndSubSection 
EndSection 

Для того, чтобы решить эту проблему, мы должны отключить сторожевой таймаутов следующим образом:

# nvidia-xconfig: X configuration file generated by nvidia-xconfig 
# nvidia-xconfig: version 319.21 ([email protected]) Sun May 12 00:46:48 PDT 2013 


Section "ServerLayout" 
    Identifier  "Layout0" 
    Screen  0 "Screen0" 0 0 
    InputDevice "Keyboard0" "CoreKeyboard" 
    InputDevice "Mouse0" "CorePointer" 
EndSection 

Section "Files" 
EndSection 

Section "InputDevice" 

    # generated from default 
    Identifier  "Mouse0" 
    Driver   "mouse" 
    Option   "Protocol" "auto" 
    Option   "Device" "/dev/psaux" 
    Option   "Emulate3Buttons" "no" 
    Option   "ZAxisMapping" "4 5" 
EndSection 

Section "InputDevice" 

    # generated from default 
    Identifier  "Keyboard0" 
    Driver   "kbd" 
EndSection 

Section "Monitor" 
    Identifier  "Monitor0" 
    VendorName  "Unknown" 
    ModelName  "Unknown" 
    HorizSync  28.0 - 33.0 
    VertRefresh  43.0 - 72.0 
    Option   "DPMS" 
EndSection 

Section "Device" 
    Identifier  "Device0" 
    Driver   "nvidia" 
    VendorName  "NVIDIA Corporation" 
## 
## disable watchdog timeouts for long-running CUDA kernels 
## 
    Option "Interactive" "false" 
EndSection 

Section "Screen" 
    Identifier  "Screen0" 
    Device   "Device0" 
    Monitor  "Monitor0" 
    DefaultDepth 24 
    SubSection  "Display" 
     Depth  24 
    EndSubSection 
EndSection