В моем приложении я много времени инициализирую OpenCL, что вызывает утечку памяти. Вот небольшой пример кода, вызывающего утечку:
#include <iostream>
#include <CL/cl.h>
int main()
{
cl_platform_id platform = 0;
cl_int err = clGetPlatformIDs(1, &platform, NULL);
if(err != CL_SUCCESS){ return 1; }
cl_device_id device_id = 0;
err = clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 1, &device_id, NULL);
if(err != CL_SUCCESS){ return 2; }
char buff[128];
err = clGetDeviceInfo(device_id, CL_DEVICE_NAME, 128, buff, NULL);
if(err != CL_SUCCESS){ return 3; }
fprintf(stdout, "Device Name: %s\n", buff);
while(true)
{
cl_context context = clCreateContext(0, 1, &device_id, NULL, NULL, &err);
if(err != CL_SUCCESS)
return 4;
cl_command_queue command_queue = clCreateCommandQueue(context, device_id, 0, &err);
if(err != CL_SUCCESS)
return 5;
clReleaseCommandQueue(command_queue);
clReleaseContext(context);
}
return 0;
}
Этот код является частью примера из developer.apple.com. И без cl_command_queue инициализация не приводит к утечке. В чем проблема?
Моя конфигурация: Radeon R7 250, AMD APP SDK 3.0, Visual Studio 2010.
Задача ещё не решена.
Других решений пока нет …