protected int[] Crunch() { int[] data = new int[displayPort[0] * displayPort[1]]; if (DeviceName == "CPUOnly") { RestartWatch(); //page resource MandelbrotExtensions.CalcCPUParallel(data, displayPort, areaView, maxIterations); // Single thread CPU ExecutionsDetails1 = ElapsedTime("CPU Only Mandelbrot"); } else { Device device = MandelbrotInstance.ContextInstance.Devices.First(x => x.Name == DeviceName); if (_lastDevice != device) { RestartWatch(); MandelbrotInstance.CompileKernel(device); ExecutionsDetails2 = ElapsedTime("IL Compile - " + device.Name); _lastDevice = device; } RestartWatch(); MandelbrotInstance.CalcGPU(ref data, displayPort, areaView, maxIterations); // ILGPU-CPU-Mode ExecutionsDetails3 = ElapsedTime("IL Run - " + DeviceName); } return(data); }
protected int[] Crunch(string device) { int[] data = new int[displayPort[0] * displayPort[1]]; if (DeviceName == "Single Thread") { RestartWatch(); MandelbrotExtensions.CalcCPUSingle(data, displayPort, areaView, maxIterations); // Single thread CPU ExecutionsDetails1 = ElapsedTime("Single Thread"); } else if (DeviceName == "Parallel CPU") { RestartWatch(); MandelbrotExtensions.CalcCPUParallel(data, displayPort, areaView, maxIterations); // Single thread CPU ExecutionsDetails2 = ElapsedTime("Parallel CPU"); } else { _computing = true; if (_lastDevice != _CPUDevice) { RestartWatch(); MandelbrotInstance.CompileKernel(_CPUDevice); ExecutionsDetails3 = ElapsedTime("IL Compile - " + _CPUDevice.Name); _lastDevice = _CPUDevice; } RestartWatch(); MandelbrotInstance.CalcGPU(ref data, displayPort, areaView, maxIterations); // ILGPU-CPU-Mode _computing = false; ExecutionsDetails4 = ElapsedTime("IL Run - " + _CPUDevice.Name); } return(data); }