我目前正在使用Arrayfire来加速一个Fortran CFD解算器。我们实现Fortran数组的方式意味着二维Fortran数组由(N,M,1)表示,而不仅仅是(N,M),允许可分配的数组处理二维或三维参数。但是,当其中一个被复制到设备上成为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数组执行的。
谢谢,哈里
发布于 2015-01-26 02:00:02
(在评论和编辑中回答。参见Question with no answers, but issue solved in the comments (or extended in chat) )
操作员写道:
这不再是问题,因为只有测试用例是使用2D数组执行的。
https://stackoverflow.com/questions/21738339
复制相似问题