     }
 }
 
-__global__ void CalculateOutput( int States, float *CentroidDist, float *Output )
+__global__ void CalculatePOS( int States, float *CentroidDist, float *Output )
 {
     extern __shared__ float shared[];
     float* distance = (float*)&shared;

    sizeOfNodes = mRows*mCols;
    // Size of the data of nodes is rows times columns times centroids
    sizeOfNodeData = sizeOfNodes*mStates;
    // Size of the layer with all vectors is rows times columns times centroids times input vector
    sizeOfLayerData = sizeOfNodeData*mInputDimensionlity;
    // Keep track which centroid one
    mCentroidWinCounter = new int[sizeOfNodeData];
    for(int c=0;c<sizeOfNodeData;c++)
    {

__global__ void CalculateWinningCentroids( int States, float *CentroidDist, int *WinningCentroids );
__global__ void UpdateStarvation( int States, float StarvationCoefficient, int *WinningCentroids, float *CentroidStarvation );
__global__ void UpdateWinningCentroids( int States, int InputDimensionlity, float LearningRate, float *InputData, float *CentroidVectorData, int *WinningCentroids, float *CentroidDist );
__global__ void CalculatePOS( int States, float *CentroidDist, float *Output );

DestinKernel::DestinKernel( void )
{
