     }
 }
 
-__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;

    UpdateWinningCentroids<<<grid, threads, sharedMem>>>( mStates, mInputDimensionlity, mLearningRate, Input, dCentroidsVectorData, dWinningCentroids, dCentroidsDistance );
    // Kernel for calculating output
    sharedMem = (mStates+mStates)*sizeof(float);
    CalculateOutput<<<grid, threads, sharedMem>>>( mStates, dCentroidsDistance, dNodeOutput );

    this->WriteData(xml);
}

__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 )
{
