void clean_all_buffer() {
	int 	i;

	for (i = 0; i < active_dev_ctr; i++) {
		clean_gpu_buffer(&globalObj[ocl_device_list[i]].gpu_buffer);
		HANDLE_CLERROR(clReleaseKernel(globalObj[ocl_device_list[i]].krnl[0]), "Error releasing kernel pbkdf2_preprocess");
		HANDLE_CLERROR(clReleaseKernel(globalObj[ocl_device_list[i]].krnl[1]), "Error releasing kernel pbkdf2_iter");
		HANDLE_CLERROR(clReleaseKernel(globalObj[ocl_device_list[i]].krnl[2]), "Error releasing kernel pbkdf2_postprocess");
	 }
}
void BF_clear_buffer() {
	clean_gpu_buffer(&buffers[gpu_id]);
	MEM_FREE(BF_current_S) ;
	MEM_FREE(BF_current_P) ;
	MEM_FREE(BF_init_key) ;
	MEM_FREE(opencl_BF_out) ;
	HANDLE_CLERROR(clReleaseKernel(krnl[gpu_id]), "Error releasing kernel") ;
	HANDLE_CLERROR(clReleaseProgram(program[gpu_id]),
	               "Error releasing Program");
}
void clean_all_buffer() {
	int 	i;

	for (i = 0; i < active_dev_ctr; i++) {
		clean_gpu_buffer(&globalObj[gpu_device_list[i]].gpu_buffer);
		HANDLE_CLERROR(clReleaseKernel(globalObj[gpu_device_list[i]].krnl[0]), "Error releasing kernel pbkdf2_preprocess_short");
		HANDLE_CLERROR(clReleaseKernel(globalObj[gpu_device_list[i]].krnl[1]), "Error releasing kernel pbkdf2_preprocess_long");
		HANDLE_CLERROR(clReleaseKernel(globalObj[gpu_device_list[i]].krnl[2]), "Error releasing kernel pbkdf2_iter");
		HANDLE_CLERROR(clReleaseKernel(globalObj[gpu_device_list[i]].krnl[3]), "Error releasing kernel pbkdf2_postprocess");
	 }
	HANDLE_CLERROR(clReleaseProgram(program[gpu_id]),
	               "Error releasing Program");
}