diff --git a/src/CCubes.c b/src/CCubes.c index 7a71402..3a3d0da 100644 --- a/src/CCubes.c +++ b/src/CCubes.c @@ -45,7 +45,7 @@ SEXP CCubes(SEXP tt) { double elapsed_time; config_set_int("log", LOG_LEVEL_WARN); - config_set_int("log:clccubes", LOG_LEVEL_WARN); + config_set_int("log:clccubes", LOG_LEVEL_DEBUG); config_set_int("log:ccubes", LOG_LEVEL_DEBUG); config_set_int("log:cl", LOG_LEVEL_DEBUG); @@ -203,7 +203,7 @@ SEXP CCubes(SEXP tt) { int current_batch = n_tasks < n_tasks_batch ? n_tasks : n_tasks_batch; log_debug("ccubes", "Tasks %d - %d out of %d", - task, task + current_batch, current_batch); + task, task + current_batch - 1, n_tasks); bool *coverage; unsigned int *fixed_bits; @@ -267,7 +267,9 @@ SEXP CCubes(SEXP tt) { } log_debug_raw("ccubes", "\n"); } - break; + + /* change to something less aggresive for reuse */ + ccubes_clean_up(ctx); } #ifdef _OPENMP diff --git a/src/cl_setup.c b/src/cl_setup.c index cbea775..3c77db7 100644 --- a/src/cl_setup.c +++ b/src/cl_setup.c @@ -225,6 +225,7 @@ cl_init(struct cl_uctx *puctx) /* * CPU */ + puctx->cpu_queue = NULL; #if 0 puctx->cpu_queue = clCreateCommandQueue(ctx, devices[1], 0, &result); diff --git a/src/clccubes.c b/src/clccubes.c index 195f714..2019258 100644 --- a/src/clccubes.c +++ b/src/clccubes.c @@ -484,8 +484,10 @@ void ccubes_clean_up(struct ccubes_context *ctx) { clReleaseProgram(ctx->ccubes_program); + log_debug("clccubes", "clReleaseProgram ccubes_program"); ccubes_unmap(ctx); + log_debug("clccubes", "ccubes_unmap"); /* INPUTS */ clReleaseMemObject(ctx->nofvalues); @@ -496,14 +498,19 @@ ccubes_clean_up(struct ccubes_context *ctx) clReleaseMemObject(ctx->last_index); clReleaseMemObject(ctx->p_covered); clReleaseMemObject(ctx->p_pichart_pos); + log_debug("clccubes", "clReleaseMemObject INPUTS"); /* OUTPUTS */ clReleaseMemObject(ctx->coverage); clReleaseMemObject(ctx->fixed_bits); clReleaseMemObject(ctx->value_bits); clReleaseMemObject(ctx->pichart_values); + log_debug("clccubes", "clReleaseMemObject OUTPUTS"); cl_clean_up(*ctx->clctx); + log_debug("clccubes", "cl_clean_up"); + + free(ctx); return; } diff --git a/src/clccubes.h b/src/clccubes.h index 43f8090..a7d1a34 100644 --- a/src/clccubes.h +++ b/src/clccubes.h @@ -98,4 +98,7 @@ ccubes_do_tasks(int n_tasks, unsigned int *pichart_values /* OUT: RW */ ); +void +ccubes_clean_up(struct ccubes_context *ctx); + #endif