новый cl :: Image2D выделяет вдвое больше, чем ожидалось - PullRequest
2 голосов
/ 11 июля 2019

Я выделяю изображение через

cl::ImageFormat img_format(CL_RGBA, CL_HALF_FLOAT);
// image_shape[0] = 4096
// image_shape[1] = 576
new cl::Image2D(opencl_runtime_->context(),
                      CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, img_format,
                      image_shape[0], image_shape[1], 0, nullptr, &error);

Я ожидаю, что с CL_RGBA и CL_HALF_FLOAT нам нужно 8 байтов на пиксель, поэтому 4096 * 576 * 8 составляет 18 МБ.

Но когда я смотрю на память, используемую моим приложением, через

watch -n 0.1 adb shell dumpsys meminfo my_app

Я вижу разницу около 37 МБ до и после выделения.

Кто-нибудь знает, почему распределение в два раза больше, чем я ожидаю? Это одинаково на разных телефонах и формах изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...