Esempio n. 1
0
            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();
            }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
            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);
            }
Esempio n. 4
0
            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;
                }
            }
Esempio n. 5
0
        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];
        }
Esempio n. 6
0
            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);
            }
Esempio n. 8
0
            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);
                }
            }