ZT - 怎样提高调用数学函数的程序的性能(2)

什么是自动化向量?

自动化向量技术是一种过程,在这个过程中 IBM XL C/C++ 或者 Fortran 汇编器会识别一个机会,去改善汇编过程中程序的性能,方法就是将对一次循环中一个标准库(C/C++ 库或者 Fortran 本质)的访问替换为对相应 MASS 向量函数的访问。因为 MASS 向量函数要比对一个标准库函数的重复访问快很多(倍数接近 30 倍),所以最后得到的性能改善效果将会是惊人的。

一个简单的例子就是为多个论断计算特定函数的循环,例如接下来的 Fortran 程序。

subroutine sub (y, x, n)
    real*8 y(*), x(*)
    integer n, i
    intrinsic exp
    do i=1,n
        y(i) = exp(x(i))  ! standard intrinsic
    end do
end subroutine

有了适当的汇编器选项,汇编器就会意识到机会去给程序加速,方法就是将对 exp() 的重复访问替换为相应的 MASS 向量函数 vexp(),结果会产生一个程序,好像最开始是这样写成的这样:

include 'massv.include'
subroutine sub (y, x, n)
    real*8 y(*), x(*)
    integer n
    call vexp (y, x, n)  ! MASS vector function
end subroutine

这只是一个简单的范例,演示了自动向量化背后的基本思想。XL 汇编器实际上能够识别更加复杂的机会,并在需要的条件下重新安排源程序中的指南,以创建自动向量化的机会。

在本文中的范例研究部分中,会检查一个更加复杂和实际的范例。

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16896827/viewspace-1036475/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16896827/viewspace-1036475/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值