计算装置、计算方法以及程序的制作方法

文档序号:6601998阅读:146来源:国知局
专利名称:计算装置、计算方法以及程序的制作方法
技术领域
本发明涉及计算装置、计算方法以及程序。
背景技术
目前,特别在图像处理、图形学的领域中计算量非常大,另外,大部分需要实时地 重复多次计算。其中,这样的计算大部分为下述模式。(1)基于矩阵 矢量的计算(例如坐标轴的旋转等的计算)(2)针对大量数据重复相同运算(例如使图像全体的颜色反转等计算)为了应对使这些处理高速化的需求,在CPU或图形插件板 (GPU(GraphicsProcessing Unit))中安装了 SIMD(Single Instruction Multiple Data) 功能(以下称为SIMD功能)。在此,图1是用于说明SIMD功能的一例的图。在通常的运算中,在CPU的1个时钟中针对一组自变量进行一次运算,但当利用 SIMD功能时,例如可以在1个时钟中针对8组自变量进行同种运算(也存在自变量一方不 是矢量,而是标量的运算)。通过安装了 SIMD功能的CPU,除四则运算以外有时还进行比较 运算(等号、大小关系)或通过程序库与expOO、Sin(X)、C0S(X)等非线性函数对应。另 外,不限于使用这些程序库等在线性代数中一般使用的矢量 矩阵的计算,有时也可以针对 非线性计算实现高速化。作为数值计算方法之一,存在格子法。图2是用于说明格子法的图。在图2中,m表示格子的横轴坐标。另外,在图2中, 1表示格子的纵轴坐标。在图2中,作为格子的一例表示了 3项格子。格子法中的数值计 算中存在很多模式,但在多数情况下,可以对格子的全部节点的值都通过同种运算顺次进 行计算。在格子的计算中有向前进方向(右方向)进行计算的情况、和向后退方向(左方 向)进行计算的情况,但计算的思路相同。图3是用于说明前进中的m = 3处的节点的值的计算方法的图。以前进方式计算m = 3处的节点⑴、⑵的值时,计算装置分别使用m = 2处的 黑圈、白圈的节点的值进行计算。在此,所谓节点的值,根据应用格子法的模型而不同,例 如在将格子法应用于金融学的情况下,是股价或利率等。节点的值,针对每个节点不限于1 个,有时针对每个节点保存多个值。另外,在以格子的值为股价的情况为例时,图3所示的 格子的上下,表示股价的概率变化。图4表示求节点的值的式子的一例。在图4中,函数f取决于应用格子法的模型 或模型中应用格子法时的方法等。当使用SIMD安装了函数f时,函数的各自变量以及返回 值成为相同长度的阵列。在格子法的情况下,如图3所示,对于m的值,节点不固定。g卩,例如m = 2的节 点的数量和m = 3的节点的数量不同(以图1为例时,自变量的要素数和结果的要素数不 同)。因此,存在无法进行矢量彼此的运算,无法使用(或应用)SIMD功能的问题。因此,即使有具备SIMD功能的CPU等的运算处理装置,由于在使用格子(格子法)的计算中无法利 用SIMD功能,因此存在无法使计算处理高速化的问题。专利文献1日本专利第3958662号公报

发明内容
鉴于上述问题而提出本发明,其目的在于在使用格子的计算中使计算处理高速 化。因此,本发明提供一种具有运算处理装置的计算装置,该运算处理装置具有以1 个命令执行多个运算的SIMD功能,该计算装置具备决定单元,其为了在格子的横轴坐标m 的值增大的方向上计算格子的节点的值时,可以通过在m = n-l上追加虚拟节点,利用所述 SIMD功能使用m = n-1的节点的值和追加的虚拟节点的值进行矢量运算来求出m = n的节 点的值,而决定所述追加的虚拟节点;追加单元,其在m = n-1上追加通过所述决定单元所 决定的虚拟节点;以及计算单元,其利用所述SIMD功能,使用m = n-1的节点的值和通过所 述追加单元所追加的虚拟节点的值进行矢量运算,由此计算出m = n处的节点的值。通过成为所述结构,计算装置,为了可以通过在m = n-1上追加虚拟节点,利用 SIMD功能使用m = n-1的节点的值和追加的虚拟节点的值进行矢量运算来求出m = n的节 点的值,而决定所述追加的虚拟节点,在m = n-1上追加所决定的虚拟节点,利用所述SIMD 功能,使用m = n-1的节点的值和追加的虚拟节点的值进行矢量运算,由此计算出m = n处 的节点的值。因此,在使用格子的计算中,可以使计算处理高速化。在此,所谓具有SIMD功能的运算处理装置,例如对应于具有SIMD功能的CPU、具有 SIMD功能的GPU等。另外,本发明提供一种具有运算处理装置的计算装置,该运算处理装置具有以1 个命令执行多个运算的SIMD功能,所述计算装置具备决定单元,其为了在格子的横轴坐 标m的值增大的方向上计算格子的节点的值时,可以通过利用所述SIMD功能使用m = n-1 的节点的值进行矢量运算来求出值,而决定m = n处的节点的范围;以及范围内节点值计算 单元,其利用所述SIMD功能使用m = n-1的节点的值进行矢量运算,由此计算出m = n处 的节点中的、通过所述决定单元所决定的范围内的节点的值。通过成为所述结构,计算装置为了可以通过利用SIMD功能使用m = n-1的节点的 值进行矢量运算来求出值而决定m = n的节点的范围,利用SIMD功能使用m = n-1的节点 的值进行矢量运算,由此计算出m = n的节点中的、该范围内的节点的值。因此,在使用格 子的计算中,可以使计算处理高速化。 在此,所谓具有SIMD功能的运算处理装置,例如对应于具有SIMD功能的CPU、具有 SIMD功能的GPU等。另外,本发明也可以是计算方法以及程序。根据本发明,在使用格子的计算中,可以使计算处理高速化。


图1是用于说明SIMD功能的一例的图。图2是用于说明 子法的图。
图3是用于说明前进中的m = 3处的节点的计算方法的图。图4是表示求出节点的值的式子的一例的图。图5是表示计算装置的硬件结构的一例的图。图6是表示实施方式1的计算装置的功能结构的一例的图。图7A是用于说明决定追加的虚拟节点的数量的图。图7B是表示与图7A对应的、利用SMD功能的运算的一例的图。图7C是表示与图7B对应的、通常的运算的一例的图。图7D是表示函数f的一例的图。图7E是表示图7D所示的函数f的情况下的图7B的更具体的运算的一例的图。图8是表示实施方式1中的格子法中的节点的值的计算处理的一例的流程图。图9是表示实施方式2的计算装置的功能结构的一例的图。图10A是用于说明范围的决定的图。图10B是表示与图10A对应的、利用SIMD功能的运算的一例的图。图10C是表示与图10B对应的、通常的运算的一例的图。图11是表示实施方式2中的格子法中的节点的值的计算处理的一例的流程图。图12是表示2项模型的格子的图。图13是用于说明2项模式中的原资产价格的计算的图。图14是表示求出2项模式的节点的值的式子的一例的图。图15是表示实施方式3的计算装置的功能结构的图。图16是表示追加虚拟节点的图像的图。图17A是表示成为矢量运算的对象的n个计算的图。图17B是表示矢量运算的图像的图。图18A是表示计算m = 3的节点的值的式子的图。图18B是表示计算m = 3的节点的值的矢量运算的图像的图。图19是表示函数f的一例的图。图20是表示图19所示的函数f的情况下的图18B的更具体的运算的一例的图。符号说明16 RAM ; 17 CPU
具体实施例方式以下,根据

本发明的实施方式。(计算装置的硬件结构)图5是表示计算装置的硬件结构的一例的图。如图5所示,计算装置(计算机)1 作为硬件结构而包含输入装置11、显示装置12、记录介质驱动装置13、ROM (Read Only Memory) 15、RAM (Random Access Memory) 16、CPU (Central Processing Unit) 17、接 口装置 18 和 HD(Hard Disk)19。输入装置11由计算装置1的操作者操作的键盘以及鼠标等构成,用于向计算装置 1输入各种操作信息等。显示装置12由计算装置1的操作者利用的显示器等构成,用于显 示各种信息(或画面)等。
接口装置18是将计算装置1与网络等连接的网络连接装置。与后述的计算装置1 的功能以及后述的流程图等相关的程序,例如通过CD-ROM等记录介质14提供给计算机装 置1,或者通过网络等下载。将记录介质14安放在记录介质驱动装置13中,经由驱动装置 13将程序从记录介质14安装在HD19中。R0M15记录在计算装置1的电源接通时最初读入的程序等。RAM16是计算装置1 的主存储器。CPU17根据需要,从HD19读出程序或数据,存储在RAM16中并执行程序,由此 实现与后述的功能以及流程图相关的处理等。本实施方式的CPU17具有SIMD功能。计算装置1作为硬件结构也可以未必包含输入装置11、显示装置12、记录介质驱 动装置13等。〈实施方式1>(实施方式1的处理的概要)如上所述,在格子的横轴坐标m的值增大的方向上计算格子的节点的值的计算装 置中,由于m = n-1的节点的数量与m = n的节点的数量不同,因此存在通过使用m = n-1 的节点的值进行矢量运算无法求出m = n的节点的值的问题。在本实施方式中,计算装置1为了可以根据m = n的节点的数量在m = n-1上追 加虚拟节点,利用SIMD功能使用m = n-1的节点的值和所追加的虚拟节点的值进行矢量运 算来求出m = n的节点的值,而决定所述追加的虚拟节点的数量,把所决定的数量的虚拟节 点追加在m = n-1上,利用SIMD功能使用m = n-1的节点的值和追加的虚拟节点的值进行 矢量运算来求出m = n处的节点的值,由此解决上述问题。即,计算装置1,若由于自变量的要素数和结果的要素数不同而无法通过矢量运算 求出结果的要素,则根据结果的要素数决定在自变量中追加的虚拟的要素,在自变量中追 加虚拟的要素。然后,计算装置1利用SIMD功能,使用原有的自变量的要素和追加的虚拟 的要素进行矢量运算,由此求出结果的要素的值。以下,说明本实施方式的处理的细节。(实施方式1的计算装置的功能结构)图6是表示实施方式1的计算装置的功能结构的一例的图。如图6所示,计算装 置作为功能结构而包含决定部31、追加部32和计算部33。决定部31,为了可以根据m = n的节点的数量(以及m = n-1的节点的数量)在 m = n-1上追加虚拟节点,利用SIMD功能使用m = n-1的节点的值和追加的虚拟节点的值 进行矢量运算来求出m = n的节点的值,而决定所述追加的虚拟节点的数量(以及位置)。在此,图7A是用于说明决定追加的虚拟节点的数量的图。在图2所示的格子的情 况下,m = 2的节点的数量为5,m = 3的节点的数量为7。在图7A的例子的情况下,决定部 31为了可以根据m = 3的节点的数量(7)(以及m = 2的节点的数量(5)),在m = n_l上 追加虚拟节点,利用SIMD功能使用m = n-1的节点的值和追加的虚拟节点的值进行矢量运 算来求出m = n的节点的值,而把所述追加的虚拟节点的数量决定为6个。决定部31,在决 定在m = n-1上追加的虚拟节点的数量的同时,如图7A所示,也决定与矢量运算相关的追 加的虚拟节点的位置。更具体地来说明,决定部31在3格子的情况下,在求m = n的节点的值时,以使从 m = n-1向各节点的箭头达到3个(从上方、从横向、从下方的3个)的方式决定要追加的虚拟节点的数量以及位置。在此,图7B是表示与图7A对应的、利用SIMD功能的运算的一例的图。另外,图7C 是表示与图7B对应的、通常的运算的一例的图。在图7B以及图7C中,d是虚拟节点的值。另外,图7D是表示函数f的一例的图。而且,图7E是表示图7D所示的函数f 的 情况下的图7B的更具体的运算的一例的图。在图7E中,“X”表示矢量的每个要素的乘法 运算。另外,设屯=d2 = 0。再次返回图6的说明,追加部32取得与决定部31所决定的追加的虚拟节点相关 的信息,按照决定部31决定的数量,在决定部31决定的位置追加虚拟节点。此外,追加部 32把虚拟节点的值作为零来追加虚拟节点。再次返回图6的说明,计算部33取得与追加部32所追加的虚拟节点相关的信息, 利用由CPU17提供的SIMD功能,使用m = n-1的原有节点的值和追加的虚拟节点的值进行 矢量运算,由此计算m = n处的节点的值。(实施方式1中的格子法中的节点的值的计算处理)图8是表示实施方式1中的格子法中的节点的值的计算处理的一例的流程图。在 图8中为了简化说明,以CPU17进行处理的方式进行说明。在步骤S20中,CPU17从RAM16等取得m = 0的节点的值。例如假定通过用户等 设定m = 0的节点的值。另外,决定部21将1代入变量n。接着,在步骤S21中,CPU17根据m = n的节点的数量(以及m = n-1的节点的数 量),决定在m = n-1上追加的虚拟节点的数量(以及位置)。接着,在步骤S22中,CPU17根据步骤S21中的决定,在m = n_l上追加虚拟节点。接着,在步骤S23中,CPU17利用由CPU17提供的SIMD功能,使用m = n-1的原有 节点的值和在步骤S22中追加的虚拟节点的值进行矢量运算,由此计算出m = n处的节点 的值。接着,在步骤S24中,CPU 17将n的值增加1。接着,在步骤S25中,CPU17根据预先设定的、或由用户输入的m的值等,判断是否 计算出全部格子的节点的值,判定是否结束图8所示的处理。在判定为结束图8所示的处理 时,CPU17结束图8所示的处理。在判定为不结束图8所示的处理时,CPU17返回步骤S21 的处理,继续在格子的横轴坐标m的值增大的方向上计算格子的节点的值的处理。综上所述,根据本实施方式,CPU17在计算m = n的节点的值时,为了可以通过使 用m = n-1的节点的值进行矢量运算来求出m = n的节点的值,通过追加虚拟节点来增加 m = n-1的节点的数量。然后,CPU17利用由CPU17提供的SIMD功能,使用原有的m = n-1 的节点的值以及追加的虚拟节点的值进行矢量运算,由此计算出m = n处的节点的值。由 此,在使用了格子的计算中,CPU17可以利用SIMD功能,因此可以在使用格子的计算中使计 算处理高速化。<实施方式2>(实施方式2的处理的概要)如上所述,在格子的横轴坐标m的值增大的方向上计算格子的节点的值的计算装 置中,由于m = n-1的节点的数量和m = n的节点的数量不同,因此存在通过使用m = n-1 的节点的值进行矢量运算无法求出m = n的节点的值的问题。
在本实施方式中,计算装置1根据m = n-1的节点的数量决定使用m = n_l的节 点的值进行矢量运算求出m = n的节点的值的m = n的节点的范围,利用SIMD功能使用m =n-1的节点的值进行矢量运算来求出m = n的节点中的、范围内的节点的值,逐个计算出 范围外的节点的值,由此解决上述问题。S卩,计算装置1,若由于自变量的要素数和结果的要素数不同而无法通过矢量运算 求出结果的要素,则根据自变量的要素数,限定通过使用自变量的要素进行矢量运算而求 出的结果的要素的范围。并且,计算装置1关于结果的要素中、在限定的范围内的要素,通 过利用SIMD功能使用自变量的要素进行矢量运算来求其值。并且,计算装置1关于限定的 范围外的要素,不利用SIMD功能,使用自变量的要素等逐个地求其值。以下,说明本实施方式的处理的细节。(实施方式2的计算装置的功能结构)图9是表示实施方式2的计算装置的功能结构的一例的图。如图9所示,计算装 置1作为功能结构而包含决定部21、范围内节点值计算部22和范围外节点值计算部23。决定部21根据m = n-1的节点的数量,决定可以通过使用m = n-1的节点的值进 行矢量运算来求出值的m = n处的节点的范围。在此,图10A是用于说明范围的决定的图。在图2所示的格子的情况下,m = 2的 节点的数量为5,m = 3的节点的数量为7。在图10A的例子的情况下,决定部21根据m = 2的节点的数量(5),把使用m= 2的节点的值通过图10A所示的矢量运算可以求出值的m =3处的节点的范围决定为7个中的正中央的3个。换言之,在图10A所示的3个格子的 情况下,决定部21为了可以使用m = 2的节点的值通过图10A所示的矢量运算求出值,把m =3处的节点的范围设为从m = 2的节点出发的箭头3个重叠的范围。结果,在图2所示 的3个格子的情况下,当m的值在2以上时,决定部21始终以把两端的4个(上2个、下2 个)排除在范围以外的方式决定范围。在此,图10B是表示与图10A对应的、利用SIMD功能的运算的一例的图。另外,图 10C是表示与图10B对应的、通常的运算的一例的图。再次返回图9的说明,范围内节点计算部22取得与决定部21所决定的节点的范 围相关的信息,利用CPU17提供的SIMD功能(以1个命令执行多个运算的功能),使用m = n-1的节点的值进行矢量运算,由此计算出m = n处的节点中的、所述范围内的节点的值。 在图10A的例子中,范围内节点值计算部22利用CPU17提供的SIMD功能,使用m = 2的节 点的值进行矢量运算,由此计算出m = 3的节点中的正中央的3个节点的值。再次返回图9的说明,范围外节点值计算部23取得与决定部21所决定的节点的 范围相关的信息,确定范围外的节点。然后,范围外节点值计算部23通过使用m = n-1的 节点的值逐个进行计算,不使用CPU17提供的SIMD功能地计算出m = n处的节点中的、所 述范围外的节点的值。更具体来说,范围外节点值计算部23使用m = n-1的节点中的、向所述范围外的 节点引出箭头的节点的值,计算出m = n处的节点中的、所述范围外的节点的值。在3个格 子的情况下,对于m = n处的节点中的、所述范围外的节点,从m = n-1处的节点没有3个箭 头。因此,范围外节点值计算部23在m = n-1的节点上追加与不足的箭头相关的节点(虚 拟节点)(结果,如上述实施方式1那样追加)。然后,范围外节点值计算部23使用m = n-1
9的节点中的引出向所述范围外的节点的箭头的节点的值、和所追加的虚拟节点的值(零), 不使用SIMD地逐一计算m = n的节点中的、所述范围外的节点的值。(实施方式2中的格子法中的节点的值的计算处理)图11是表示实施方式2中的格子法中的节点的值的计算处理的一例的流程图。在 图11中为了简化说明,说明由CPU17进行处理的情况。在步骤S10中,CPU17从RAM16等取得m = 0的节点的值。假定例如通过用户等 设定m = 0的节点的值。另外,决定部21将1代入变量n。接着,在步骤S11中,CPU17根据m = n_l的节点的数量,决定m = n处的节点的 范围。在n = 1的情况下,决定部21把m = n处的节点的范围决定为“无”。接着,在步骤S12中,CPU17利用由CPU17提供的SIMD功能,使用m = n-1的节点 的值进行矢量运算(例如进行图10A所示那样的矢量运算),由此计算出m = n处的节点中 的、步骤S11中决定的范围内的节点的值。接着,在步骤S13中,CPU17使用m = n-1的节点的值逐一进行计算,由此,不使用 由CPU17提供的SIMD功能地计算出m = n处的节点中的、步骤S11中决定的范围外的节点 的值。接着,在步骤S14中,CPU17将n的值增加1。接着,在步骤S15中,CPU17根据预先设定的、或者由用户输入的m的值等,判断是 否计算出全部格子的节点的值,判定是否结束图11所示的处理。在判定为结束图11所示 的处理的情况下,CPU17结束图11所示的处理。在判定为不结束图11所示的处理的情况 下,CPU17返回步骤S11的处理,继续在格子的横轴坐标m的值增大的方向上计算格子的节 点的值的处理。综上所述,根据本实施方式,CPU17在计算m = n的节点的值时,根据m = n-1的 节点的数量,缩小可以使用SIMD功能来求出的m = n的节点的范围,由此,在缩小后的范围 内利用SIMD功能使用m = n-1的节点的值进行矢量运算,由此计算出m = n的值,在范围 外不使用SIMD功能地计算节点的值。由此,在使用格子的计算中,CPU17可以利用SIMD功 能,因此在使用格子的计算中可以使计算处理高速化。综上所述,根据上述各实施方式,在使用了格子的计算中可以使计算处理高速化。〈实施方式3>(2项模型)在格子法中,除了实施方式1、2中说明的3项模型以外,还具有2项模型 (Binominal Model)。在本实施方式中说明2项模型。2项模型与布莱克-斯克尔斯模型 (Black Scholes model)并列,是用于计算期权(option)价格(优先购买价(premium))的 代表性的方法。在布莱克-斯克尔斯模型中,通过解析式表达期权价格,根据股价、权利行 使价格、期间、变化率、利率等数据,可以容易地计算期权价格,计算所需的时间也非常短。 但是,通过布莱克-斯克尔斯模型可以计算欧式(即仅在期权期满时可以行使权利的期权) 期权价格,但无法计算美式(即期权期满前可以在任何时候行使权利的期权)期权价格。对此,在2项模型中假定原资产(initial underlier)价格重复上升或下降的某 种变动,首先进行预测原资源价格的变动的计算,此后,根据预测出的将来的原资产价格进 行逆运算,计算出期权价格,计算所需要的时间长。但是,通过2项模型,不仅欧式期权,针对美式期权或奇异期权(exotic option)也可以计算期权价格。图12是表示2项模型的格子的图。在2项模型中,针对每个格子的节点(node) 计算出原资产价格的值(以下称为节点的值)。在图12中,使用坐标(m,l)来表示格子的 节点。横轴的m对应于期间,m随着期间经过而增加。纵轴的1对应于原资产价格的变动, 若原资产价格上升则1增加,若原资产价格下降则1减少。每当期间经过(m增加)时,2项 模型的各节点向表示原资产价格的上升(1的增加)或下降(1的减少)的两个岔路进行分 支。在各m的情况下,在两端(1最大以及最小)以外的节点,在前一个m处分支的岔路结 合。如此,2项模型在期间经过的同时,从节点伸出的岔路重复分支和结合,成为菱形的格子 连接的形态。 图13是用于说明2项模型中的原资产价格的计算的图。2项模型中的节点的值的 计算具有前进(向m增加的方向的计算)和后退(向m减少的方向的计算),但在本实施方 式中说明在前进中计算的情况。图13表示根据m = 2的节点的值计算m = 3的节点的值 的情况下的图像。在图13所示的例子中,根据节点A的值计算节点(1)的值,根据节点A以及B的 值计算节点(2)的值,根据节点B以及C的值计算节点(3)的值,根据节点C的值计算节 点(4)的值。如图13所示,节点A、B以及C的坐标分别是(2,2)、(2,0)以及(2,_2),节点 (1)、(2)、(3)以及(4)的坐标分别是(3,3)、(3,1)、(3,-1)以及(3,-3)。图14是表示求2项模型的节点的值的式子的一例的图。在图14所示的例子中表 示V(m,1)是坐标(m,1)的节点的值,通过函数f求出节点的值。该函数f根据股价、汇兑 或利率等期权交易对象等而不同。例如,以节点A以及B的值作为自变量,通过V(3,l) = f(V(2,2),V(2,0))计算出 图13所示的节点(2)的值。另外,以节点B以及C的值作为自变量,通过V(3,-l) =f(V(2, 0),V(2,-2))计算出节点(3)的值。不仅在根据m= 2的节点的值计算m= 3的节点的值 时使用该函数,在计算其它m的节点的值时也同样使用该函数f。即,在计算2项模型的节 点的值时,重复进行通过函数f表示的同种类的计算。—般来说,在期权价格的计算中应用2项模式时,m达到100以上的情况不少,因 此作为计算对象的节点的数量也变得非常多。因此,为了高速地计算全部节点的值,考虑利 用例如SIMD功能等、并列执行同种计算的矢量运算的功能。基于函数f的计算有时成为非 线性的计算,在逐个计算节点的值的情况下需要较长时间,但如果还存在具备与非线性的 计算对应的SIMD功能的CPU,可以利用SIMD功能来并行进行计算,则可以高速地计算出全 部节点的值。但是,在图13中存在无法通过函数f计算值的节点。如图14所示,函数f根据两 个自变量计算节点的值。与之相对,仅根据节点A的值计算节点(1)的值,仅根据节点C的 值计算节点(4)的值。因此,关于节点(1)以及节点(4)的值,无法通过自变量为两个的函 数f计算,需要通过与函数f不同的计算来算出。即,在2项模型中,通常,节点的值的计算 未必仅仅是与函数f的计算同种的计算,因此无法利用SIMD功能并行计算节点的值,产生 计算需要较长时间的问题。与此相对,根据本实施方式,通过成为以下说明的结构,在计算2项模型等格子法 中的节点的值的情况下,可以利用SIMD功能并行进行计算(即进行矢量运算),可以高速地计算出全部节点的值。(实施方式3的计算装置的功能结构)图15是表示实施方式3的计算装置150的功能结构的图。计算装置150如图15 所示,具备矢量决定部151和矢量运算部152。计算装置150在计算m = η的节点的值的情 况下,通过在m = n-l中追加虚拟节点,可以进行基于SIMD功能的矢量运算。以下,针对虚 拟节点的追加进行说明。 图16是表示追加虚拟节点的图像的图。图16表示在根据m = 2的节点的值计算 Hi = 3的节点的值的情况下追加虚拟节点的图像。在图16所示的例子中,除了图13所示的 节点以外,追加了虚拟节点Dl以及D2。通过追加节点Dl以及节点D2,根据节点Dl以及A 的值计算出节点⑴的值,根据节点D2以及节点C的值计算出节点(4)的值。以下,把虚 拟节点Dl以及D2的值表示为d。此外,Dl以及D2的坐标分别对应于(2,4)以及(2,_4)。例如,以节点Dl以及A的值作为自变量,通过V(3,3) = f (d,V (2,2))来计算出图 16所示的节点⑴的值。另外,节点⑷的值,以节点C以及D2的值为自变量,通过V(3,-3) =f(V(2, -2),d)计算出来。通过追加这样的虚拟节点,针对节点(1) (4)的任意值都可以通过函数f计算 出来,因此可以并行进行计算,通过矢量运算来计算。以下,更具体地说明计算装置150的 各部的动作。在2项模型中,m = n的节点的数量为n+1个,使用m = n_l的节点的值计算出m =η的节点的值。矢量决定部151在计算m = η的节点的值时,通过在m = n-1的节点的 值上追加虚拟节点的数据,来决定在矢量运算中使用的矢量要素数据。图17是说明矢量运算的图。图17A是表示成为矢量运算对象的η个计算的图。在 图17Α中表示了分别通过f(x⑴,y⑴)~f(x(n),y(n))计算出z(l) ζ (η)的各值的例 子。通过利用SIMD功能可以在1个时钟中执行所述多个计算。此外,可以在1个时钟中执 行的并行计算的最大数量,针对每个计算装置预先决定,在η超过该最大数量的情况下,以 最大数量的单位分割计算式后执行矢量运算。图17Β是表示矢量运算的图像的图。在本实施方式中,如图17Β所示,在针对η个 计算式执行矢量运算时,为了利用SIMD功能,作为自变量而准备x(i)和y(i) (i = l,...n) 这两个矢量(阵列数据)。图18是表示2项模型中的矢量运算的具体例子的图。在图18中表示了决定为了 计算m = 3的节点的值而使用的矢量的图像。图18A是表示用于计算m = 3的节点的值的 式子。在2项模型中,m = 3的节点的数量为4个,计算式也达到4个。图18A所示的式子 是在图14的式子中、SP V(m,1) =f(V(m-l,l+l),V(m-l,1-1))中代入具体数值而得到的 式子。在此,例如图13所示,m= 2的节点是(2,-2), (2,0), (2,2)这三个,因此,图18A所 示的最上方的式子中包含的V(2,4)和最下方的式子中包含的V(2,-4),值不存在。图18B是表示计算m = 3的节点的值的矢量运算的图像的图。在本实施方式中, 如图18B所示,在执行矢量运算时,为了利用SIMD功能,作为自变量需要准备矢量1和矢量 2这两个矢量。图18所示的矢量运算与图17所示的矢量运算中η = 4的情况对应。S卩,矢 量1的各要素对应于χ (i) (i = 1 4),矢量2的各要素对应于y (i) (i = 1 4)。在此,以计算m = 3的节点的值的情况为例说明本实施方式的计算装置150的动作。在计算装置150中,当计算m= 3的节点的值时,矢量决定部151决定图18B所示的矢 量1以及矢量2。矢量决定部151在决定矢量1时,需要在图17B的阵列数据X(I) χ(4) 中分别设定¥(2,4)、¥(2,2)、¥(2,0)、¥(2,-2),但由于¥(2,4)不存在,因此在χ(1)中代替 地设定虚拟数据d。另外,矢量决定部151当决定矢量2时,需要在图17B所示的阵列数据y(l) y(4) 中分别设定¥(2,2)、¥(2,0)、¥(2,-2)、¥(2,-4),但由于¥(2,-4)不存在,因此在y (4)中代 替地设定虚拟数据d。
在本实施方式中,矢量决定部151,在计算各m的节点的值的情况下,从1较大的 坐标的节点的值开始,依次与图17B所示的矢量运算的阵列数据ζ (i) (i = 1 m+1)对应 地决定矢量1以及矢量2。例如,在m = 3的情况下,矢量决定部151将ζ (1)、ζ (2)、ζ (3)、 ζ (4)分别与V (3,3)、V (3,1)、V (3,-1)、V (3,-3)对应,决定了矢量1和矢量2。这不限于m =3的情况。S卩,在如此决定矢量1以及矢量2的情况下,例如在m = η时不存在应该设定 在X(I)以及y(n+l)中的数据,因此矢量决定部151始终在x(l)以及y(n+l)中设定虚拟 数据d。以下,更详细地说明在x(l)和y(n+l)中设定虚拟数据这一点。例如,在计算m = 4的节点的情况下,V (4,4)与Z(I)对应,V (4,-4)与ζ (4)对应。根据图14的式子,需要 V (4,4) = f(V(3,5),V(3,3))的运算,但V (3,5)节点的值不存在。在此,如上所述若考虑 V(4,4)对应于 z(l),则 V(3,5)对应于 x(l)。S卩,由于不存在应该在X(I)中设定的数据,因此,矢量决定部151在X(I)中设 定虚拟数据。另外,根据图14的式子,需要V(4,-4) = f(V(3, -3),V(3,-5))的运算,但 V(3,-5)节点的值不存在。在此,如上所述若考虑V(4,-4)对应于z(4),则V(3,-5)对应于 y(5)。即,由于不存在应该代入y(5)( = y(n+l))的数据,因此矢量决定部151在y(n+1) 中设定虚拟数据。此外,矢量决定部151不限于固定了矢量要素中、设定虚拟数据的矢量要素的结 构,即,不限于始终对X(l)以及y (n+1)设定虚拟数据的结构。例如,矢量决定部151也可 以是以下结构在对应于全部坐标(m,l)准备了阵列数据V(m,l)的结构的情况下,在节点 的值不存在的坐标的阵列要素中存储了表示节点的值不存在的数据(例如NULL等),当决 定矢量数据时判定节点的值是否存在,在节点的值不存在的情况下设定虚拟数据。而且,矢量决定部151把矢量1以及矢量2的阵列数据提供给矢量运算部152。在 计算m = 3的节点的值的情况下,矢量运算部152当取得矢量1以及矢量2的阵列数据时 进行图18B所示的矢量运算,在1个时钟中同时计算V(3,3)、V(3,1)、V(3,-1)、V(3,-3)的 各值。图19是表示函数f的一例的图。另外,图20是表示图19所示的函数f的情况下 的图18B的更具体的运算的一例的图。在图20中,“ X ”表示矢量每个要素的乘法运算。在 此,Pdown (m,l)是从前一个节点下降到(m,1)的节点的概率,Pup (m,1)是从前一个节点上 升到(m,1)的节点的概率。这些值针对每个节点预先被设定,并被存储在存储部中。矢量 运算部152在进行用于计算(m,1)的节点的值的矢量运算的情况下,从存储部读出与各节 点的值对应的Pdown (m, 1)以及Pup (m, 1),使用读出的Pdown (m, 1)以及Pup (m, 1)和来自 矢量决定部151的矢量1以及矢量2,执行图20所示的运算。
另外,说明图20所示的Cl1以及d2。Cl1是虚拟节点的值,表示上述的虚拟数据d。另外,以下说明d2。在本实施方式中,未图示的计算单元预先计算出Pup(m,l)以及Pdown(m, 1),存储在存储部中。Pup以及Pdown是从前一节点向某节点的推移的概率,通过以m以及 1为自变量的函数被计算出,但例如PdOWn(3,3)或Pup(3,-3)等成为从不存在的节点推移 的概率,因此,计算单元作为虚拟数据而设定d2 (具体来说是0)。但这是一个实施方式,计算节点的值的函数f不限定于图19所示的式子。本实施 方式特征终归在于,在根据m-1的节点的值计算V(m,1)的节点的值的情况下,对于m-1的 节点中的、不存在值的节点设定虚拟数据,计算V(m,1)的节点的值。例如在2项模型中特 征在于,在计算V(m,1)的节点的值的情况下,对于节点的值不存在的V(m-1,1+1), V (m-1, 1-1)设定虚拟数据,计算V(m,l)的节点的值。即,计算节点的值的函数f不限定于图19所 示的式子,因此设定虚拟数据d2的结构不是必须的。在本实施方式中,在虚拟数据Cl1以及d2中设定“0”,但虚拟数据的值不限于“0”, 只要是对函数f中的计算结果没有影响的数据即可。另外,在本实施方式中,关于为了利用SIMD功能而决定矢量的处理,举例说明了 2 项模型,但在3项模式中也可以通过同样的处理来决定矢量。即,在3项模型中,矢量决定 部151决定图7C所示的3个矢量,但在应用图4所示的式子计算V(m,1)的节点的值的情 况下,对于节点的值不存在的V(m-l,l+l)、V(m-l,l)、V(m-l,l-l)设定虚拟数据。S卩,在3 项格子中,m = η的节点的数量为2η+1,在计算这2η+1个节点的值时,在m = n-1中计算出 了值的节点的数量为2n-l,因此,需要从节点的上端开始在第1、第2、第2η、第2η+1个追加 虚拟节点。在设定虚拟数据时,可以是始终固定设定虚拟数据的矢量要素的结构,也可以是 对应于全部坐标准备阵列数据,每次判定节点的值是否存在的结构。另外,在本实施方式中,在2项模型中说明了追加虚拟节点来计算的结构,但如同 以3项模型为例所说明的那样,在2项模型中也可以成为决定通过矢量运算计算节点的值 的范围的结构。在这种情况下,仅对于决定的范围内的节点,通过利用SIMD功能的矢量运 算来计算节点的值。并且,在2项模型的情况下,针对每个m计算节点的值时,仅把除去各m 中的两端(1的最大值以及最小值)的两个节点后的m-1个节点,设为使用SIMD功能的矢 量运算的对象。即,矢量决定部151仅针对除去各m中的两端(1的最大值以及最小值)的 两个节点后的m-1各节点,决定用于通过图17B所示的矢量运算进行图14所示的式子的计 算的矢量。在3项模型的情况下,仅把从各m中的两端各除去两个(1的最大值、最大值-1、 最小值+1以及最小值)的4个节点后的2m-3个节点,设为使用SIMD功能的矢量运算的对 象,决定用于通过矢量运算来进行图4所示的式子的计算的矢量。以上,详细描述了本发明的优选实施方式,但本发明不限于所述特定的实施方式, 在权利要求所记载的本发明的主旨的范围内可以进行各种变形、变更,适当组合在不同实 施方式中分别公开的技术手段而得到的实施方式也包含在本发明的技术范围内。
权利要求
一种具有运算处理装置的计算装置,该运算处理装置具有以1个命令执行多个运算的SIMD功能,所述计算装置的特征在于,具备决定单元,其为了在格子的横轴坐标m的值增大的方向上计算格子的节点的值时,可以通过在m=n-1上追加虚拟节点,利用所述SIMD功能使用m=n-1的节点的值和追加的虚拟节点的值进行矢量运算来求出m=n的节点的值,而决定所述追加的虚拟节点;追加单元,其在m=n-1上追加通过所述决定单元所决定的虚拟节点;以及计算单元,其利用所述SIMD功能,使用m=n-1的节点的值和通过所述追加单元所追加的虚拟节点的值进行矢量运算,由此计算出m=n处的节点的值。
2.一种具有运算处理装置的计算装置,该运算处理装置具有以1个命令执行多个运算 的SIMD功能,所述计算装置的特征在于,具备决定单元,其为了在格子的横轴坐标m的值增大的方向上计算格子的节点的值时,可 以通过利用所述SIMD功能使用m = n-1的节点的值进行矢量运算来求出值,而决定m = η 处的节点的范围;以及范围内节点值计算单元,其利用所述SIMD功能使用m = n-1的节点的值进行矢量运 算,由此计算出m = η处的节点中的、通过所述决定单元所决定的范围内的节点的值。
3.根据权利要求2所述的计算装置,其特征在于,还具有范围外节点值计算单元,其不利用所述SMD功能地计算出m = η处的节点中 的、通过所述决定单元所决定的范围外的节点的值。
4.一种具有运算处理装置的计算机中的计算方法,所述运算处理装置具有以1个命令 执行多个运算的SIMD功能,所述计算方法的特征在于,具有以下步骤决定步骤,所述计算机为了在格子的横轴坐标m的值增大的方向上计算格子的节点的 值时,可以通过在m = n-1上追加虚拟节点,利用所述SIMD功能使用m = n-1的节点的值 和追加的虚拟节点的值进行矢量运算来求出m = η的节点的值,而决定所述追加的虚拟节占.追加步骤,所述计算机在m = n-1上追加通过所述决定步骤所决定的虚拟节点;以及计算步骤,所述计算机利用所述SIMD功能,使用m = n-1的节点的值和通过所述追加 步骤所追加的虚拟节点的值进行矢量运算,由此计算出m = η处的节点的值。
5.一种具有运算处理装置的计算机中的计算方法,所述运算处理装置具有以1个命令 执行多个运算的SIMD功能,所述计算方法的特征在于,具有以下步骤决定步骤,所述计算机为了在格子的横轴坐标m的值增大的方向上计算格子的节点的 值时,可以通过利用所述SIMD功能使用m = n-1的节点的值进行矢量运算来求出值,而决 定m = η处的节点的范围;以及范围内节点值计算步骤,所述计算机利用所述SIMD功能使用m = n-1的节点的值进 行矢量运算,由此计算出m = η处的节点中的、通过所述决定步骤所决定的范围内的节点的 值。
6.一种程序,其特征在于,使具有运算处理装置的计算机作为以下单元来工作,所述运算处理装置具有以1个命 令执行多个运算的SIMD功能,所述单元为决定单元,其为了在格子的横轴坐标m的值增大的方向上计算格子的节点的值时,可 以通过在m = n-1上追加虚拟节点,利用所述SIMD功能使用m = n-1的节点的值和追加的 虚拟节点的值进行矢量运算来求出m = n的节点的值,而决定所述追加的虚拟节点; 追加单元,其在m = n-1上追加通过所述决定单元所决定的虚拟节点;以及 计算单元,其利用所述SIMD功能,使用m = n-1的节点的值和通过所述追加单元所追 加的虚拟节点的值进行矢量运算,由此计算出m = n处的节点的值。
7.一种程序,其特征在于,使具有运算处理装置的计算机作为以下单元来工作,所述运算处理装置具有以1个命 令执行多个运算的SIMD功能,所述单元为决定单元,其为了在格子的横轴坐标m的值增大的方向上计算格子的节点的值时,可 以通过利用所述SIMD功能使用m = n-1的节点的值进行矢量运算来求出值,而决定m = n 处的节点的范围;以及范围内节点值计算单元,其利用所述SIMD功能使用m = n-1的节点的值进行矢量运 算,由此计算出m = n处的节点中的、通过所述决定单元所决定的范围内的节点的值。
全文摘要
本发明提供计算装置、计算方法以及程序,其目的在于在使用格子的计算中使计算处理高速化。为了解决课题,所述计算装置具有以下单元决定单元,其为了在格子的横轴坐标m的值增大的方向上计算格子的节点的值时,可以在m=n-1上追加虚拟节点,利用所述SIMD功能使用m=n-1的节点的值和追加的虚拟节点的值进行矢量运算来求出m=n的节点的值,而决定所述追加的虚拟节点;追加单元,其在m=n-1上追加通过所述决定单元所决定的虚拟节点;以及计算单元,其利用所述SIMD功能使用m=n-1的节点的值和通过所述追加单元所追加的虚拟节点的值进行矢量运算,由此计算出m=n处的节点的值。
文档编号G06F9/38GK101872298SQ20101016717
公开日2010年10月27日 申请日期2010年4月22日 优先权日2009年4月23日
发明者武下博纪 申请人:新日铁系统集成株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1