Я написал программу cuda для сложения векторов и умножения векторов, но я не знаю, как проверить выходные данные программы, независимо от того, верен ли ответ / вывод. Есть ли способ проверить правильность программы и также есть ли какой-либо онлайн-набор данных для использования для сложения / умножения векторов / матриц cuda?





Общий способ - написать ту же самую реализацию ядра и сгенерировать результат [золотой стандарт] на ЦП и сравнить его с выводом ядра графического процессора. Это означает копирование выходного массива на хост и сравнение на CPU. Для векторного сложения / умножения вы можете сгенерировать случайный массив и сгенерировать вывод как на CPU, так и на GPU (с одним и тем же входным массивом), а затем сравнить на CPU.
Спасибо за подсказку, что, если размер матрицы / вектора очень велик, например: 1000000000000
@talonmies Обычно мы ПОРТИРУЕМ код в CUDA, когда нам требуется более высокая производительность, что означает, что у вас уже есть код. В этом случае я предложил реализовать золотой стандарт в виде его довольно простого [сложения / умножения векторов], доступного онлайн и легко отлаживаемого вручную, а также программно. Тем не менее, вы лучше всех ответите (и я прошу вас): «Как мне обеспечить точность кода, написанного только на CUDA, БЕЗ золотого стандарта» :)
Но как узнать, что ваш «золотой стандарт» верен? Разве это не тот же вопрос, но теперь с двумя проблемами вместо одной?