У меня есть давно работающая функция CUDA, и я хотел бы периодически сообщать о ее ходе.
Я пытаюсь использовать закрепленный массив вместе с потоками, как в https://towardsdatascience .com/cuda-by-numba-examples-7652412af1ee
Но даже если графический процессор загружен и значения необходимо изменить, сообщаемый прогресс всегда равен 0.import time
import numpy as np
from numba import cuda
import threading
@cuda.jit
def gpu_function(progress):
progress[0] = 17
for i in range(1000000000):
if i % 100000 == 0:
progress[0] = i // 1000
def monitor_progress(progress_gpu, progress_host, stream):
while True:
progress_gpu.copy_to_host(progress_host, stream=stream)
print(f"Progress: {progress_host[0]}")
time.sleep(1)
progress_host = np.zeros(1, dtype=np.int32)
with cuda.pinned(progress_host):
stream = cuda.stream()
progress_gpu = cuda.to_device(progress_host, stream=stream)
gpu_function[256, 1, stream](progress_gpu)
monitor_thread = threading.Thread(target=monitor_progress, args=(progress_gpu, progress_host, stream))
monitor_thread.start()
stream.synchronize()
Подробнее здесь: https://stackoverflow.com/questions/784 ... thon-numba