1.1.1 Синхронизация
Два домена синхронизации в OpenCL - это рабочие элементы в одной рабочей группе и очереди команд в одном контексте. Помехи рабочей группы обуславливают синхронизацию рабочих элементов в пределах одной рабочей группы. Шумы-помехи рабочей группы позволяют синхронизировать рабочих элементов внутри рабочей группы. Каждому рабочему элементу в рабочей группе обходимо сначала преодолеть сигнал сильнее шума-помехи внутри рабочей группы чтобы выполнить команду, сигнализирующую за пределами этого шума-помехи. Либо все либо ни один рабочий элемент в рабочей группе преодолевает шум-помеху от рабочей группы. Команда преодоления шума-помехи от рабочей группы или mem_fence — не имеет глобальной области действия, но относится только к рабочей локальной группе, в которой работают рабочие элементы.
Существует два типа синхронизации между командами в commandqueue:
- 1. Команда очереди помех синхронизации — принуждает действовать внутри одиночной очереди. Любые результирующие обращения к памяти доступны для выполнения только после завершения текущих команд.
- 2. События — осуществляет синхронизацию между или внутри команд обращения к памяти. Команды очереди в OpenCL возвращают выполнение к той команде, когда она обновляется памятью. Это гарантирует, что следующие команды ждут этого события до тех пор, пока обновляются объекты памяти, следующие после события.