0

我目前正在使用 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 数组执行的。

谢谢,哈利

4

1 回答 1

1

(已在评论和编辑中回答。请参阅没有答案的问题,但问题已在评论中解决(或在聊天中扩展)

OP写道:

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

于 2015-01-25T18:00:01.583 回答