void oskar_interferometer_free(oskar_Interferometer* h, int* status) { int i; if (!h) return; oskar_interferometer_reset_cache(h, status); for (i = 0; i < h->num_gpus; ++i) { oskar_device_set(h->gpu_ids[i], status); oskar_device_reset(); } for (i = 0; i < h->num_sky_chunks; ++i) oskar_sky_free(h->sky_chunks[i], status); oskar_telescope_free(h->tel, status); oskar_mem_free(h->temp, status); oskar_timer_free(h->tmr_sim); oskar_timer_free(h->tmr_write); oskar_mutex_free(h->mutex); oskar_barrier_free(h->barrier); free(h->sky_chunks); free(h->gpu_ids); free(h->vis_name); free(h->ms_name); free(h->settings_path); free(h->d); free(h); }
void oskar_imager_free(oskar_Imager* h, int* status) { int i; if (!h) return; oskar_imager_reset_cache(h, status); oskar_mem_free(h->uu_im, status); oskar_mem_free(h->vv_im, status); oskar_mem_free(h->ww_im, status); oskar_mem_free(h->uu_tmp, status); oskar_mem_free(h->vv_tmp, status); oskar_mem_free(h->ww_tmp, status); oskar_mem_free(h->vis_im, status); oskar_mem_free(h->weight_im, status); oskar_mem_free(h->weight_tmp, status); oskar_mem_free(h->time_im, status); oskar_timer_free(h->tmr_grid_finalise); oskar_timer_free(h->tmr_grid_update); oskar_timer_free(h->tmr_init); oskar_timer_free(h->tmr_read); oskar_timer_free(h->tmr_write); oskar_mutex_free(h->mutex); oskar_imager_free_device_data(h, status); for (i = 0; i < h->num_files; ++i) free(h->input_files[i]); free(h->input_files); free(h->input_root); free(h->output_root); free(h->ms_column); free(h->gpu_ids); free(h->d); free(h); }