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