/* Include Libs */
#include <cuda.h>
#include <cuda_runtime.h>
#include <cuda_runtime_api.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
int main(void)
{
int a=1;
int c=2;
int *deva, *devc;
cudaMalloc((void**)&deva, sizeof(int));
cudaMalloc((void**)&devc, sizeof(int));
cudaMemcpy(deva, &a, sizeof(int), cudaMemcpyHostToDevice);
cudaMemcpy(devc, &c, sizeof(int), cudaMemcpyHostToDevice);
cudaMemcpy(&c, deva, sizeof(int), cudaMemcpyDeviceToHost);
cudaMemcpy(&a, devc, sizeof(int), cudaMemcpyDeviceToHost);
printf("\n%d %d\n", a, c); // Output (should be "2 1")
cudaFree(deva);
cudaFree(devc);
return 0;
}
Этот простой код должен заменять a = 1 и c = 2, создавая вывод «2 1», но он ничего не делает, и это не единственный «простой» пример, основанный на учебник, который не работает, например, почему все учебники говорят, что я могу инициализировать a и c как указатели, а затем заполнять их значения, но программа не будет компилироваться, если я это сделаю? Что я здесь упускаю?Простой код CUDA не работает
У вас нет ядра для запуска. –
Код действительно работает для меня. –
Вы можете выполнить проверку ошибок, как указано в [здесь] (http://stackoverflow.com/questions/14038589/what-is-the-canonical-way-to-check-for-errors-using-the-cuda- runtime-api) Скорее всего, вы сами найдете проблему. –