Вычислить поля Prof для некогерентных и когерентных gst / gld? (CUDA / OpenCL) - PullRequest
1 голос
/ 04 октября 2010

Я использую Compute Prof 3.2 и Geforce GTX 280. У меня есть вычислительная способность 1.3, тогда я считаю.

Этот файл , кажется, показывает, что я должен видеть этиполя, так как я использую вычислительное устройство 1.x.Ну, я не вижу их, и в Руководстве пользователя для инструментария 3.2 сказано, что я их не вижу, но называет их gst_uncoalesced и gst_coalesced.

Подводя итог, я не понимаю, как мне следуетвыяснить из профилировщика, если я делаю не слитые чтения из глобальной памяти.Похоже, карты Ферми тоже не скажут, но сейчас я их не волную.Если кто-нибудь сможет прояснить ситуацию, я был бы признателен.

Кроме того, мне сказали посмотреть на сборку моих ядер, чтобы разобраться в этом, поэтому любая разработка того, как это сделать, также ценится.,Я только начинаю пытаться понять это тоже:)

1 Ответ

1 голос
/ 04 октября 2010

У меня были похожие проблемы с выходом профилирования.В то время как на 8600 (вычислительная возможность 1.0) он показывал как коалесцированные, так и не коалесцированные чтения / записи, он показывал только коалесценцию на GTX280.Я предположил, что это произошло из-за лучшего слияния на gtx 280, сделав разрез менее понятным (читается ли память, для которой все слова, кроме одного, не нужны?).Однако вы можете просто посмотреть в сводной таблице.Там вы найдете загрузку и эффективность магазина для каждого ядра.Если все обращения объединены, то эффективность должна быть 1, в противном случае она должна быть меньше единицы (0,5 означает, что используется только половина загруженных байтов).

Конечно, поскольку это не поможет вам выяснить, где именно ваши несвязанные доступы находятся в вашем ядре, лучший способ все еще знать, как работает объединение (адреса каждого полуразмера собираются в 32, 64 и128-байтовые доступы, значения, к которым нет доступа внутри этой области, передаются в любом случае), и анализ ваших шаблонов доступа - все еще путь в конце.

...