/ / Співвідношення між архітектурою пам'яті OpenCL та фізичною пам'яттю / кешами графічного процесора (L1 / L2…)? - пам'ять, opencl, gpu-програмування

Відношення архітектури пам'яті OpenCL та фізичної пам'яті / кеш-пам'яті GPU (L1 / L2 ...)? - пам'ять, opencl, gpu-програмування

Чи є пряме відношення між архітектурою пам'яті OpenCL:

Місцеві / глобальні / постійні / приватні пам'ять

І фізична пам'ять GPU, і кеш-пам'ять. Наприклад, відеокарта, що має 1 ГБ пам'яті / кеш-пам'ять L1 / кеш-пам'ять L2. Чи пов’язані вони з локальною / глобальною .. пам'яттю?

Або локальна / постійна / приватна пам'ять виділяється з глобальної пам'яті? -Спасибі

Відповіді:

5 за відповідь № 1

OpenCL насправді не обговорює кешування пам'яті. Більшість сучасних відеокарт мають певні протоколи кешування глобальної пам'яті, але це не гарантується для старих карт. Однак ось огляд різних спогадів.

Приватна пам'ять - Ця пам'ять зберігається як регістри на робочий предмет. GPU мають дуже великі регістрові файли на обчислювальну одиницю. Однак ця пам'ять може переливатися на локальну пам'ять при необхідності. Приватна пам'ять виділяється за замовчуванням під час створення змінних.

Локальна пам'ять - Пам'ять, локальна та спільна робочою групою. Ця система пам'яті, як правило, є на самій обчислювальній одиниці, і її не можуть читати чи записувати інші робочі групи. Зазвичай ця пам'ять має дуже низьку затримку в архітектурах GPU (для архітектур процесора ця пам'ять є просто частиною вашої системної пам'яті). Ця пам'ять зазвичай використовується як ручний кеш глобальної пам'яті. Локальна пам'ять задається символом __local атрибут

Постійна пам'ять - Частина глобальної пам'яті, але лише для читання і тому може бути агресивно кешована. __constant використовується для визначення цього типу пам'яті.

Глобальна пам'ять - Це основна пам’ять GPU. __global використовується для розміщення пам'яті в глобальному просторі пам'яті.