首页/文章/ 详情

Fortran如何实现矩阵与向量的乘法运算

7月前浏览2953

本文摘要(由AI生成):

矩阵为二维数组,向量乃一维数组,Fortran中matmul函数无法直接实现两者的乘法。然而,Fortran提供了多种方法解决此问题。一是将向量视作矩阵的退化形式,如将a(3)视为a(3,1)或a(1,3),进而用matmul运算。二是利用spread函数将一维数组扩展为二维数组,再通过matmul进行计算。此外,dot_product函数也能实现矩阵与向量的乘法,它通过对矩阵的每一行与向量进行点积运算来得出结果。程序员重复造轮子,在学习阶段有助于深入理解技术内部机制,锻炼技能,同时也是对新技术的实践应用。


矩阵是二维数组,而向量是一维数组,内置函数matmul不能实现矩阵与向量的乘法运算。在这一点Fortran不如matlab灵活。

Fortran如何实现矩阵与向量的乘法运算,现有以下三种方法供参考。

一)将一维数组看作二维数组的退化形式,比如a(3)可以看作a(3,1)或者a(1,3),这样就可以用matmul函数计算了。


二)用spread函数将一维数组扩展成二维数组,同样可用matmul函数计算。

来看过程。

数组c的第一列就是需要的计算结果。

spread(B,2,2)就是按列扩展,成为二维数组


三)利用dot_product函数。dot_product函数是向量点积运算函数,可将二维数组的每一行抽取出来,和一维数组作dot_product运算。

程序员为什么会重复造轮子?现在的软件发展趋势,越来越多的基础服务能够“开箱即用”、“拿来用就好”,越来越多的新软件可以通过组合已有类库、服务以搭积木的方式完成。这是趋势,将来不懂开发语言的人都可以通过利用现有软件组件快速构建出能解决实际问题的软件产品。对程序员来讲,在一开始的学习成长阶段,造轮子则具有特殊的学习意义,学习别人怎么造,了解内部机理,自己造造看,这是非常好的锻炼。每次学习新技术都可以用这种方式来练习。

来源:数值分析与有限元编程
MATLAB
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-04-02
最近编辑:7月前
太白金星
本科 慢慢来
获赞 5粉丝 15文章 326课程 0
点赞
收藏
作者推荐

CUDA Fortran

本文摘要(由AI生成):本文介绍了NVIDIA推出的CUDA架构,它使GPU能处理复杂计算问题,推动并行计算发展。CUDA C和OpenCL是流行的GPU编程语言,但Fortran语言转换不可行。为解决此问题,PGI开发了CUDA Fortran语言,并在其编译器中提供支持。PGI提供商业版和社区版,后者虽无IDE但可在VS中编辑源代码并通过命令行编译。最新版本PGI 19.4需与VS 2017配合,为Fortran开发者提供GPU运行途径,对科研和工程计算领域有重要意义。CUDA(ComputeUnified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。2007 年以来,以NVIDIA GPU为代表的加速器并行计算开始兴起。目前流行的GPU通用编程语言是CUDA C和OpenCL. 它们均是C/C++语言的扩展,因此可以方便地将C/C++代码移植到 GPU 上。但对于科学与工程计算中的重要编程语言Fortran,无法直接地改写为 CUDA C或 OpenCL。为使Fortran应用能够使用GPU加速,The Portland Group设计了CUDA Fortran 语言,并在自家的PGI fortran编译器中支持。气象、理论物理等领域的应用代码经过简单的改造,就能够利用GPU的强大计算能力。到目前为止,只有PGI Fortran编译器支持CUDA Fortran架构。PGI fortran编译器可从官网下载使用,商业版PGI同intel 的编译器一样集成visual studio作为IDE,免费的社区版不能使用IDE,只能通过命令行编译,但是vs还得安装,PGI需要visual studio组件支持。你也可以用visual studio编辑源代码,命令行编译,只不过CUDA关键字不能高亮显示。当然,使用命令行就不能不提makefile了。最新版PGI 19.4需要配套安装vs 2017社区版下载链接https://www.pgroup.com/products/community.htm参考资料:来源:数值分析与有限元编程

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈