예제 #1
0
        static void Main(string[] args)
        {
            XArray x   = new XArray(new float[] { -1, 2, -3, -4, 5, 6, -7, 8, 9 }).Reshape(3, 3);
            var    act = new Activation(Activations.RELU);

            x = act.Forward(x);
            var result = x.ToArray();
        }
예제 #2
0
        public void Execute()
        {
            //Create instance of OpenCL compiler
            var compiler = new OpenCLCompiler();

            //Get the available device list
            Console.WriteLine("\nList Devices----");
            foreach (var item in compiler.Devices)
            {
                Console.WriteLine(item);
            }

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

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

            //See all the kernel methods
            Console.WriteLine("\nList Kernels----");
            foreach (var item in compiler.Kernels)
            {
                Console.WriteLine(item);
            }

            //Create variable a, b and r
            var x = new XArray(new float[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }).Reshape(3, 3);
            var y = new XArray(new long[] { 3, 3 });
            var z = new XArray(new long[] { 3, 3 }, DType.Float32);

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

            //Execute fill kernel method
            exec.Fill(y, 0.5f);
            var r = y.ToArray();

            //Execute AddData kernel method
            exec.AddTensor(x, y, z);
            r = z.ToArray();
            //Execute AddHalf kernel method
            //var xhalf = Array.ConvertAll(x, v => (half)v);
            //var yhalf = Array.ConvertAll(y, v => (half)v);
            //exec.AddHalf(xhalf, yhalf);
            //z = Array.ConvertAll(yhalf, v => (float)v);

            //Execuete SAXPY kernel method
            exec.SAXPY(x, y, 2f);

            //Print the result
            Console.WriteLine("\nResult----");
            for (int i = 0; i < y.Count; i++)
            {
                Console.Write(y[i] + " ");
            }
        }