我目前正在使用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数组执行测试用例。
谢谢,哈利
答案 0 :(得分:1)
(在评论和修改中回答。见Question with no answers, but issue solved in the comments (or extended in chat))
OP写道:这不再是问题,因为只有使用2D数组执行测试用例。