예제 #1
0
        private void FormArray()
        {
            foreach (var item in Entities)
            {
                if (item is Operand <bool> )
                {
                    OutArray.Add(item);
                }
                else if (item is Operation <bool> )
                {
                    var oper = item as Operation <bool>;
                    if (Operations.Count == 0)
                    {
                        Operations.Push(oper);
                    }
                    else
                    {
                        ExpressionEntity head = Operations.Peek();
                        if (head is Operation <bool> )
                        {
                            var headOper = head as Operation <bool>;
                            if (oper.Priority <= headOper.Priority)
                            {
                                OutArray.Add(Operations.Pop());
                                Operations.Push(oper);
                            }
                            else
                            {
                                Operations.Push(oper);
                            }
                        }
                        else
                        {
                            Operations.Push(oper);
                        }
                    }
                }
                else if (item is Bracket)
                {
                    if (item.Name == "(")
                    {
                        Operations.Push(item);
                    }
                    else
                    {
                        var head = Operations.Pop();
                        while (head.Name != "(")
                        {
                            OutArray.Add(head);
                            head = Operations.Pop();
                        }
                    }
                }
            }

            while (Operations.Count != 0)
            {
                OutArray.Add(Operations.Pop());
            }
        }
예제 #2
0
        public bool SetVariable(string name, dynamic value)
        {
            var  lexems = OutArray.Where(l => l.Name == name);
            bool result = false;

            foreach (var item in lexems)
            {
                result = true;
                (item as Operand).Value = value;
            }

            return(result);
        }
예제 #3
0
        public void Execute()
        {
            //Create instance of OpenCL compiler
            var compiler = new OpenCLCompiler();

            //Select a default device
            compiler.UseDevice(0);

            //Compile the sample kernel
            compiler.CompileKernel(typeof(SGEMMKernals), typeof(SimpleKernels));

            //Create variable a, b and r
            int M = 30;
            int N = 30;
            int K = 20;

            var x = new InArray(new long[] { M, K }, DType.Float32);
            var y = new InArray(new long[] { K, M }, DType.Float32);
            var z = new OutArray(new long[] { M, N }, DType.Float32)
            {
                IsElementWise = false
            };

            //Get the execution engine
            var exec = compiler.GetExec();

            exec.Fill(x, 2);
            exec.Fill(y, 3);
            var r = y.ToArray();

            exec.MatMul(M, N, K, x, y, z);
            r = z.ToArray();
            //Print the result
            Console.WriteLine("\nResult----");
            for (int i = 0; i < z.Count; i++)
            {
                Console.Write(z[i] + " ");
            }
        }