Какое время доступа для разных областей памяти GPU?
Это вопрос дискретных графических процессоров, в основном новейших графических процессоров (NVIDIA Kepler, Maxwell; и того, что есть в AMD Kaveri и R290).
Сколько нужно, чтобы загрузить элемент без кэширования в регистр из...
- Глобальная память устройства?
- Глобальная кэш-память второго уровня?
- Кэш текстуры?
- Постоянный кеш (ы)?
- На ядро кеш L1?
- (Общая память на ядро - должна быть такой же, как кэш-память L1.)
Ссылка на таблицу где-нибудь была бы хорошей, объяснение было бы хорошо...
1 ответ
Это зависит от GPU, поколения, как его интегрированы (например, pcie) и другие вещи. Я часто работаю с ASM, и вот цифры, с которыми я работаю:
-Глобальное устройство памяти? около 300-800 часов. (установленные на материнской плате графические процессоры, такие как ноутбуки, использующие основную память, имеют более медленную память)
-Глобальная кэш-память второго уровня? около 100 тактов
-Текстура кеша (ов)? угадывание 50-100 тактов
Постоянный кэш (ы)? около 1-3 тактов, если он находится в кеше или кеше L2 (~50-100 тактов) или даже в глобальных мем 300-500 тактов. (в зависимости от того, ударил ли он по кешу или нет)
-Per-core (то есть Per-SMX/SMM в Kepler/Maxwell) кэш-память первого уровня? около 1-3 тактов
-Per-core (то есть Per-SMX/SMM в Kepler/Maxwell) разделяемая память? около 1-3 тактов
Я также сделал некоторые онлайн-поиски, чтобы увидеть, насколько близко я был и нашел это. Цифры отличаются от моих. http://lpgpu.org/wp/wp-content/uploads/2013/05/poster_andresch_acaces2014.pdf Я думаю, что фактическое время, затрачиваемое на то, с чем программист должен работать, это два разных числа из-за многопоточности. Надеюсь это поможет.