私は Halide を使い始めており、Python 環境から使用しています。その Python 環境内でデータは Numpy 配列として渡されますが、これは実際には別の場所で定義された C++ 配列のエイリアスです。
ただし、Halide 関数の呼び出しを使用すると、エラーが発生します。
制約違反: img.stride.0 (520) == 1 (1) 中止 (コアダンプ)
これは、numpy 配列を Fortran レイアウト配列にコピーすることで「解決」できます。
img=np.copy(img,order="F")
res=np.copy(res,order="F")
img と res を使用して、入力画像と出力画像を作成します。ただし、これには余分なコピー操作が含まれることに注意してください。これは、グローバル メモリ アクセス全体にとって非常に悪いことです。
この問題を回避するにはどうすればよいですか? 私が考えていた方法は、配列に Fortran レイアウトがあり、インデックスが適切に切り替えられていることを実際に Python に伝えることです....ただし、現在 PyArray_SimpleNewFromData を使用して Python 配列を取得し (実際にデータをコピーすることなく)、結果は次のようになります。 C スタイルの配列。