KvikIO can be used in place of Python’s built-in open() function with the caveat that a file is always opened in binary ("b") mode. In order to open a file, use KvikIO’s filehandle kvikio.cufile.CuFile().

import cupy
import kvikio

a = cupy.arange(100)
f = kvikio.CuFile("test-file", "w")
# Write whole array to file

b = cupy.empty_like(a)
f = kvikio.CuFile("test-file", "r")
# Read whole array from file
assert all(a == b)

# Use contexmanager
c = cupy.empty_like(a)
with kvikio.CuFile(path, "r") as f:
assert all(a == c)

# Non-blocking read
d = cupy.empty_like(a)
with kvikio.CuFile(path, "r") as f:
    future1 = f.pread(d[:50])
    future2 = f.pread(d[50:], file_offset=d[:50].nbytes)
    future1.get()  # Wait for first read
    future2.get()  # Wait for second read
assert all(a == d)