#define WORKGROUPSIZE 64 kernel void MinMax( global float * input, global float * output, int sizex, int sizey, int sizez, int size ) { int idx = get_global_id(0); int idy = get_global_id(1); int idz = get_global_id(2); int idx_local = get_local_id(0); int idy_local = get_local_id(1); int idz_local = get_local_id(2); int local_x = get_local_size(0); int local_y = get_local_size(1); int local_z = get_local_size(2); int local_size = local_x*local_y*local_z; int gid = idx + sizex*idy + sizex*sizey*idz; int gid_local = idx_local + local_x*idy_local +local_x*local_y*idz_local; int group_count = get_num_groups(0) * get_num_groups(1) * get_num_groups(2); int groups_x = get_num_groups(0); int groups_y = get_num_groups(1); int groups_z = get_num_groups(2); int groupid_x = get_group_id(0); int groupid_y = get_group_id(1); int groupid_z = get_group_id(2); int group_id = groupid_x + groups_x*groupid_y + groups_y*groups_x*groupid_z; bool isValid = true; __local int count_val = 0; count_val++; if(idx > sizex) isValid = false; if(idy > sizey) isValid = false; if(idz > sizez) isValid = false; if(isValid == true) { __local float Minvals[ WORKGROUPSIZE ]; __local float Maxvals[ WORKGROUPSIZE ]; Minvals[gid_local] = input[gid]; Maxvals[gid_local] = input[gid]; barrier(CLK_LOCAL_MEM_FENCE); int offset = local_size/2; //Lokal reduzieren for(;gid_local