自动化向量技术是一种过程,在这个过程中 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/