2017-08-17 3 views
-1

Ich habe den folgenden Code geschriebennvcc nicht die Ausführung des Kernel-Code in Ubuntu 17.10

#include "cuda_runtime.h" 
#include "device_launch_parameters.h" 
#include <stdio.h> 
#include<iostream> 
using namespace std; 

__global__ void hello() 
{ 
    printf("Hello"); 
} 

int main() 
{ 
    hello<<<1, 7>>>(); 
    cudaDeviceSynchronize(); 
    return 0; 
} 

Der Code kompiliert mit nvcc -o test test.cu und gibt eine Warnung aus nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning). ich voran gehen mit der Ausführung ./test und es gibt keinen Ausgang an alle. Gibt es einen Fehler im Code? Danke

+1

, wenn Sie Probleme haben mit einem CUDA-Code, ist es gute Praxis, [ordnungsgemäße Cuda Fehlerprüfung] (https://stackoverflow.com/questions/14038589/what-is-the-canonical-way-to-check-for-fehlern-use-the-cuda -runtime-api) und führe deinen Code auch mit 'cuda-memcheck' aus, ** bevor du nach Hilfe von anderen fragst. Auch wenn Sie die Fehlerausgabe nicht verstehen, kann es für andere nützlich sein, die Ihnen helfen möchten. Was passiert, wenn Sie Ihren Code mit "cuda-memcheck./Test" ausführen? –

+0

danke das Problem ist nach einem Systemneustart gelöst. Vielleicht stimmte etwas mit dem Compiler nicht – Uttaran

Antwort

1

Sie sagten, dass Ihr Problem nach einem Neustart gelöst wurde: ein Neustart oder zumindest ein X-Neustart ist nach der Installation von Nvidia-Treibern/CUDA erforderlich.

Auf jeden Fall ist es eine gute Praxis Fehler von CUDA-API-Aufrufen zu überprüfen, und setzen Sie das Gerät am Ende (Tools wie CUDA-memecheck möglicherweise Fehler sonst verpassen):

#include "cuda_runtime.h" 
#include "device_launch_parameters.h" 
#include <stdio.h> 
#include<iostream> 
using namespace std; 

#define cudaErr(ans) { gpuAssert((ans), __FILE__, __LINE__); } 
inline void gpuAssert(cudaError_t code, const char *file, int line, bool abort = true) 
{ 
    if (code != cudaSuccess) 
    { 
     fprintf(stderr,"GPUassert: %s %s %d\n", cudaGetErrorString(code), file, line); 
     if (abort) { 
      exit(code); 
     } 
    } 
} 

__global__ void hello() 
{ 
    printf("Hello"); 
} 

int main() 
{ 
    hello<<<1, 7>>>(); 
    cudaErr(cudaDeviceSynchronize()); 
    cudaErr(cudaDeviceReset()); 
    return 0; 
} 
Verwandte Themen