der Kernel:
| 1 | __kernel void distances(constant float* data, int n, int D, int k, global float* centroids, | 
| 2 | global int* cluster, global float* distances ){ | 
| 3 | local float l_distances[64]; | 
| 4 | private int idg=(int)get_global_id(0); | 
| 5 | int idl=(int)get_local_id(0); | 
| 6 | private double sqdist=0; | 
| 7 | |
| 8 | for(int i=0; i<k;i++){ | 
| 9 | sqdist=0; | 
| 10 | for (int j=0; j<D;j++){ | 
| 11 | sqdist=fma((double)(centroids[i*D] -data[D*idg+j]),(double)(centroids[i*D]-data[D*idg+j]),sqdist); | 
| 12 |                     }
 | 
| 13 | l_distances[k*idl+i]=sqrt(sqdist); | 
| 14 | |
| 15 | |
| 16 |                     }
 | 
| 17 | |
| 18 | |
| 19 | private float d_min=0; | 
| 20 | for(int i=0;i<k;i++){ | 
| 21 | d_min =d_min<l_distances[k*idl+i]?l_distances[k*idl+i]:d_min; | 
| 22 | cluster[idg]=d_min=l_distances[k*idl+i]?i:cluster[idg]; | 
| 23 | |
| 24 | |
| 25 | |
| 26 |                     }
 | 
| 27 | |
| 28 | |
| 29 | distances[idg]=l_distances[idl]; | 
| 30 | |
| 31 | |
| 32 | }
 | 
die Fehlermeldungen: alle identifier in der letzten Zeile sind undefined, nach der Abschließenden Klammer erwartet der Compiler eine deklaration
 Thread beobachten
 Thread beobachten Seitenaufteilung abschalten
 Seitenaufteilung abschalten