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

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

РЕДАКТИРОВАТЬ: Это разделенная версияэтот вопрос улучшить поиск сообщества

Ответы на вопрос(1)

Решение Вопроса

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

Поскольку постоянная память и ее кеш, как текстуры, так и поверхность памяти и ее собственная кеша определяются аппаратноВозможность вычислений, целевое оборудование должно быть учтено. Таким образом, выбор постоянной памяти и текстурной памяти зависит от шаблона доступа и использования кэша, как доступности кэша.

Постоянная производительность памяти связана с передачей данных между потоками в деформации, поэтому максимальная производительность достигается, если все потоки запрашивают один и тот же адрес данных и данные уже находятся в кэше. Таким образом, если в одном и том же перекосе есть запрос на несколько адресов, сервис разбивается на несколько запросов, поскольку он может получить один адрес за операцию.Если количество разделенных запросов из-за извлечения данных с нескольких адресов слишком велико, производительность текстур и памяти на поверхности может превосходить постоянную память в этой конкретной ситуации., Эта информация подробно описана вРуководство по программированию Cuda:

Постоянное пространство памяти находится в памяти устройства и кэшируется в постоянном кэше, упомянутом вВозможность вычислений 2.x.

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

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

Кэш текстурной памяти является более гибким, чем кэш постоянной памяти. Он может использовать показания в одной и той же деформации адреса, которые расположены близко друг к другу в 2D-режиме.Несмотря на некоторые преимущества по сравнению с постоянной памятью, в общем случае следует использовать память текстур, если схема доступа к данным или размер данных не соответствуют постоянным требованиям к памяти или для использования кэша памяти текстур, Более подробную информацию можнонайден в:

Пространства памяти текстуры и поверхности находятся в памяти устройства и кэшируются в кеше текстур, поэтому выборка текстуры или чтение поверхности стоит только одно чтение из памяти устройства только при пропадании кеша, в противном случае это просто стоит одно чтение из кеша текстуры. Кэш текстур оптимизирован для пространственной локализации 2D, поэтому потоки одного и того же перекоса, считывающие адреса текстуры или поверхности, расположенные близко друг к другу в 2D, достигнут наилучшей производительности. Кроме того, он предназначен для потоковой выборки с постоянной задержкой; попадание в кэш снижает требования к пропускной способности DRAM, но не приводит к задержке выборки.

Считывание памяти устройства с помощью выборки текстуры или поверхности предоставляет некоторые преимущества, которые могут сделать его выгодной альтернативой чтению памяти устройства из глобальной или постоянной памяти:

Если чтения из памяти не следуют шаблонам доступа, которым должны следовать глобальные или постоянные чтения из памяти, чтобы получить хорошую производительность, может быть достигнута более высокая пропускная способность при условии наличия локальности в выборках текстуры или чтениях поверхности;Расчеты адресации выполняются вне ядра выделенными модулями;Упакованные данные могут передаваться отдельным переменным в одной операции;8-разрядные и 16-разрядные целочисленные входные данные могут быть дополнительно преобразованы в 32-разрядные значения с плавающей запятой в диапазоне [0,0, 1,0] или [-1,0, 1,0] (см.Память текстуры).

Разработчик должен помнить, что использование комбинации текстурной памяти с постоянной памятью может быть реальным преимуществом по сравнению с предпочтением одного, потому что это может позволить использовать преимущества выделенного кеша из обоих, так как оба кеша имеют более высокую производительность чем над любыми данными, полученными вне кэша (т. е. память устройства).

 talonmies20 сент. 2017 г., 20:07
Спасибо за добавление ответа на ваш вопрос. Пожалуйста, не забудьте вернуться через несколько дней и принять ваш ответ, чтобы вопрос не попал в список без ответа для тега CUDA.

Ваш ответ на вопрос