public void Setup() { _height = 1200; _width = 1920; _size = _height * _width; _platformId = GetPlatforms().First(); _deviceId = GetPlatformDevices(_platformId).First(); _contextId = CreateContext(_platformId, new[] { _deviceId }); _queueId = CreateCommandQueue(_contextId, _deviceId); _sourceBufferId = OclMemoryPool.Shared.RentBuffer <int>(_contextId, _size); _resultBufferId = OclMemoryPool.Shared.RentBuffer <int>(_contextId, _size * 2); _counterBufferId = OclMemoryPool.Shared.RentBuffer <int>(_contextId, 1); _source = new int[_size]; _indexes = new int[_source.Length * 2]; var random = new Random(1); for (var x = 0; x < _source.Length; x++) { _source[x] = random.Next(0, 99); } _indexOf = new OclIndexOfAlgorithms(); }
public async Task IndexOf_greaterThan_simple() { // Arrange: var source = new int[] { 0, 0, 1, 1, 1, 0 }; var result = new int[source.Length * 2]; var count = new int[1] { 0 }; var w = 3; var h = 2; var platformId = GetPlatforms().First(); var deviceId = GetPlatformDevices(platformId).First(); var contextId = CreateContext(platformId, new[] { deviceId }); var queueId = CreateCommandQueue(contextId, deviceId); var srcBufferId = CopyBuffer(contextId, source.AsSpan()); var dstBufferId = CreateBuffer <int>(contextId, result.Length); var cntBufferId = CreateBuffer <int>(contextId, 1); // Act: var indexOf = new OclIndexOfAlgorithms(); var eventId = await indexOf.IndexOfGreaterThan(queueId, w, h, new OclBuffer <int>(srcBufferId), new OclBuffer <int>(dstBufferId), new OclBuffer <int>(cntBufferId), comparand : 0); // Assert: WaitForEvents(eventId); var readDstId = EnqueueReadBuffer(queueId, dstBufferId, false, 0, result.Length, result.AsSpan()); var readCntId = EnqueueReadBuffer(queueId, cntBufferId, false, 0, 1, count.AsSpan()); WaitForEvents(readDstId, readCntId); ReleaseContext(contextId); var cnt = count[0]; cnt.Should().Be(3); var indexes = new HashSet <(int, int)>(); for (var i = 0; i < result.Length; i += 2) { indexes.Add((result[i], result[i + 1])); } indexes.Should().BeEquivalentTo(new [] { (2, 0), (0, 1), (1, 1), (0, 0) });