Я начинаю использовать Halide и использую его в среде Python. В этой среде Python данные передаются как массивы Numpy, которые на самом деле являются псевдонимом массива C++, определенного в другом месте.
Однако, когда я использую вызов функции Halide, я получаю сообщение об ошибке:
Constraint violated: img.stride.0 (520) == 1 (1) Aborted (core dumped)
который можно «решить», скопировав массивы numpy в массивы макетов Fortran:
img=np.copy(img,order="F")
res=np.copy(res,order="F")
с img и res мои входные и выходные изображения. Однако обратите внимание, что это включает в себя дополнительные операции копирования, что очень плохо для общего доступа к глобальной памяти.
Как я могу обойти эту проблему? Я думал о том, чтобы на самом деле сообщить Python, что мои массивы имеют формат Fortran и имеют правильное переключение индексов.... Однако в настоящее время я использую PyArray_SimpleNewFromData для получения массивов Python (без фактического копирования данных), и это приводит к Массивы в стиле C.