Доступ к общей и глобальной памяти - PullRequest
1 голос
/ 06 июля 2011

Я мог бы обнаружить, что для «глобального» доступа к памяти объединение (соседние) адресов памяти, которые требуются потокам, является ключом для оптимальной транзакции, в то время как в «общей» памяти не конфликтующие адреса, выданные потоками, являются ключом,Я хорошо понял?

1 Ответ

1 голос
/ 07 июля 2011

Из руководства по программированию NVIDIA CUDA:

Чтобы максимизировать глобальную пропускную способность памяти, поэтому важно максимизировать объединяется:

  • Следуя наиболее оптимальным схемам доступа на основе разделов G.3.2 и G.4.2,
  • Использование типов данных, соответствующих требованиям к размеру и выравниванию, подробно Раздел 5.3.2.1.1,
  • Заполнение данных в некоторых случаях, например, при доступе к двумерному массив, как описано в разделе 5.3.2.1.2.

Это связано с обращением к памяти потоков в деформации, которая объединена в одну или несколько транзакций. Эта проблема была устранена для устройств с вычислительными возможностями 2.x.

С другой стороны, для доступа к разделяемой памяти вы должны понимать, как реализована эта память.

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

Если два или более потоков обращаются к одному и тому же банку, перевод сериализуется, например, конфликт банков.

Приложение G. Возможности вычислений содержит больше информации об архитектуре.

Привет!

...