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()); } }
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); }
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] + " "); } }