Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }