У меня проблема с простой программой CUDA, которая просто добавляет два числа. Я запускаю его на ноутбуке с графическим процессором GeForce GT320M в Windows 7. Я скомпилирую эту программу с Visual Studio 2013
(я не знаю, значит ли это что-то). Проблема в том, что я всегда получаю 0
. Я попытался проверить заданные параметры (просто верните все параметры, заданные методу в массиве), и все они выглядели как 0
. Я запускаю эту программу на другом компьютере (в университете), и там она работает полностью нормально и возвращает правильный результат. Поэтому я думаю, что должна быть какая-то проблема с настройкой, но я не уверен в этом.CUDA - Простая программа сумматора всегда дает нуль
#include <cuda.h>
#include <stdio.h>
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
__global__ void add(int a, int b, int* c)
{
*c = a + b;
return;
}
int main(int argc, char** argv)
{
int c;
int* dev_c;
cudaMalloc((void**)&dev_c, sizeof(int));
add << <1, 1 >> >(1, 2, dev_c);
cudaMemcpy(&c, dev_c, sizeof(int), cudaMemcpyDeviceToHost);
printf("a + b = %d\n", c);
cudaFree(dev_c);
return 0;
}
Я также использую этот фрагмент кода, который я где-то нашел.
cudaSetDevice(0);
cudaDeviceSynchronize();
cudaThreadSynchronize();
Это ничего не возвращает.
@ Pradheep См. Здесь, пожалуйста: [_ «Рассматривает причины для нижнего уровня в комментариях, неконструктивных?» _] (Http://meta.stackoverflow.com/questions/252826/is-asking-reasons-for -downvote -in-comments-not-constructive/252910 # 252910) –
Я на самом деле пытаюсь выяснить, что здесь не так. Это не похоже на тривиальную проблему. –
Вы можете прочитать принятый ответ отсюда. Посмотрите, работает ли это. http://stackoverflow.com/questions/10524050/simple-adding-of-two-ints-in-cuda-result-always-the-same –