Можно ли использовать один и тот же объект памяти между двумя ядрами без какой-либо синхронизации в OCL 1.2? Т.е. я хочу создать объект памяти, сделать copy_host_ptr и передать его в 2 ядра как указатели для одновременного доступа, в основном читать.opencl: совместное использование асинхронной памяти-obj между ядрами (одного и того же контекста, устройства)
Я использую одно и то же устройство/контекст/программу и т. Д. Для обоих ядер, и я забочусь только о смещениях в памяти. то есть я не забочусь о том, является ли базовый адрес mem-obj в двух ядрах одинаковыми или нет.
Спасибо!
Правильный способ, даже если использовать только одну командную очередь (которая при некоторых условиях может даже выполнять параллельные задания) - устанавливать флаги в объекты буфера. Это делает драйвер OpenCL заботиться о том, чтобы вы не использовали один и тот же буфер для записи (или чтения/записи) в двух ядрах одновременно. – DarkZeros
@ DarkZeros, я никогда не понимал, какими могут быть условия, когда последующее ядро может начать выполнение до того, как закончится предыдущий. Имеет смысл, что это может быть возможно, если заданные единицы вычисления в конце работы. Будет ли среда выполнения искать объекты буфера и изображения, используемые для определения наличия зависимостей? – Dithermaster