CUDA - определить количество банков в разделяемой памяти

Общая память "полосатая" в банки. Это приводит ко всей проблеме банковских конфликтов, как мы все знаем.

Вопрос: Но как вы можете определить, сколько банков ("полос") существует в общей памяти?

(Просматривая форумы "devtalk" от NVIDIA, кажется, что общая память для каждого блока "разделена" на 16 банков. Но как мы узнаем об этом? Потоки, предполагающие, что это несколько лет. Изменились ли вещи? все карты с поддержкой NVIDIA CUDA? Есть ли способ определить это с помощью API времени выполнения (я не вижу его там, например, в cudaDeviceProp)? Есть ли ручной способ определить его во время выполнения?)

1 ответ

Решение

Как говорит @RobertHarvey, это задокументировано. В руководстве по программированию указаны 16 банков для вычислительных возможностей 1.x и 32 банка для вычислительных возможностей 2.x и 3.x. Таким образом, вы можете принимать любые решения на основе вычислительных возможностей (основной версии), возвращаемых в свойствах устройства.

Общая ссылка на онлайн-документацию по cuda содержится в информационной ссылке для тега cuda.

Другие вопросы по тегам