remove opencl event tracking since it causes memory leak
This commit is contained in:
@ -675,17 +675,14 @@ cl_mem OpenCLBase::ocl_allocateMemory(size_t size, cl_int &ierr) {
|
|||||||
/*
|
/*
|
||||||
write data specified by in_data to device memory, device memory space defined by cl_mem
|
write data specified by in_data to device memory, device memory space defined by cl_mem
|
||||||
*/
|
*/
|
||||||
int OpenCLBase::ocl_writeData(cl_mem mem_ptr, const void * in_data, size_t size, size_t offset, int blocking) {
|
int OpenCLBase::ocl_writeData(cl_mem mem_ptr, const void * in_data, size_t size,
|
||||||
|
size_t offset, int blocking)
|
||||||
|
{
|
||||||
|
|
||||||
cl_int ierr;
|
cl_int ierr;
|
||||||
|
|
||||||
|
ierr = clEnqueueWriteBuffer(m_command_queue, mem_ptr, blocking, offset, size,
|
||||||
//std::cout << "Write: " << size*1e-9 << " gb of data" << std::endl;
|
in_data, 0, NULL, NULL);
|
||||||
ierr = clEnqueueWriteBuffer(m_command_queue, mem_ptr, blocking, offset, size, in_data, 0, NULL, &m_last_event);
|
|
||||||
|
|
||||||
//m_events[m_num_events] = m_last_event;
|
|
||||||
m_events.push_back(m_last_event);
|
|
||||||
|
|
||||||
|
|
||||||
if (ierr != CL_SUCCESS) {
|
if (ierr != CL_SUCCESS) {
|
||||||
DEBUG_MSG("Error writing data to device, OpenCL error: " << ierr);
|
DEBUG_MSG("Error writing data to device, OpenCL error: " << ierr);
|
||||||
@ -752,28 +749,16 @@ int OpenCLBase::ocl_executeKernel(cl_uint ndim, const size_t *work_items,
|
|||||||
const size_t *work_group_size)
|
const size_t *work_group_size)
|
||||||
{
|
{
|
||||||
cl_int ierr;
|
cl_int ierr;
|
||||||
cl_event tmp_event;
|
|
||||||
|
|
||||||
if (m_last_event == NULL) {
|
ierr = clEnqueueNDRangeKernel(m_command_queue, m_kernel, ndim, NULL,
|
||||||
ierr = clEnqueueNDRangeKernel(m_command_queue, m_kernel, ndim, NULL,
|
work_items, work_group_size,
|
||||||
work_items, work_group_size,
|
0, NULL, NULL);
|
||||||
0, NULL, &tmp_event);
|
|
||||||
} else {
|
|
||||||
ierr = clEnqueueNDRangeKernel(m_command_queue, m_kernel, ndim, NULL,
|
|
||||||
work_items, work_group_size,
|
|
||||||
1, &m_last_event, &tmp_event);
|
|
||||||
}
|
|
||||||
clFlush(m_command_queue);
|
|
||||||
|
|
||||||
if (ierr != CL_SUCCESS)
|
if (ierr != CL_SUCCESS)
|
||||||
DEBUG_MSG("Error executing kernel, OpenCL error: " << ierr
|
DEBUG_MSG("Error executing kernel, OpenCL error: " << ierr
|
||||||
<< " work items: " << *work_items << ", "
|
<< " work items: " << *work_items << ", "
|
||||||
<< " work group: " << *work_group_size);
|
<< " work group: " << *work_group_size);
|
||||||
|
|
||||||
clReleaseEvent(tmp_event);
|
|
||||||
//m_last_event = tmp_event;
|
|
||||||
//m_events.push_back(m_last_event);
|
|
||||||
|
|
||||||
return ierr;
|
return ierr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -781,12 +766,13 @@ int OpenCLBase::ocl_executeKernel(cl_uint ndim, const size_t *work_items,
|
|||||||
read data from device, mem_ptr points to data on device out_data points to memory in host
|
read data from device, mem_ptr points to data on device out_data points to memory in host
|
||||||
blocking specifies wether the read operation is blocking (default CL_TRUE) or non blocking (CL_FALSE)
|
blocking specifies wether the read operation is blocking (default CL_TRUE) or non blocking (CL_FALSE)
|
||||||
*/
|
*/
|
||||||
int OpenCLBase::ocl_readData(cl_mem mem_ptr, void * out_data, size_t size, size_t offset, int blocking) {
|
int OpenCLBase::ocl_readData(cl_mem mem_ptr, void * out_data, size_t size,
|
||||||
|
size_t offset, int blocking)
|
||||||
|
{
|
||||||
cl_int ierr;
|
cl_int ierr;
|
||||||
|
|
||||||
ierr = clEnqueueReadBuffer(m_command_queue, mem_ptr, blocking, offset, size, out_data, 0, NULL, &m_last_event);
|
ierr = clEnqueueReadBuffer(m_command_queue, mem_ptr, blocking, offset, size,
|
||||||
|
out_data, 0, NULL, NULL);
|
||||||
m_events.push_back(m_last_event);
|
|
||||||
|
|
||||||
if (ierr != CL_SUCCESS)
|
if (ierr != CL_SUCCESS)
|
||||||
DEBUG_MSG("Error reading data from device, OpenCL error: " << ierr);
|
DEBUG_MSG("Error reading data from device, OpenCL error: " << ierr);
|
||||||
|
@ -98,7 +98,6 @@ double OpenCLChiSquareRuntime::calculateSum(cl_mem data, int length) {
|
|||||||
tmp_ptr = m_oclbase->ocl_allocateMemory(work_groups * sizeof(double), ierr);
|
tmp_ptr = m_oclbase->ocl_allocateMemory(work_groups * sizeof(double), ierr);
|
||||||
|
|
||||||
//execute sum kernel
|
//execute sum kernel
|
||||||
//ocl_createKernel("parallelReductionSum");
|
|
||||||
m_oclbase->ocl_createKernel("parallelReductionTwoPhase");
|
m_oclbase->ocl_createKernel("parallelReductionTwoPhase");
|
||||||
m_oclbase->ocl_setKernelArg(0, sizeof(cl_mem), &data);
|
m_oclbase->ocl_setKernelArg(0, sizeof(cl_mem), &data);
|
||||||
m_oclbase->ocl_setKernelArg(1, sizeof(cl_mem), &tmp_ptr);
|
m_oclbase->ocl_setKernelArg(1, sizeof(cl_mem), &tmp_ptr);
|
||||||
|
Reference in New Issue
Block a user