public static void FillArray(int[] array, FillArrayType type, int maxValue = 10, int defaultValue = 1) { for (var i = 0; i < array.Length; ++i) { switch (type) { case FillArrayType.Constant: array[i] = defaultValue; break; case FillArrayType.Random: array[i] = randNum.Next(-maxValue, maxValue); break; case FillArrayType.RandomNonNegative: array[i] = randNum.Next(0, maxValue); break; case FillArrayType.Reversed: array[i] = array.Length - i; break; case FillArrayType.DubleReversed: array[i] = array.Length - (i % 2 == 0 ? i : i - 1); break; case FillArrayType.Sorted: default: array[i] = i; break; } } }
private void Test(int length, FillArrayType type) { // setup: var data = new int[length]; Utils.FillArray(data, type); // when: var result = reducer.Reduce(data); // then: Assert.AreEqual(result, Utils.Reduce(data)); }
private void Test(int length, int bins, FillArrayType type) { // setup: var data = new int[length]; Utils.FillArray(data, type); // when: var cpuResult = Utils.Histogram(data, bins); var gpuResult = gpuHist.Process(data, bins); // then: Assert.AreEqual(gpuResult.Length, bins); Assert.AreEqual(Utils.Reduce(gpuResult), length); for (var i = 0; i < bins; ++i) { Assert.AreEqual(gpuResult[i], cpuResult[i], "not eq at=" + i); } }
private void Test(int length, FillArrayType type) { // setup: var data = new int[length]; Utils.FillArray(data, type); // when: var gpuResult = gpuScan.Scan(data); // then: Assert.AreEqual(gpuResult.Length, length); var cpuResult = cpuScan.Scan(data); for (var i = 0; i < length; ++i) { Assert.AreEqual(gpuResult[i], cpuResult[i], "not eq at=" + i); } }
private static void IntArray(ref int[] initial, int size, FillArrayType type, int maxValue, int constValue) { initial = (initial == null || initial.Length != size) ? new int[size] : initial; Utils.FillArray(initial, type, maxValue, constValue); }