Exemple #1
0
        void DoInternalBenchmark()
        {
            int Devices = AcceleratorDevice.All.Length;

            foreach (var AcceleratorDevice in AcceleratorDevice.All)
            {
                base.WriteMessage(AcceleratorDevice.ToString());
                BenchmarkDevice(AcceleratorDevice);
            }

            base.WriteMessage("Please share results @ " + "https://www.codeproject.com/Articles/1116907/How-to-Use-Your-GPU-in-NET");

            base.WriteMessage("");
            base.WriteMessage("Get Prime Number Performance");

            int WorkSize = 5000000;

            int[] ArrayA = GetArray(WorkSize);
            int[] ArrayB = new int[WorkSize];
            int[] ArrayC = new int[WorkSize];
            int[] ArrayD = new int[WorkSize];
            int[] ArrayE = new int[WorkSize];

            Array.Copy(ArrayA, ArrayB, ArrayA.Length);
            Array.Copy(ArrayA, ArrayC, ArrayA.Length);
            Array.Copy(ArrayA, ArrayD, ArrayA.Length);
            Array.Copy(ArrayA, ArrayE, ArrayA.Length);

            try
            {
                if (AcceleratorDevice.HasCPU)
                {
                    RunCPU(ArrayA);
                }
                if (AcceleratorDevice.HasGPU)
                {
                    RunGPU(ArrayB);
                }
                RunAllDevices(ArrayC);
                RunNative(ArrayD);

                if (AcceleratorDevice.HasGPU)
                {
                    base.WriteMessage("");
                    base.WriteMessage("Async Test");
                    AsyncTest(ArrayE);
                }
            }
            catch (Exception ex)
            {
                base.WriteMessage(ex.Message);
            }
        }
Exemple #2
0
        void BenchmarkDevice(AcceleratorDevice Device)
        {
            Console.Write("\tSingle GFlops = ");
            base.WriteMessage(EasyCL.GetDeviceGFlops_Single(Device).ToString("0.00") + "GFlops");

            Console.Write("\tDouble GFlops = ");
            base.WriteMessage(EasyCL.GetDeviceGFlops_Double(Device).ToString("0.00") + "GFlops");

            Console.Write("\tMemory Bandwidth = ");
            base.WriteMessage(EasyCL.GetDeviceBandwidth_GBps(Device).ToString("0.00") + "GByte/s");
            base.WriteMessage("");
        }