Я выделяю изображение через
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 МБ до и после выделения.
Кто-нибудь знает, почему распределение в два раза больше, чем я ожидаю?
Это одинаково на разных телефонах и формах изображения.