Fortran / Arrayfire维度问题

时间:2014-02-12 19:59:36

标签: arrays fortran arrayfire

我目前正在使用Arrayfire来加速Fortran CFD求解器。我们实现Fortran数组的方式意味着二维Fortran数组由(N,M,1)表示而不仅仅是(N,M),允许可分配数组处理2或3维参数。但是,当其中一个被复制到设备成为Arrayfire阵列时,它似乎自动给出尺寸(N,M)而不是(N,M,1)。当数组被复制回主机时,这会导致尺寸不匹配。

有没有办法改变这种行为?重写大部分求解器以不同方式处理二维数组会非常棘手。

这是一个显示此行为的测试用例:

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数组执行测试用例。

谢谢,哈利

1 个答案:

答案 0 :(得分:1)

(在评论和修改中回答。见Question with no answers, but issue solved in the comments (or extended in chat)

OP写道:

  

这不再是问题,因为只有使用2D数组执行测试用例。