程序优化:算法对上SIMD+OMP(2)
来源:互联网 发布:同义词反义词软件 编辑:程序博客网 时间:2024/06/09 15:27
传统方法+OpenMP
使用OpenMP对传统方法进行优化。感谢OpenMP,实现多线程优化方便多了!多核时代,OpenMP将成为我们的利器!
float test_Normal_OMP_Filter()
{
BYTE* buf = (BYTE *)malloc(1024 * 1024 * sizeof(int)); //分配内存
BYTE* ptr = buf; // 内存指针
//背景色,用于和前景色进行溶合
int background_R = 0xF8, background_G = 0xF8, background_B = 0xF8;
int dr, dg, db; // 过滤比值分量
BEGIN_PERF() // 计时开始
// 内外层都使用默认的OMP,指定不同的线程数会得出特定于机器的结果
#pragma omp parallel for
for ( int h = 0; h < 1024; h++ )
{
//内层的线程
#pragma omp parallel for
for (int w = 0; w < 1024; w++ )
{
// 具体操作过程与传统方法一样
if ( (*(int *)ptr & 0x00070707) != 0 )
{
dr = (int)*(ptr + 2) << 8;
dg = (int)*(ptr + 1) << 8;
db = (int)*(ptr + 0) << 8;
*(ptr + 2) = ((int)*(ptr + 2) * (65535 - dr) + background_R * dr) >> 16;
*(ptr + 1) = ((int)*(ptr + 1) * (65535 - dg) + background_R * dg) >> 16;
*(ptr + 0) = ((int)*(ptr + 0) * (65535 - db) + background_R * db) >> 16;
}
ptr += 4;
}
}
END_PERF() // 结束计时
free(buf); // 释放内存
return GET_PERF(); //返回计时结果
}
使用OpenMP这个利器,即使使用默认设定,也能得到比非OMP方法快17%-23%的结果。看来,多核时代OpenMP必将大行其道!
0 0
- 程序优化:算法对上SIMD+OMP(2)
- 程序优化:算法对上SIMD+OMP(2)
- 程序优化:算法对上SIMD+OMP(0)
- 程序优化:算法对上SIMD+OMP(1)
- 程序优化:算法对上SIMD+OMP(3)
- 程序优化:算法对上SIMD+OMP(4)
- 程序优化:算法对上SIMD+OMP(0)
- 程序优化:算法对上SIMD+OMP(1)
- 程序优化:算法对上SIMD+OMP(3)
- 程序优化:算法对上SIMD+OMP(4)
- OMP算法
- OMP算法
- OMP算法
- 对OMP的理解
- 【优化技巧】 SIMD
- MP和OMP算法
- MP及OMP算法
- OMP算法学习笔记
- 在C/C++代码中使用SSE等指令集的指令(4)SSE指令集Intrinsic函数使用
- 在C/C++代码中使用SSE等指令集的指令(5)SSE进行加法运算简单的性能测试
- 程序优化:算法对上SIMD+OMP(0)
- 程序优化:算法对上SIMD+OMP(1)
- 学习型红外遥控器设计(5) 万能学习型红外遥控器实现
- 程序优化:算法对上SIMD+OMP(2)
- 程序优化:算法对上SIMD+OMP(3)
- 学习型红外遥控器设计(6) 总结展望
- 程序优化:算法对上SIMD+OMP(4)
- hadoop 配置项的调优
- Hadoop 性能调优 重要参数设置技巧
- 掌握基本技能,做好科学研究——适用于毕业课题/科研竞赛/项目研究
- 2067049841
- 前端知会 之 HTTP Header