HASSA代码分析常例(更新)

通过大量Benchmark集的分析,提取以下较为常见的例子。
暂时总结一般性结论:
1.加法树计算运用较为普遍
2.有较多认知错觉,以为计算密集的算法并非如此:如密码算法,财务计算模型,网页搜索,跟踪算法等
3. if-else循环运用较多
4. 循环指令并行性分析能够覆盖大多数代码分析;
有相关性的情况:迭代间自相关最多,接着迭代内相关,接着迭代间他相关

1. MachSuite.viterbi
Benchmark分析2: MachSuite.viterbi

/*   函数 viterbi  */
// vi.L1
for( t=1; t<N_OBS; t++ ) 
{
	for( curr=0; curr<N_STATES; curr++ ) 
	{
		// vi.L1.1.1
    	for( prev=1; prev<N_STATES; prev++ ) 
    	{
    		// P1
        	p = llike[t-1][prev] + transition[prev*N_STATES+curr] + emission[curr*N_TOKENS+obs[t]];
        }
    }
}

2. MachSuite.stencil.stencil2d
Benchmark分析2: MachSuite.stencil.stencil2d

/*   函数 stencil   */
// st.L1
for (r=0; r<row_size-2; r++) 
{
	for (c=0; c<col_size-2; c++) 
	{
		for (k1=0;k1<3;k1++)
		{
			// st.L1.1.1.1
			for (k2=0;k2<3;k2++)
			{
				// P1
            	mul = filter[k1*3 + k2] * orig[(r+k1)*col_size + c+k2];
            	// P2
                temp += mul;
            }
        }
    }
}

3. Cortexsuite.pca
Benchmark分析1:Cortexsuite.pca

/*   函数1 corcol   */
// co.L1
for (j1 = 1; j1 <= m-1; j1++)
{
    for (j2 = j1+1; j2 <= m; j2++)
    {
    	// co.L1.1.1
        for (i = 1; i <= n; i++)
        {
            // P1 
            symmat[j1][j2] += ( data[i][j1] * data[i][j2]);
        }
    }
}

/*   函数2 tqli   */
// tq.L1
for (l = 1; l <= n; l++)
{
    do
    {
    	if (m != l)
        {
             for (i = m-1; i >= l; i--)
             {
             	 // tq.L1.1.1.1.1
				 for (k = 1; k <= n; k++)
                 {
                     f = z[k][i+1];
                     // P2
                     z[k][i+1] = s * z[k][i] + c * f;
                     // P3
                     z[k][i] = c * z[k][i] - s * f;
                 }
             }
      	}
	}  while (m != l);
}

/*  函数3 tred2   */
// tr.L1
for (i = 1; i <= n; i++)
{
    if (d[i])
    {
        for (j = 1; j <= l; j++)
        {
           // tr.L1.1.1.1
           for (k = 1; k <= l; k++)
               // P4 
               g += a[i][k] * a[k][j];
           // tr.L1.1.1.2
           for (k = 1; k <= l; k++)
               // P5 
               a[k][j] -= g * a[k][i];
        }
    }
}

4. MineBench.Hop
Benchmark分析[3]: MineBench.Hop

/*   函数 smBallGather   */
// sBG.L1
while (1) 
{
	else(cp < nSplit)
	{
		// sBG.L1.1.1
		for (pj=c[cp].pLower;pj<=c[cp].pUpper;++pj) 
		{
			// P18
			dx = sx - p[pj].r[0];
			// P19
			dy = sy - p[pj].r[1];
			// P20
			dz = sz - p[pj].r[2];
			// P21
			fDist2 = dx*dx + dy*dy + dz*dz;
		}
	}
}

5. parsec.dedup
Benchmark分析[4]: parsec.dedup

/*   函数 rabinseg  */
// ra.L1
while(i<n)
{
	// P1
	x = p[i-NWINDOW];
	// P2 
    h ^= rabinwintab[x];
    // P3
    x = h >> 24;
    // P4
    h <<= 8;
    // P5
    h |= p[i++];
    // P6
    h ^= rabintab[x];
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值