(self, tmpdir, async_queue, use_cuda_pinned_tensor, use_unpinned_tensor)
| 231 | |
| 232 | @pytest.mark.parametrize("async_queue", [2, 3]) |
| 233 | def test_read(self, tmpdir, async_queue, use_cuda_pinned_tensor, use_unpinned_tensor): |
| 234 | _skip_for_invalid_environment(use_cuda_pinned_tensor=use_cuda_pinned_tensor) |
| 235 | |
| 236 | ref_files = [] |
| 237 | for i in range(async_queue): |
| 238 | f, _ = _do_ref_write(tmpdir, i) |
| 239 | ref_files.append(f) |
| 240 | |
| 241 | single_submit = True |
| 242 | overlap_events = True |
| 243 | h = AsyncIOBuilder().load().aio_handle(BLOCK_SIZE, QUEUE_DEPTH, single_submit, overlap_events, IO_PARALLEL) |
| 244 | |
| 245 | use_cpu_locked_tensor = False |
| 246 | if use_unpinned_tensor: |
| 247 | aio_buffers = [ |
| 248 | torch.empty(IO_SIZE, dtype=torch.uint8, device=get_accelerator().device_name()) |
| 249 | for _ in range(async_queue) |
| 250 | ] |
| 251 | elif use_cuda_pinned_tensor: |
| 252 | aio_buffers = [ |
| 253 | get_accelerator().pin_memory(torch.empty(IO_SIZE, dtype=torch.uint8, device='cpu')) |
| 254 | for _ in range(async_queue) |
| 255 | ] |
| 256 | else: |
| 257 | tmp_tensor = torch.empty(0, dtype=torch.uint8) |
| 258 | aio_buffers = [h.new_cpu_locked_tensor(IO_SIZE, tmp_tensor) for _ in range(async_queue)] |
| 259 | use_cpu_locked_tensor = True |
| 260 | |
| 261 | _validate_handle_state(h, single_submit, overlap_events) |
| 262 | |
| 263 | for i in range(async_queue): |
| 264 | read_status = h.async_pread(aio_buffers[i], ref_files[i], 0) |
| 265 | assert read_status == 0 |
| 266 | |
| 267 | wait_status = h.wait() |
| 268 | assert wait_status == async_queue |
| 269 | |
| 270 | for i in range(async_queue): |
| 271 | with open(ref_files[i], 'rb') as f: |
| 272 | ref_buffer = list(f.read()) |
| 273 | assert ref_buffer == aio_buffers[i].tolist() |
| 274 | |
| 275 | if use_cpu_locked_tensor: |
| 276 | for t in aio_buffers: |
| 277 | h.free_cpu_locked_tensor(t) |
| 278 | |
| 279 | @pytest.mark.parametrize("async_queue", [2, 3]) |
| 280 | def test_write(self, tmpdir, use_cuda_pinned_tensor, async_queue, use_unpinned_tensor): |
nothing calls this directly
no test coverage detected