0

現在、Arrayfire を使用して Fortran CFD ソルバーを高速化しています。Fortran 配列を実装する方法は、2 次元の Fortran 配列が (N,M) ではなく (N,M,1) で表されることを意味し、割付け可能な配列が 2 次元または 3 次元の引数を処理できるようにします。ただし、これらのいずれかがデバイスにコピーされて Arrayfire Array になると、(N,M,1) ではなく (N,M) の次元が自動的に与えられるようです。これにより、アレイがホストにコピーされて戻されるときに寸法の不一致が発生します。

この動作を変更する方法はありますか? 2 次元配列を別の方法で処理するようにソルバーの大部分を書き直すのはかなり難しいでしょう。

この動作を示すテストケースを次に示します。

program testcase
  use arrayfire
  implicit none
  real,dimension(4,4,1) :: a = 5.0
  real,dimension(:,:,:),allocatable :: b
  type(array) ARR1

  ARR1 = a
  b=ARR1

end program testcase

私は Arrayfire フォーラムでもこれを尋ねましたが、他の誰かがこれに問題として遭遇したかどうか疑問に思っていました.

編集: テスト ケースのみが 2D 配列で実行されていたため、これはもはや問題ではありません。

ありがとう、ハリー

4

1 に答える 1

1

(コメントと編集で回答済み。回答のない質問を参照してください。ただし、コメントで問題は解決されています (またはチャットで拡張されています) )

OP は次のように書いています。

テストケースのみが 2D 配列で実行されていたため、これはもはや問題ではありません。

于 2015-01-25T18:00:01.583 に答える