Объединение против банковских конфликтов (Cuda) - PullRequest
3 голосов
/ 19 августа 2010

В чем разница между коалесценцией и конфликтами банков при программировании с помощью cuda?
Только ли происходит коалесценция в глобальной памяти, когда конфликты банков в разделяемой памяти?
Стоит ли беспокоиться о коалесценции, если у меня>1.2 поддерживает GPU?Он справляется со слиянием?

Ответы [ 3 ]

5 голосов
/ 19 августа 2010

Да, объединенные операции чтения / записи применимы к глобальным операциям чтения, а конфликты банков применимы к операциям чтения / записи в общей памяти.

Здесь различные устройства с вычислительными возможностями работают по-разному, но графический процессор 1.2 по-прежнему нуждается в заботе, чтобы гарантировать объединение операций чтения и записи - просто есть некоторые оптимизации, которые облегчат вам задачу

Вам следует прочитать руководство CUDA Best Practices . Это подробно описывает обе эти проблемы.

2 голосов
/ 20 августа 2010

Да: объединенные обращения имеют отношение только к глобальной памяти, конфликты банков относятся только к общей памяти.

Ознакомьтесь также с учебным занятием Advanced CUDA C, в первом разделе подробно описывается, как аппаратное обеспечение в> 1,2 графических процессорах помогает вам, и какие оптимизации вы все еще должны учитывать. Это также объясняет конфликты банка с общей памятью. Проверьте эту запись например.

Примеры сканирования и сокращения в SDK также хорошо объясняют конфликты в банках совместно используемой памяти с прогрессивными улучшениями в ядре.

1 голос
/ 13 декабря 2010

A> 1.2. GPU постарается сделать все возможное для объединения, поскольку он может группировать обращения к памяти того же размера, которые умещаются в одном и том же атоме памяти в 256 байтов, и записывать их как 1 запись в память. Графический процессор позаботится о переупорядочении доступа и выравнивании его по правой границе памяти. (В более ранних графических процессорах транзакции памяти внутри деформации должны были быть выровнены с атомом памяти и должны быть в правильном порядке.)

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

...