У Pycuda есть давняя ошибка, из-за которой он не сохраняет порядок или делает шаги при копировании, например:
import numpy as np
import pycuda.autoinit
from pycuda import gpuarray
np_array = np.array([[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]], order="F")
gpu_array = gpuarray.to_gpu(np_array)
gpu_array_copy = gpu_array.copy()
# fails, order isn't the same. ravel also shows difference in order
assert(np.array_equal(gpu_array_copy.get(), np_array))
Мне интересно, как на самом деле объяснить это?Является ли основная память на самом деле то же самое?Как я могу убедиться, что мои копии на самом деле, ну, в общем, копировать в pycuda?
Проблемы вроде this , кажется, указывают на то, что шаги могут быть исправлены, но я не знаю, означает ли это фактическоеданные внизу (необработанная память устройства) на самом деле настроены правильно.