Benchmark分析[4]: parsec.swaption

简介
The swaptions application is an Intel RMS workload which
uses the Heath-Jarrow-Morton (HJM) framework to price a
portfolio of swaptions.
1.热点分析
1.1热点函数
在这里插入图片描述

1.2热点循环
格式说明: 热点循环-(函数执行次数-各层执行总次数)
执行百分比:热点循环占本函数执行比例

函数: HJM_SimPath_Forward_Blocking
HS.L1(8000000-128000000-128000000-1280000000-3840000000)
执行百分比:VTure
HS.L2(8000000-128000000-1280000000-7040000000-21120000000)
执行百分比:VTure

函数: serialB - CumNormalInv
se.L1(8000000-44000000-704000000-7040000000)
执行百分比:VTure

函数: Discount_Factors_Blocking
DF.L1(16000000-160000000-2560000000-14080000000)
执行百分比:10.47%
1.3 热点代码

/*   函数 HJM_SimPath_Forward_Blocking */
// HS.L1
for(int b=0; b<BLOCKSIZE; b++)
{
	for(int s=0; s<1; s++)
	{
    	for (j=1;j<=iN-1;++j)
    	{
        	for (l=0;l<=iFactors-1;++l)
        	{
        		// P1
            	randZ[l][BLOCKSIZE*j + b + s] = RanUnif(lRndSeed);  
           }
       }
   }
}

serialB(pdZ, randZ, BLOCKSIZE, iN, iFactors);

// HS.L2
for(int b=0; b<BLOCKSIZE; b++)
{ 
	for (j=1;j<=iN-1;++j) 
	{
		for (l=0;l<=iN-(j+1);++l)
		{   
	    	for (i=0;i<=iFactors-1;++i)
	    	{
	    		// P2
				dTotalShock += ppdFactors[i][l]* pdZ[i][BLOCKSIZE*j + b];		  		
	       }	      	   
	       ppdHJMPath[j][BLOCKSIZE*l+b] = ppdHJMPath[j-1][BLOCKSIZE*(l+1)+b]+ pdTotalDrift[l]*ddelt + sqrt_ddelt*dTotalShock;
	   }
   }
}



/*   函数 RanUnif*/
ix = *s;
k1 = ix/127773L;
ix = 16807L*( ix - k1*127773L ) - k1 * 2836L;
if (ix < 0) 
{
	ix = ix + 2147483647L;
}
*s   = ix;
dRes = (ix * 4.656612875e-10);




/*   函数 serialB - CumNormalInv*/
//函数 serialB
// se.L1
for(int l=0;l<=iFactors-1;++l)
{
	for(int b=0; b<BLOCKSIZE; b++)
	{
    	for (int j=1;j<=iN-1;++j)
    	{
    		// P3
			pdZ[l][BLOCKSIZE*j + b]= CumNormalInv(randZ[l][BLOCKSIZE*j + b]); 
       }
   }
}
//函数 CumNormalInv
 r = u;
 if( x > 0.0 ) 
 {
 	count[1]+=1;
  	r = 1.0 - u;
 }
r = log(-log(r));
r = c[0] + r * (c[1] + r * (c[2] + r * (c[3] + r * (c[4] + r * (c[5] + r * (c[6] + r * (c[7] + r*c[8])))))));

if( x < 0.0 ) 
{
	r = -r;
}



/*   函数 Discount_Factors_Blocking */
// DF.L1
for (i=1; i<=iN-1; ++i)
{
	for (b=0; b<BLOCKSIZE; b++)
	{
		for (j=0; j<=i-1; ++j)
		{
			// P4
	    	pdDiscountFactors[i*BLOCKSIZE + b] *= pdexpRes[j*BLOCKSIZE + b];
	   }
   } 
}

2.功能分析
2.1数据标签

标签数据注释
m1ppdFactors[][]矩阵/一维向量
v1pdDiscountFactors[]一维向量
s1lRndSeed标量
HS.m1randZ[][]矩阵/一维向量
HS.m2pdZ[][]矩阵/一维向量
HS.s1dTotalShock标量
DF.v1pdexpRes[]一维向量

说明:s,v,m,t(全局数据)di.(局部数据)

2.2数据流分析
函数: HJM_SimPath_Forward_Blocking
HS.L1(12行)
P1: s1 ->HS.m1[i][],函数调用
HS.L2(30行)
P2: (m1[i][], HS.m2[i][]), HS.s1 ->HS.s1,加法树

函数:serialB
se.L1(63行)
P3: HS.m1[][i] ->HS.m2[][i],函数调用

函数:Discount_Factors_Blocking
DF.L2(93行)
P4: DF.v1[i], v1[i] ->v1[i],加法树
3.加速分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值