【问题标题】:Fortran/Arrayfire Dimensioning IssueFortran/Arrayfire 尺寸标注问题
【发布时间】:2014-02-12 19:59:36
【问题描述】:

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

谢谢,哈利

【问题讨论】:

  • 会不会像:b(:,:,1) = ARR1 不是一个好的解决方案?
  • 问题是在程序中函数必须同时处理 2 (N,M,1) 和 3 (N,M,O) 维度参数,因此我将所有 3 个维度作为可分配。

标签: arrays fortran arrayfire


【解决方案1】:

(在 cmets 和编辑中回答。见Question with no answers, but issue solved in the comments (or extended in chat)

OP 写道:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    相关资源
    最近更新 更多