Я хотел бы иметь нулевое поведение копирования для буферов opencl на arm mali midgard gpus и arm cpus, чтобы указатель данных вектора и clBuffer указывали на одно и то же местоположение в течение их времени жизни.
Некоторые из вещей, которыеЯ пытался. Я написал собственный распределитель (64-байтовое выравнивание) для вектора, а затем попытался использовать функцию cl_arm_import_memory и передать указатель вектора на функцию. Но проблема в том, что когда я запрашиваю свойства EXT устройства, я просто вижу строку cl_arm_import_memory, а не строку cl_arm_import_memory_host.
Я также попытался сначала выделить боковой буфер GPU, а затем заставить вектор указывать нарасположение буфера. Но согласно руководству по Мали, расположение буфера на стороне GPU может измениться так, что он может указывать на отдельные адреса при нескольких сопоставлениях.
Итак, мой вопрос заключается в том, каков наилучший способ достижения нулевого режима копирования между стандартным:: vector и и OpenCL буфер.