CUDA: Как проверить правильность вычислений? - PullRequest
15 голосов
/ 14 июля 2011

Код CUDA, скомпилированный с более высокой вычислительной способностью, будет прекрасно работать в течение долгого времени на устройстве с более низкой вычислительной способностью, прежде чем однажды произойдет молчаливый сбой в каком-либо ядре. Я потратил полдня в погоне за неуловимой ошибкой, только чтобы понять, что Правило сборки имело sm_21, а устройство (Tesla C2050) было 2.0.

Есть ли какой-нибудь код API CUDA, который я могу добавить, который может самопроверяться, если он работает на устройстве с совместимой вычислительной возможностью? Мне нужно компилировать и работать с устройствами с множеством вычислительных возможностей. Могу ли я предпринять какие-либо другие действия, чтобы такие ошибки не возникали?

Ответы [ 2 ]

17 голосов
/ 14 июля 2011

В API времени выполнения cudaGetDeviceProperties возвращает два поля major и minor, которые возвращают вычислительные возможности любого заданного перечисленного устройства CUDA.Вы можете использовать это для анализа вычислительных возможностей любого графического процессора перед установкой контекста на нем, чтобы убедиться, что это правильная архитектура для того, что делает ваш код.nvcc может сгенерировать объектный файл, содержащий несколько архитектур, из одного вызова, используя опцию -gencode, например:

nvcc -c -gencode arch=compute_20,code=sm_20  \
        -gencode arch=compute_13,code=sm_13  \
        source.cu

создаст выходной объектный файл со встроенным толстым двоичным объектом, содержащим кубин-файлы для GT200и карты GF100.API времени выполнения автоматически обработает обнаружение архитектуры и попытается загрузить подходящий код устройства из объекта fatbinary без дополнительного кода хоста.

0 голосов
/ 06 апреля 2012

выполнить запрос устройства.найти вычислительные возможности для каждого устройства в системе.Затем выполните код на нужном устройстве с помощью SetDevice ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...