Я немного смущен тем, что данные о доступе к памяти, выданные warp, зависят от данных FP64.CUDA коалесцирует доступ к данным FP64
- Основание всегда состоит из 32 нитей независимо от того, выполняют ли эти потоки вычисления FP32 или FP64. Правильно?
- Я читал, что каждый раз, когда нить в warp пытается читать/записывать глобальную память, warp обращается к 128 байтам (32 одноточечных поплавков). Правильно?
- Итак, если все нити в warp считывают из памяти разные одиночные прецизионные поплавки (всего 128 байт), но в коалесцированном режиме warp выдает транзакцию с одной памятью. Правильно?
Вот теперь мой вопрос:
- Что делать, если все нити в варп пытаются получить доступ к различной двойной точности поплавки (в общей сложности 256 байт) в слившихся образом? Будет ли warp выдавать две транзакции памяти (128 + 128)?
PS: Я в основном заинтересован в Compute Capability 2.0+ архитектуры
Спасибо за ваш ответ, мой друг. Я готов принять его, но я также был бы признателен, если бы вы могли прокомментировать 32-байтные транзакции. При каких обстоятельствах они происходят? Заранее спасибо. – AstrOne
@AstrOne: Если каждый поток в warp должен загружать 8 или 16 бит типов, их можно обслуживать с помощью 32 байтовых транзакций. Вы также можете заставить компилятор испускать 32 байтовые транзакции, если хотите. – talonmies