MCPcopy
hub / github.com/deepspeedai/DeepSpeed / test_read

Method test_read

tests/unit/ops/aio/test_aio.py:233–277  ·  view source on GitHub ↗
(self, tmpdir, async_queue, use_cuda_pinned_tensor, use_unpinned_tensor)

Source from the content-addressed store, hash-verified

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):

Callers

nothing calls this directly

Calls 11

AsyncIOBuilderClass · 0.90
get_acceleratorFunction · 0.90
appendMethod · 0.80
_do_ref_writeFunction · 0.70
_validate_handle_stateFunction · 0.70
loadMethod · 0.45
device_nameMethod · 0.45
pin_memoryMethod · 0.45
waitMethod · 0.45
readMethod · 0.45

Tested by

no test coverage detected