问题描述
我最近继承了Fortran 2008代码,该代码无需使用隐式接口即可执行对BLAS / LAPACK的调用。这导致在某些情况下错误类型的参数获得输入,例如实数作为整数传递。
但是,我更担心的是一般如何将数组传递到BLAS / LAPACK中
call daxpy(n,da,dx(start),1,dy(start),1)
其中start
是数组dx
和dy
中的有效位置。
我的理解是,通过不为daxpy
提供显式接口,我们可以避免传递实数而不是实数数组。此外,在执行代码时,我怀疑BLAS / LAPACK会看到dx(start)
的内存地址,并假设其连续访问下一个n
条目。 如果我错了,请纠正我。
上面的实现(缺少显式接口,仅传递数组的开头)使我有些不舒服,因此我决定在代码中定义BLAS / LAPACK接口。因此,对daxpy
的上述调用已变为
call daxpy(n,dx(start:),dy(start:),1)
我的问题是,像这样传递数组是否被认为是好的做法/安全的方法?而且,有没有办法检查/保证在调用中没有创建临时数组?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)