Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 将数组的部分传入BLAS Fortran_Arrays_Fortran_Lapack_Blas - Fatal编程技术网

Arrays 将数组的部分传入BLAS Fortran

Arrays 将数组的部分传入BLAS Fortran,arrays,fortran,lapack,blas,Arrays,Fortran,Lapack,Blas,我最近继承了一段Fortran 2008代码,其中对BLAS/LAPACK的调用在不使用隐式接口的情况下执行。这导致了某些情况下错误类型的参数得到输入,例如实数作为整数传递 然而,我更关心的是数组通常是如何传递到BLAS/LAPACK的 call daxpy(n, da, dx(start), 1, dy(start), 1) 其中start是数组dx和dy中的有效位置 我的理解是,通过不为daxpy提供显式接口,我们可以不传入实数而不是实数数组。此外,在代码执行过程中,我怀疑BLAS/LAP

我最近继承了一段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, da, dx(start:), 1, dy(start:), 1)

我的问题是,这样传递数组是否被视为良好做法/安全?此外,有没有办法检查/保证调用中没有创建临时数组?

序列关联适用于接口是显式的还是隐式的,并且是完全标准的。@francescalus谢谢,所以我认为第二个实现非常好第二个实现非常好。在Fortran中,无法确保不为任何调用生成临时对象,它依赖于实现。如果您担心您感兴趣的平台上的性能基准-这是了解特定序列关联应用的唯一方法,无论接口是显式的还是隐式的,并且是完全标准的。@francescalus谢谢,因此我认为第二个实现非常好第二个实现非常好。在Fortran中,无法确保不为任何调用生成临时对象,它依赖于实现。如果您担心您感兴趣的平台上的性能基准-这是唯一可以确定的方法