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