Интересный вопрос. OpenCL определяет ряд концептуальных видов памяти, включая локальную память, постоянную память, глобальную память и частную память. А физически, как вы знаете, аппаратная реализация этих воспоминаний зависит от аппаратного обеспечения. Например, некоторые могут эмулировать локальную память, используя кэш или системную память вместо физической памяти.
Насколько я знаю, у графического процессора ARM Mali нет есть локальная память, тогда как у графического процессора Qualcomm Adreno имеет локальная память.
Например, в таблице ниже показано определение каждой памяти в OpenCL и их относительная задержка и физические местоположения в графическом процессоре Adreno, указанные из Оптимизация OpenCL и рекомендации для Qualcomm Adreno графические процессоры*
Ответ обновлен:
как прокомментировано SK-logic ниже, у Mali6xx есть локальная память (общая с кешем).
Mali6xx имеют локальную память (совместно с кешем).
@SK-logic: большое спасибо за отзыв. Не могли бы вы предоставить мне какой-нибудь ресурс для чтения? Мне тоже интересно, потому что я этого не знал. Затем я обновлю свой ответ :)
Я не уверен, что есть много общедоступных ресурсов по реализации mali6xx opencl. Я знаю эти детали только потому, что был частью команды, которая написала драйвер. Один из способов продемонстрировать это — сравнить доступ к локальной памяти.
@SK-логика. справедливо. Я обновил свой ответ, чтобы он был полезен для ОП, а также для других, кто сталкивается с таким вопросом.
@SK-logic, у Mali6xx есть локальная память (общая с кешем). Где кэш на Mali6xx? Вы имеете ввиду встроенную память?
Хорошо, я перепроверил текущее состояние, и похоже, что с ранней реализации OpenCL функциональность блокировки области L2 для локального хранилища была удалена. В текущих реализациях нет разницы между локальным и глобальным хранилищем, кроме примитивов синхронизации.
Память в недавнем Mali разделяется, а не локальна, но в OpenCL по-прежнему существует концепция разделения памяти, поэтому есть специальные команды, чтобы убедиться, что копирование не происходит. Использование частной/локальной памяти не рекомендуется.
Для получения дополнительной информации о лучшем использовании памяти с Mali OpenCL, пожалуйста, прочитайте:
Для Mali6xx локальная память существует и выделена в кеше. Не знаю о более поздних версиях.