Использование общей памяти в ArrayFire

Кто-нибудь знает, как объявить, что массив данных в ArrayFire должен храниться в разделяемой памяти, а не в глобальной памяти? Это возможно? У меня есть небольшой набор данных, который должен быть произвольно доступен для всех потоков. Это постоянная справочная таблица, которая должна быть доступна на протяжении всего жизненного цикла приложения. Может быть, я просто упускаю очевидное или что-то в этом роде, но чтение документации ArrayFire и гугление не выявили никакой информации о том, как я сообщаю ArrayFire, что мои данные должны быть помещены в разделяемую память.


person dcofer    schedule 06.04.2015    source источник
comment
Общая память имеет время жизни ядра и является локальной для блока. То, что вы хотите использовать для чего-то вроде небольшой постоянной таблицы поиска, — это постоянная память. Однако я не думаю, что ArrayFire позволяет вам указать память, в которой должен находиться массив, если честно.   -  person Oblomov    schedule 08.04.2015


Ответы (1)


В CUDA Shared memory (Локальная память в OpenCL) — это очень быстрый тип памяти, который находится на GPU. У него такое же время жизни, как и у блока потока, и к нему могут обращаться только потоки в том же блоке потока. Поэтому его нельзя использовать для хранения постоянных данных, которые должны использоваться несколькими ядрами даже в необработанном CUDA. Возможно, вы захотите изучить постоянную или текстурную память для реализации таблицы поиска (LUT). Эти типы памяти обычно больше подходят для типа доступа, с которым вы обычно сталкиваетесь при работе с LUT.

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

Умар

Раскрытие информации: я являюсь одним из разработчиков ArrayFire.

person Umar Arshad    schedule 07.04.2015