Benchmark分析1:Cortexsuite-lda2

本文深入分析了Cortexsuite中的LDA2热点函数lda_inference和digamma,探讨了耗时原因和加速可能性。通过分析计算密集型循环体和函数调用,发现digamma函数是最耗时的部分,而exp()和log_sum()调用频繁但执行时间较低。功能分析揭示了数据流路径,并提出了针对F-2-1-1和F-2-1-2的并行和流水线加速策略。
摘要由CSDN通过智能技术生成

1.LDA分析思路
本Benchmark 的分析围绕加速目的,每个热点函数按照下面几个部分展开:
#耗时分析(潜在加速片段)
##耗时区域(高密度循环体 和 函数调用高频循环体)
##耗时原因(量化指标)

#功能分析
##热点区域
(input, process, output)
##跨区域关系
(数据流动:生产-消费路径)

#加速分析
##有无加速机会
##加速模式

2.热点区域分析
在这里插入图片描述
且各函数中循环执行次数(执行次数为上层循环/函数执行一次 对应循环的执行次数)见下表:
在这里插入图片描述
lda_inference 是父函数,调用了compute_likelihood和digamma两个子函数,先从父函数分析(digamma在lda_inference函数中分析)
#函数1 lda_inference & 函数2 digamma

/* 1.lda_inference  */

    //循环1 调用了digamma函数
    //model->num_topics=3
    for (k = 0; k < model->num_topics; k++)
    {
   
        var_gamma[k] = model->alpha + (doc->total/((double) model->num_topics));
        digamma_gam[k] = digamma(var_gamma[k]);  
        for (n = 0; n < doc->length; n++)
            phi[n][k] = 1.0/model->num_topics;
    }
    var_iter = 0;
    
    
    //循环2 外层调用了compute_likelihood函数,内层调用了digamma函数
    //while循环次数 [9,20]  model->num_topics [190,600]
    while ((converged > VAR_CONVERGED) &&((var_iter < VAR_MAX_ITER) || (VAR_MAX_ITER == -1)))
    {
   
		var_iter++;
		for (n = 0; n < doc->length; n++)
		{
   
            phisum = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值