Пример #1
0
        public static void TestUshortArrayUncheckedTotalFunctions(int testSetSize)
        {
            WriteLine();
            Write($"Testing ushort array unchecked total functions, generating test data...");
            var testData = GetRandomUShortArray(testSetSize);

            WriteLine($" done, testing...");

            var naiveTimesMs = new List <long>();
            var hwTimesMs    = new List <long>();

            for (var i = 0; i < 3; i++)
            {
                stopwatch.Restart();
                var total       = UShortSimdProcessor.NaiveUncheckedTotalOfArray(testData);
                var naiveTimeMs = stopwatch.ElapsedMilliseconds;
                naiveTimesMs.Add(naiveTimeMs);
                WriteLine($"Naive analysis took:                {naiveTimeMs}ms (total: {total}).");

                stopwatch.Restart();
                total = UShortSimdProcessor.HWAcceleratedUncheckedTotalOfArray(testData);
                var hwTimeMs = stopwatch.ElapsedMilliseconds;
                hwTimesMs.Add(hwTimeMs);
                WriteLine($"Hareware accelerated analysis took: {hwTimeMs}ms (total: {total}).");
            }

            WriteLine("Finding total of array of ushorts");
            WriteLine($"Naive method average time:          {naiveTimesMs.Average():.##}");
            WriteLine($"HW accelerated method average time: {hwTimesMs.Average():.##}");
            WriteLine($"Hardware speedup:                   {naiveTimesMs.Average() / hwTimesMs.Average():P}%");
        }
Пример #2
0
        public static void TestUshortArrayStats(int testSetSize)
        {
            WriteLine();
            Write($"Testing ushort array stats functions, generating test data...");
            var testData = GetRandomUShortArray(testSetSize);

            WriteLine($" done, testing...");

            var naiveTimesMs = new List <long>();
            var hwTimesMs    = new List <long>();

            for (var i = 0; i < 3; i++)
            {
                stopwatch.Restart();
                ushort max, min;
                double average;
                UShortSimdProcessor.NaiveGetStats(testData, out min, out max, out average);
                var naiveTimeMs = stopwatch.ElapsedMilliseconds;
                naiveTimesMs.Add(naiveTimeMs);
                WriteLine($"Naive analysis took:                {naiveTimeMs}ms (min: {min}, max: {max}, average: {average}).");

                stopwatch.Restart();
                UShortSimdProcessor.HWAcceleratedGetStats(testData, out min, out max, out average);
                var hwTimeMs = stopwatch.ElapsedMilliseconds;
                hwTimesMs.Add(hwTimeMs);
                WriteLine($"Hareware accelerated analysis took: {hwTimeMs}ms (min: {min}, max: {max}, average: {average}).");
            }

            WriteLine("Finding stats of array of ushorts");
            WriteLine($"Naive method average time:          {naiveTimesMs.Average():.##}");
            WriteLine($"HW accelerated method average time: {hwTimesMs.Average():.##}");
            WriteLine($"Hardware speedup:                   {naiveTimesMs.Average() / hwTimesMs.Average():P}%");
        }
Пример #3
0
        public static void TestUShortAdditionIntoResultsArray(int testSetSize)
        {
            WriteLine();
            Write("Testing ushort array addition into results array, generating test data...");
            var ushortsOne = GetRandomUShortArray(testSetSize);
            var ushortsTwo = GetRandomUShortArray(testSetSize);
            var result     = new ushort[testSetSize];

            WriteLine(" done, testing...");

            var naiveTimesMs = new List <long>();
            var hwTimesMs    = new List <long>();

            for (var i = 0; i < 3; i++)
            {
                stopwatch.Restart();
                UShortSimdProcessor.HwAcceleratedSumUnchecked(ushortsOne, ushortsTwo, result);
                var hwTimeMs = stopwatch.ElapsedMilliseconds;
                hwTimesMs.Add(hwTimeMs);
                WriteLine($"HW accelerated addition took: {hwTimeMs}ms (last value = {result[result.Length - 1]}).");

                stopwatch.Restart();
                UShortSimdProcessor.NaiveSumUnchecked(ushortsOne, ushortsTwo, result);
                var naiveTimeMs = stopwatch.ElapsedMilliseconds;
                naiveTimesMs.Add(naiveTimeMs);
                WriteLine($"Naive addition took:          {naiveTimeMs}ms (last value = {result[result.Length - 1]}).");
            }

            WriteLine("Testing ushort array addition");
            WriteLine($"Naive method average time:          {naiveTimesMs.Average():.##}");
            WriteLine($"HW accelerated method average time: {hwTimesMs.Average():.##}");
            WriteLine($"Hardware speedup:                   {naiveTimesMs.Average() / hwTimesMs.Average():P}%");
        }
Пример #4
0
        public static void TestInPlaceUShortAddition(int testSetSize)
        {
            WriteLine();
            Write("Testing ushort array in place addition, generating test data...");
            var ushortsOne = GetRandomUShortArray(testSetSize);
            var ushortsTwo = GetRandomUShortArray(testSetSize);

            WriteLine(" done, testing...");

            var naiveTimesMs = new List <long>();
            var hwTimesMs    = new List <long>();

            for (var i = 0; i < 3; i++)
            {
                var ushortsOneCopy = new ushort[ushortsOne.Length];

                ushortsOne.CopyTo(ushortsOneCopy, 0);
                stopwatch.Restart();
                UShortSimdProcessor.HwAcceleratedSumInPlaceUnchecked(ushortsOneCopy, ushortsTwo);
                var hwTimeMs = stopwatch.ElapsedMilliseconds;
                hwTimesMs.Add(hwTimeMs);
                WriteLine($"HW accelerated addition took: {hwTimeMs}ms (last value = {ushortsOneCopy[ushortsOneCopy.Length - 1]}).");

                ushortsOne.CopyTo(ushortsOneCopy, 0);
                stopwatch.Restart();
                UShortSimdProcessor.NaiveSumInPlaceUnchecked(ushortsOneCopy, ushortsTwo);
                var naiveTimeMs = stopwatch.ElapsedMilliseconds;
                naiveTimesMs.Add(naiveTimeMs);
                WriteLine($"Naive addition took:          {naiveTimeMs}ms (last value = {ushortsOneCopy[ushortsOneCopy.Length - 1]}).");
            }

            WriteLine("Testing ushort array addition");
            WriteLine($"Naive method average time:          {naiveTimesMs.Average():.##}");
            WriteLine($"HW accelerated method average time: {hwTimesMs.Average():.##}");
            WriteLine($"Hardware speedup:                   {naiveTimesMs.Average() / hwTimesMs.Average():P}%");
        }