Есть ли способ иметь целочисленную переменную-счетчик, которую можно увеличивать / уменьшать во всех потоках в распараллеленном ядре cuda? Приведенный ниже код выводит «[1]», поскольку изменения в массиве счетчиков из одного потока не применяются в других.
import numpy as np
from numba import cuda
@cuda.jit('void(int32[:])')
def func(counter):
counter[0] = counter[0] + 1
counter = cuda.to_device(np.zeros(1, dtype=np.int32))
threadsperblock = 64
blockspergrid = 18
func[blockspergrid, threadsperblock](counter)
print(counter.copy_to_host())