将数组部分传递给BLAS Fortran

问题描述

我最近继承了Fortran 2008代码,该代码无需使用隐式接口即可执行对BLAS / LAPACK的调用。这导致在某些情况下错误类型的参数获得输入,例如实数作为整数传递。

但是,我更担心的是一般如何将数组传递到BLAS / LAPACK中

call daxpy(n,da,dx(start),1,dy(start),1)

其中start是数组dxdy中的有效位置。

我的理解是,通过不为daxpy提供显式接口,我们可以避免传递实数而不是实数数组。此外,在执行代码时,我怀疑BLAS / LAPACK会看到dx(start)的内存地址,并假设其连续访问下一个n条目。 如果我错了,请纠正我

上面的实现(缺少显式接口,仅传递数组的开头)使我有些不舒服,因此我决定在代码中定义BLAS / LAPACK接口。因此,对daxpy的上述调用已变为

call daxpy(n,dx(start:),dy(start:),1)

我的问题是,像这样传递数组是否被认为是好的做法/安全的方法?而且,有没有办法检查/保证在调用中没有创建临时数组?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)