CUDA откат к процессору? - PullRequest
       20

CUDA откат к процессору?

2 голосов
/ 22 декабря 2009

У меня есть приложение CUDA, которое на одном компьютере (с GTX 275) работает нормально, а на другом - с GeForce 8400 работает примерно в 100 раз медленнее. Я подозреваю, что существует некоторый запасной вариант, который заставляет код фактически выполняться на процессоре, а не на графическом процессоре.

Есть ли способ на самом деле убедиться, что код работает на GPU?
Этот резервный документ где-то задокументирован?
Какие условия могут вызвать это?

РЕДАКТИРОВАТЬ: код скомпилирован с вычислительными возможностями 1.1, которые есть у 8400.

Ответы [ 3 ]

7 голосов
/ 22 декабря 2009

Не может быть так, что разрыв в производительности настолько велик. Эта ссылка указывает, что 8400 работает на 22-62 GFlops, а эта ссылка указывает, что GTX 275 работает на 1010.88 GFlops.

2 голосов
/ 22 декабря 2009

Есть несколько возможных причин для этого.

  1. Предположительно, вы не используете устройство эмуляции. Можете ли вы запустить пример запроса устройства из SDK? Это покажет, правильно ли установлен инструментарий и драйвер.

    Вы также можете запросить свойства устройства в приложении, чтобы проверить, к какому устройству вы подключены.

  2. Производительность 8400 намного ниже, чем у GTX275, поэтому она может быть реальной, но см. Следующий пункт.

  3. Одним из основных изменений при переходе от вычислительных возможностей 1.1 к 1.2 и далее является способ обработки обращений к памяти. В версии 1.1 вы должны быть очень осторожны не только для объединения ваших обращений к памяти, но и для того, чтобы убедиться, что каждая половина деформации выровнена, в противном случае каждый поток выдаст свою 32-байтовую транзакцию. В версии 1.2 и выше выравнивание не является такой проблемой, поскольку оно изящно ухудшает возможности минимизации транзакций.

    Это, в сочетании с более низкой производительностью 8400, также может объяснить то, что вы видите.

1 голос
/ 22 декабря 2009

Если я правильно помню, вы можете перечислить все доступные устройства (и выбрать, какое устройство использовать для вашего ядра) из кода хоста. Вы можете попытаться определить, является ли доступное устройство программной эмуляцией, и выдать предупреждение.

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