public override void Init(int nGPU) { if (DecayFactor != 1f) { if (DecayFactor > 1f) { MyLog.WARNING.WriteLine("Decay factor on a HashingMemoryNode that is greater than one is suspicious..."); } _polynomialFuncKernel = MyKernelFactory.Instance.Kernel(nGPU, @"Transforms\TransformKernels", "PolynomialFunctionKernel"); _polynomialFuncKernel.SetupExecution(Memory.Count); } if (AddFactor != 1f) { _constMulKernel = MyKernelFactory.Instance.Kernel(nGPU, @"Transforms\TransformKernels", "PolynomialFunctionKernel"); _constMulKernel.SetupExecution(Owner.SymbolSize); } if (NormalizeTarget) { _combineVectorsKernel = MyKernelFactory.Instance.Kernel(nGPU, @"Common\CombineVectorsKernel", "CombineTwoVectorsKernel"); _combineVectorsKernel.SetupExecution(Owner.SymbolSize); _mapToIdcsKernel = MyKernelFactory.Instance.Kernel(nGPU, @"Common\CombineVectorsKernel", "MapToIdcs"); _mapToIdcsKernel.SetupExecution(Owner.SymbolSize); _dotKernel = MyReductionFactory.Kernel(nGPU, MyReductionFactory.Mode.f_DotProduct_f); } else { _mapToIdcsKernel = MyKernelFactory.Instance.Kernel(nGPU, @"common\CombineVectorsKernel", "AddToIdcs"); _mapToIdcsKernel.SetupExecution(Owner.SymbolSize); } Temp.SafeCopyToHost(); }
public MyFourierBinder(MyWorkingNode owner, int inputSize, MyMemoryBlock <float> tempBlock) : base(owner, inputSize, tempBlock) { m_fft = new CudaFFTPlan1D(inputSize, cufftType.R2C, 1); m_ifft = new CudaFFTPlan1D(inputSize, cufftType.C2R, 1); m_mulkernel = MyKernelFactory.Instance.Kernel(owner.GPU, @"Common\CombineVectorsKernel", "MulComplexElementWise"); m_mulkernel.SetupExecution(inputSize + 1); m_involutionKernel = MyKernelFactory.Instance.Kernel(owner.GPU, @"Common\CombineVectorsKernel", "InvolveVector"); m_involutionKernel.SetupExecution(inputSize - 1); m_inversionKernel = MyKernelFactory.Instance.Kernel(owner.GPU, @"Transforms\InvertValuesKernel", "InvertLengthComplexKernel"); m_inversionKernel.SetupExecution(inputSize); m_dotKernel = MyReductionFactory.Kernel(owner.GPU, MyReductionFactory.Mode.f_DotProduct_f); m_normalKernel = MyKernelFactory.Instance.Kernel(owner.GPU, @"Transforms\TransformKernels", "PolynomialFunctionKernel"); m_normalKernel.SetupExecution(inputSize); m_firstFFTOffset = 0; m_secondFFTOffset = (inputSize + 1) * 2; m_tempOffset = (inputSize + 1) * 4; Denominator = inputSize; }
float NearestCC_dist; //. similarity to closest public override void Init(int nGPU) { m_kernel_AddNewCCenter = MyKernelFactory.Instance.Kernel(nGPU, @"Vision\KMeansWM", "AddDataAsCC"); m_kernel_AddNewCCenter.SetupExecution(Owner.DescCount); m_kernel_UpadteCC_desc = MyKernelFactory.Instance.Kernel(nGPU, @"Vision\KMeansWM", "UpadateCC_Desc"); m_kernel_UpadteCC_desc.SetupExecution(Owner.DescCount); m_kernel_UpdateCC_XY = MyKernelFactory.Instance.Kernel(nGPU, @"Vision\KMeansWM", "UpdateCC_XY"); m_kernel_UpdateCC_XY.SetupExecution(Owner.ObjectXY.Count); m_dotKernel = MyReductionFactory.Kernel(nGPU, MyReductionFactory.Mode.f_DotProduct_f); m_mulKernel = MyKernelFactory.Instance.Kernel(nGPU, @"Transforms\TransformKernels", "PolynomialFunctionKernel"); m_mulKernel.SetupExecution(Owner.DescCount); m_matMultpl = MyKernelFactory.Instance.Kernel(Owner.GPU, @"Common\CombineVectorsKernel", "MatMultipl_naive"); m_matMultpl.GridDimensions = new ManagedCuda.VectorTypes.dim3(1, Owner.DescCount); m_matMultpl.BlockDimensions = new ManagedCuda.VectorTypes.dim3(1, 1); m_minIdxKernel = MyReductionFactory.Kernel(nGPU, MyReductionFactory.Mode.f_MinIdx_ff); m_kernel_UpdateXY_basedOnTheBrainsMovement = MyKernelFactory.Instance.Kernel(nGPU, @"Vision\KMeansWM", "ApplyBrainsMovement"); m_kernel_UpdateCC_XY.SetupExecution(Owner.MaxClusters); }
public override void Init(int nGPU) { in0 = Owner.GetInput(0); in1 = Owner.GetInput(1); out0 = Owner.GetOutput(0); m_kernel = Owner.InputBranches > 2 ? MyKernelFactory.Instance.Kernel(nGPU, @"Common\CombineVectorsKernel") : MyKernelFactory.Instance.Kernel(nGPU, @"Common\CombineVectorsKernel", "CombineTwoVectorsKernelVarSize"); m_kernel.SetupExecution(out0.Count); switch (Owner.Operation) { case MyJoinOperation.AddToIdcs: m_kernel = MyKernelFactory.Instance.Kernel(nGPU, @"Common\CombineVectorsKernel", "AddToIdcs"); m_kernel.SetupExecution(in1.Count); break; case MyJoinOperation.AddToIdcs_Normalize: m_kernel = MyKernelFactory.Instance.Kernel(nGPU, @"Common\CombineVectorsKernel", "CombineTwoVectorsKernel"); m_kernel.SetupExecution(in1.Count); m_mapToIdcsKernel = MyKernelFactory.Instance.Kernel(nGPU, @"Common\CombineVectorsKernel", "MapToIdcs"); m_mapToIdcsKernel.SetupExecution(in1.Count); m_dotKernel = MyReductionFactory.Kernel(nGPU, MyReductionFactory.Mode.f_DotProduct_f); break; case MyJoinOperation.GatherFromIdcs: m_kernel = MyKernelFactory.Instance.Kernel(nGPU, @"Common\CombineVectorsKernel", "CombineTwoVectorsKernel"); m_kernel.SetupExecution(in1.Count); break; case MyJoinOperation.DotProduct: case MyJoinOperation.DistanceSquared: m_kernel.SetupExecution(in0.Count); m_dotKernel = MyReductionFactory.Kernel(nGPU, MyReductionFactory.Mode.f_DotProduct_f); break; case MyJoinOperation.CosineDistance: m_dotKernel = MyReductionFactory.Kernel(nGPU, MyReductionFactory.Mode.f_Cosine_f); break; case MyJoinOperation.MatMultiplication: { // out0.Count / out0.ColumnHint m_kernel = MyKernelFactory.Instance.Kernel(nGPU, @"Common\CombineVectorsKernel", "MatMultipl_naive"); int MAX_BLOCK_SIZE = 1; m_kernel.GridDimensions = new ManagedCuda.VectorTypes.dim3(out0.ColumnHint / MAX_BLOCK_SIZE, out0.Count / out0.ColumnHint / MAX_BLOCK_SIZE); m_kernel.BlockDimensions = new ManagedCuda.VectorTypes.dim3(MAX_BLOCK_SIZE, MAX_BLOCK_SIZE); } break; } }
public override void Init(int nGPU) { m_initCentroidsKernel = MyKernelFactory.Instance.Kernel(nGPU, @"Clustering\KMeansKernel", "InitCentroidsKernel"); m_computeEuklidianDistancesKernel = MyKernelFactory.Instance.Kernel(nGPU, @"Clustering\KMeansKernel", "ComputeEuklidianDistancesKernel"); m_findNearestCentroidKernel = MyKernelFactory.Instance.Kernel(nGPU, @"Clustering\KMeansKernel", "FindNearestCentroidKernel"); m_sumNewCentroidCoordinatesKernel = MyKernelFactory.Instance.Kernel(nGPU, @"Clustering\KMeansKernel", "SumNewCentroidCoordinatesKernel"); m_avgCentroidCoordinatesKernel = MyKernelFactory.Instance.Kernel(nGPU, @"Clustering\KMeansKernel", "AvgCentroidCoordinatesKernel"); m_copyInputToVisFieldKernel = MyKernelFactory.Instance.Kernel(nGPU, @"Clustering\KMeansKernel", "CopyInputToVisFieldKernel"); m_markCentroidsKernel = MyKernelFactory.Instance.Kernel(nGPU, @"Clustering\KMeansKernel", "MarkCentroidsKernel"); m_reduction = MyReductionFactory.Kernel(nGPU, MyReductionFactory.Mode.f_Sum_f); m_d_changeFlag = new CudaDeviceVariable <int>(1); m_h_changeFlag = new int[1]; }
public override void Init(int nGPU) { random = new Random(); if (Owner.Method == ControlMethod.SimpleMean) { m_kernel = MyKernelFactory.Instance.Kernel(nGPU, @"Common\Statistics", "PrepareMeanStdDev"); m_reduction_kernel = MyReductionFactory.Kernel(nGPU, MyReductionFactory.Mode.f_Sum_f); m_finalize_kernel = MyKernelFactory.Instance.Kernel(nGPU, @"Common\Statistics", "FinalizeMeanStdDev"); m_eye_kernel = MyKernelFactory.Instance.Kernel(nGPU, @"Retina\FindBrightSpotKernel", "ApplyEyeMovement"); m_imageWidth = Owner.AttentionMap.ColumnHint; m_imageHeight = Owner.AttentionMap.Count / m_imageWidth; m_finalize_kernel.SetupExecution(1); } else { m_kernel = MyKernelFactory.Instance.Kernel(nGPU, @"Common\Statistics", "PrepareK_Means"); m_reduction_kernel = MyReductionFactory.Kernel(nGPU, MyReductionFactory.Mode.f_Sum_f); m_sumKernel = MyKernelFactory.Instance.Kernel(nGPU, @"Common\Statistics", "SumCentroids"); m_finalize_kernel = MyKernelFactory.Instance.Kernel(nGPU, @"Common\Statistics", "FinalizeK_Means"); m_dbiKernel = MyKernelFactory.Instance.Kernel(nGPU, @"Common\Statistics", "EvaluateDBI"); m_1meansKernel = MyKernelFactory.Instance.Kernel(nGPU, @"Common\Statistics", "Prepare_1_MeansForJoin"); m_2meansKernel = MyKernelFactory.Instance.Kernel(nGPU, @"Common\Statistics", "Prepare_2_MeansForDivision"); m_eye_kernel = MyKernelFactory.Instance.Kernel(nGPU, @"Retina\FindBrightSpotKernel", "ApplyEyeMovement"); m_setKernel = MyKernelFactory.Instance.Kernel(nGPU, @"Common\SetKernel"); m_imageWidth = Owner.AttentionMap.ColumnHint; m_imageHeight = Owner.AttentionMap.Count / m_imageWidth; } m_kernel.SetupExecution(Owner.AttentionMap.Count); m_1meansKernel.SetupExecution(Owner.AttentionMap.Count); m_2meansKernel.SetupExecution(Owner.AttentionMap.Count); m_eye_kernel.SetupExecution(1); Owner.m_centroidsCount = 5; }
public override void Execute() { // Let only one node init the shared thing if ((Owner.VectorMode == VectorGenerationMode.AverageBaseVectors && !_firstBase) || !_first) { return; } var random = new Random(Owner.Seed); var dotKernel = MyReductionFactory.Kernel(Owner.GPU, MyReductionFactory.Mode.f_DotProduct_f); var multKernel = MyKernelFactory.Instance.Kernel(Owner.GPU, @"common\CombineVectorsKernel", "CombineTwoVectorsKernelVarSize"); var transposeKernel = MyKernelFactory.Instance.Kernel(Owner.GPU, @"VSA\RandomMapper", "Transpose"); int xDim, yDim; AxisToNormalizeEnum axisToNormalize = AxisToNormalize; if (!Owner.DoDecoding) { xDim = Owner.InputSize; yDim = Owner.OutputSize; } else { xDim = Owner.OutputSize; yDim = Owner.InputSize; axisToNormalize = axisToNormalize == AxisToNormalizeEnum.xDim ? AxisToNormalizeEnum.yDim : AxisToNormalizeEnum.xDim; } GenerateTransformMatrix( Owner.UnmanagedVectors, Owner.UnmanagedBaseVectors, Owner.Temp, random, xDim, yDim, dotKernel, multKernel, transposeKernel, Owner.GPU, Owner.VectorMode, axisToNormalize); MyMemoryManager.Instance.ClearGlobalVariable(Owner.GlobalVariableBasesName, Owner.GPU); MyMemoryManager.Instance.RemoveBlock(Owner, Owner.UnmanagedBaseVectors); }
public override void Init(int nGPU) { lastIdx = -1; if (Owner.UseBSCVariety) { m_kernel = MyReductionFactory.Kernel(nGPU, MyReductionFactory.Mode.f_Sum_f); } else { m_kernel = MyReductionFactory.Kernel(nGPU, MyReductionFactory.Mode.f_DotProduct_f); } MyMemoryManager.Instance.ClearGlobalVariable(Owner.GlobalVariableName, nGPU); if (Owner.UseBSCVariety) { m_similarityKernel = MyKernelFactory.Instance.Kernel(Owner.GPU, @"Common\CombineVectorsKernel", "CombineTwoVectorsKernel"); m_similarityKernel.SetupExecution(Owner.SymbolSize); } }