Сумма двух чисел на CUDA выдает всегда ноль
Сразу к делу: есть программный код на CUDA, который должен посчитать сумму двух чисел. Насколько известно (сверялся с несколькими источниками) код верный, но результат всегда 0. Помогите, пожалуйста, установить причину данной проблемы.
ОС: Windows 10
IDE: Visual Studio Community 2019
NVIDIA CUDA: 11.4
Видеокарта на ноуте: NVIDIA GeForce 940MX
Если нужны еще данные какие-нибудь, могу все написать
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
__global__ void add( int *a, int *b, int *c )
{
*c = *a + *b;
}
int main(void)
{
int host_a, host_b, host_c; // CPU
int *dev_a, *dev_b, *dev_c; // GPU
int size = sizeof(int);
// выделем память на устройстве (device)
cudaMalloc( (void**)&dev_a, size );
cudaMalloc( (void**)&dev_b, size );
cudaMalloc( (void**)&dev_c, size );
// входные значений
host_a = 2;
host_b = 7;
// копируем входные значения на устройства
cudaMemcpy( dev_a, &host_a, size, cudaMemcpyHostToDevice );
cudaMemcpy( dev_b, &host_b, size, cudaMemcpyHostToDevice );
// запускаем add() на ядре GPU
add<<< 1,1 >>>( dev_a, dev_b, dev_c );
// копируем результат обратно на хост
cudaMemcpy( &host_c, dev_c, sizeof(int), cudaMemcpyDeviceToHost );
// очистка
cudaFree( dev_a );
cudaFree( dev_b );
cudaFree( dev_c );
printf( "%d\n", host_c );
return 0;
}
P.s.: переход на Linux и нормальная работа там - не актуально для меня на данный момент
Дополнительно: отложил ноут в сторону, установил CUDA Toolkit 11.4 на домашний компьютер, запустил эту же программу -> все заработало, сумма считается. Вопрос остается актуальным: почему на ноуте не поднимается?
Ответы (1 шт):
В общем, проблему на ноутбуке решил: у меня на ноуте Compute capability (version) 5.0.

Проект по дефолту в Visual Studio создается под 5.2, а в списке видюх для 5.2 моей NVIDIA GeForce 940MX нету.
Само решение: я вручную поменял все значения (для дебага и релиза) 52 на 50, собрал проект и все полетело без проблем
