저는 CUDA 프로그래밍에있어 초보자이지만이 상황은 복잡해 보이지 않지만 작동하지 않습니다.커널이 실행되지 않는 것 같습니다.
#include <cuda.h>
#include <cuda_runtime.h>
#include <iostream>
__global__ void add(int *t)
{
t[2] = t[0] + t[1];
}
int main(int argc, char **argv)
{
int sum_cpu[3], *sum_gpu;
sum_cpu[0] = 1;
sum_cpu[1] = 2;
sum_cpu[2] = 0;
cudaMalloc((void**)&sum_gpu, 3 * sizeof(int));
cudaMemcpy(sum_gpu, sum_cpu, 3 * sizeof(int), cudaMemcpyHostToDevice);
add<<<1, 1>>>(sum_gpu);
cudaMemcpy(sum_cpu, sum_gpu, 3 * sizeof(int), cudaMemcpyDeviceToHost);
std::cout << sum_cpu[2];
cudaFree(sum_gpu);
return 0;
}
내가 뭔가를 컴파일이
nvcc main.cu
처럼 컴파일 합니다만, 반환 값이 나는 커널 내에서 인쇄 시도 0이며 그렇게 인쇄되지 않습니다 난 내가 '아무튼 가정 실행하지 마십시오. 이유를 설명해 주시겠습니까?
[적절한 cuda 오류 검사] 추가 (http://stackoverflow.com/questions/14038589/what-is-the-canonical-way-to-check-for-errors-using-the-cuda-runtime-api)를 코드에 추가하십시오. 'cuda-memcheck'로 코드를 실행해볼 수도 있습니다. –
힌트를 가져 주셔서 감사합니다. 첫 번째 cudaMalloc에서 '알 수없는 오류'라는 오류를 확인하는 중입니다. 'cuda-memcheck'는 0 에러를 감지합니다. – wiktus239
기계 구성에 문제가 있습니다. CUDA가 제대로 설치되지 않았거나 다른 컴퓨터 문제로 인해 해당 컴퓨터에서 작동하지 않습니다. 확인 단계를 포함하여 [사용중인 OS에 적합한 시작 안내서] (http://docs.nvidia.com/cuda/index.html#getting-started-guides)의 지침을주의 깊게 따라야 할 수 있습니다. –