第五节 市场上主流的GPU平行运算架构
目前市场上平行运算的软件开发架构有两大类,一类是以CPU的多核架构为主,另一类则是以GPU的多核架构为主。由于金融计算的高运算量,本文着重在后者的架构。市场上GPU的多核架构亦有两大架构,分别是NVIDIA的CUDA架构,以及由Apple公司提出并得到多家开发商支持,并由KhronosGroup设计的开放计算语言(Open Computing Language, OpenCL)。
CUDA是一个专属于NVIDIA公司的开发架构,因此只支持NVIDIA的GPU显示适配器。由于NVIDIA介入此一领域较早,因此他所提供的工具较为齐全。CUDA所提供的链接库有BLAS、FFT、Random三大类。另外,CUDA亦提供整合于微软开发软件Visual Studio的除错工具,可以在除错模式下观察GPU内变量的变化。另外,除了C语言,CUDA也提供了C++的支持链接库Thrust。整体而言,CUDA的开发资源相当地好。
OpenCL是近来由Khronos所推出的一个异质性计算的开放架构(注六),他可以同时使用CPU与GPU的资源,他也不限于单一公司的硬件架构,因此不论是AMD、NVIDIA的GPU或是Intel、IBM的多核CPU,都可以支持使用于此架构之下。然而,OpenCL在链接库的支持方面,相较于CUDA比较不完整。但是基本的BLAS与FFT程序代码,依然可以由AMD的网站上免费取得。另外,AMD也推出C++语言的支持链接库Bolt。
不论是CUDA或是OpenCL都是以C或C++语言为基础的开发工具,对于已.NET平台为主的微软平台,整合度都不是很理想。幸运的是,网络上都有提供相对应的.NET版的开发工具,ManagedCUDA与OpenCL.NET。这两套工具皆以C#语言封装原来的链接库,可以完整的整合到Windows平台系统。
上述的软件皆是免费的工具,至于付费的商用软件也有很多选择,尤其是CUDA的部分,NVIDA的网站https://developer.nvidia.com/cuda-tools-ecosystem有相当多的信息可供查询。
第六节 一个比较范例
相较于CPU,使用GPU做为特定运算的运算中心,其优势是相当明显的。下面作者以一个阳春式选择权作为范例,比较这两种方法的计算速度,以及计算得精准度,由于此种选择权有解析解,因此可以解析解的质为比较的根据。
此选择权的契约条件如下,一年后到期买权,令期初资产价格S0=100,执行价格K=100,波动性σ=30%,融资成本4%,资产收益2%。。令K表执行价格,ST为到期日价格,CT表到期日选择权的的偿付,
使用BSM公式解,可得权利金价格为12.567697。
在实作条件上,我们使用简单的几何布朗运动程序,每天仿真一步,因此一条情境路径需要走365步。每一次的计算模拟262,144条情境路径。
首先,我们以CPU执行单线程的传统程序,作者使用的硬件开发环境为IntelCore http://blogs.nvidia.com/blog/2012/07/02/new-top500-list-4x-more-gpu-supercomputers/。
注四:Mike Giles, From CFD tocomputational finance (and back again),MIT Centerfor Computational Engineering, March 14, 2013。
注五:http://www.nvidia.com.tw/object/computational_finance_tw.html。
注六:https://www.khronos.org/opencl/。