Beispiel #1
0
        public unsafe void AddFloat32_Test()
        {
            Random r    = new Random();
            int    size = 10000;

            float[] x1, x2, expres;
            x1     = new float[size];
            x2     = new float[size];
            expres = new float[size];
            for (int i = 0; i < size; i++)
            {
                x1[i]     = (float)r.NextDouble() * 10 - 5;
                x2[i]     = (float)r.NextDouble() * 10 - 5;
                expres[i] = x1[i] + x2[i];
            }

            Tensor expected_res = expres.ToDisposedTensor(new Shape(size));


            Tensor t1, t2;

            t1 = x1.ToDisposedTensor(new Shape(size)).CopyTo(Device.Nvidia(0));
            t2 = x2.ToDisposedTensor(new Shape(size)).CopyTo(Device.Nvidia(0));
            Tensor myres = NvidiaGpuKernels.AddFloat32(t1, t2);


            //Console.WriteLine(myres);
            //Console.WriteLine(expected_res);
            Assert.AreEqual(myres.ToString(), expected_res.ToString());
            myres.Dispose();
            t1.Dispose();
            t2.Dispose();
        }
Beispiel #2
0
        public unsafe void AddFloat32_Test_3()
        {
            const int size  = 10;
            const int size2 = 5;

            float[] x1, x2, expres;
            x1 = new float[size] {
                1, 2, 3, 4, 5, 6, 7, 8, 9, 10
            };
            x2 = new float[size2] {
                1, 2, 3, 4, 5
            };
            expres = new float[size];

            for (int i = 0; i < size; i++)
            {
                expres[i] = x1[i] + x2[i % size2];
            }

            Tensor expected_res = expres.ToDisposedTensor(new Shape(size));

            Tensor t1, t2;

            t1 = x1.ToDisposedTensor(new Shape(size)).CopyTo(Device.Nvidia(0));
            t2 = x2.ToDisposedTensor(new Shape(size2)).CopyTo(Device.Nvidia(0));
            Tensor myres = NvidiaGpuKernels.AddFloat32(t1, t2);


            Console.WriteLine(myres);
            Console.WriteLine(expected_res);
            Assert.AreEqual(myres.ToString(), expected_res.ToString());
            myres.Dispose();
            t1.Dispose();
            t2.Dispose();
        }
Beispiel #3
0
        public unsafe void AddFloat32NvidiaGpuBig()
        {
            int    size  = 1000000;
            Tensor a     = new Tensor(new Shape(size), TensorConfig.NvidiaGPU_Float32);
            Tensor b     = new Tensor(new Shape(size), TensorConfig.NvidiaGPU_Float32);
            Tensor myres = NvidiaGpuKernels.AddFloat32(a, b);

            myres.Dispose();
            a.Dispose();
            b.Dispose();
        }