Benchmark分析1:Cortexsuite.lda3

1.热点分析
1.1热点函数
在这里插入图片描述
1.2热点循环
格式说明: 热点循环-各层执行总次数
执行百分比:热点循环占本函数执行比例

函数1: lda_inference
lda.L1.1.1 (6275-90634-44387371-133162113)
执行百分比:10.6% (41.4%,去掉lda.L1.1.2 中exp()库函数)
lda.L1.1.2 (6275-90634-44387371-133162113)
执行百分比:89.4% (58.6%,去掉lda.L1.1.2 中exp()库函数)

函数2: digamma
被调用循环:lda.L1.1.2 (6275-90634-44387371-133162113)

函数3: compute_likelihood
被调用循环:lda.L1(6275-90634)
热点循环:
comp.L1.1 (90634-271902-133162113)
执行百分比:100%

1.3 热点代码

/* 1.lda_inference  */

    // lda.L1
    while ((converged > VAR_CONVERGED) &&((var_iter < VAR_MAX_ITER) || (VAR_MAX_ITER == -1)))
    {
		var_iter++;
		
    // lda.L1.1
		for (n = 0; n < doc->length; n++)
		{
            phisum = 0;
            
    // lda.L1.1.1
            for (k = 0; k < model->num_topics; k++)
            {
            	// P1
                oldphi[k] = phi[n][k];
                // P2
                phi[n][k] =digamma_gam[k] + model->log_prob_w[k][doc->words[n]];

                if (k > 0)
                    phisum = log_sum(phisum, phi[n][k]);
                else
                // P3
                    phisum = phi[n][k]; // note, phi is in log space
            }
            
    // lda.L1.1.2
            for (k = 0; k < model->num_topics; k++)
            {
                // P4
                phi[n][k] = exp(phi[n][k] - phisum);
        		// P5
                var_gamma[k] =var_gamma[k] + doc->counts[n]*(phi[n][k] - oldphi[k]);
                // P6
                digamma_gam[k] = digamma(var_gamma[k]);
            }
        }
    // lda.L1
        likelihood = compute_likelihood(doc, model, phi, var_gamma); 
      	...
    }
    return(likelihood);
}


/* 2.digamma  */
	double digamma(double x)
	{
	    double p;
	    x=x+6;
	    p=1/(x*x);
	    p=(((0.004166666666667*p-70.003968253986254)*p+0.008333333333333)*p-0.083333333333333)*p;
		p=p+log(x)-0.5/x-1/(x-1)-1/(x-2)-1/(x-3)-1/(x-4)-1/(x-5)-1/(x-6);
	    return p;
	}


/* 3.computer_likelihood  */

	// comp.L1
    for (k = 0; k < model->num_topics; k++)
    {
 		likelihood +=(model->alpha - 1)*(dig[k] - digsum) + lgamma(var_gamma[k])- (var_gamma[k] - 1)*(dig[k] - digsum);
 	// comp.L1.1	
 		for (n = 0; n < doc->length; n++)
 		{
         	 if (phi[n][k] > 0)
         	 {
             	 // P7
                 likelihood += doc->counts[n]*(phi[n][k]*((dig[k] - digsum) - log(phi[n][k])+ model->log_prob_w[k][doc->words[n]]));
         	 }
        }
    }

2.功能分析
2.1数据标签
在这里插入图片描述
说明:s,v,m,t(全局数据)lda-、comp-(局部数据)

2.2数据流分析
函数1 lda_inference
lda.L1.1.1(14-26行)
P1: m1[i][] -> lda.v2
P2: m2[][i],lda.v1 -> m1[i][];数组求和
P3: m1[i][] -> lda.s1

lda.L1.1.2(29-34行)
P4: m1[i][],lda.s1 -> m1[i][] ;指数运算
P5: ( (m1[i][],lda.v2),v2),v1 -> v1

函数2 digamma
lda.L1.1.2(36行)
P6: v1 -> lda.v1

函数3 computer_likelihood
comp.L1.1(66-71行)
P7: ((comp.v1,comp.s2,m1[][i],m2[i][]),(m1[][i],v2)),comp.s1 -> comp.s1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值