社区
英特尔边缘计算技术
帖子详情
在双核上运行Huffman压缩的性能
信谦
2008-05-19 10:31:39
大家好啊 ,我用OpenMP实现了Huffman压缩文本文件程序,运行环境是Intel双核,
但是很奇怪,发现并行性能还不如串行的好。
我想的原因可能是负载不平衡,因为我用了很多的任务队列;
还有一种可能是读文件和写文件是不能并行的,所以造成瓶颈。
有高人可以帮我指点一下吗,我们快要检测代码了。
谢谢
...全文
134
3
打赏
收藏
在双核上运行Huffman压缩的性能
大家好啊 ,我用OpenMP实现了Huffman压缩文本文件程序,运行环境是Intel双核, 但是很奇怪,发现并行性能还不如串行的好。 我想的原因可能是负载不平衡,因为我用了很多的任务队列; 还有一种可能是读文件和写文件是不能并行的,所以造成瓶颈。 有高人可以帮我指点一下吗,我们快要检测代码了。 谢谢
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
intel_www
2008-05-28
打赏
举报
回复
对MakeHuffmanCode的调用是否是在另一个循环中?如果是的话,这里的thread overhead会过大,导致并行版本比串行更慢。
信谦
2008-05-19
打赏
举报
回复
[Quote=引用 1 楼 Intel_CG 的回复:]
建议用Intel Thread Profiler检查负载平横。 请贴出用OpenMP的代码,方便讨论。或去premier.intel.com提交问题
[/Quote]
比如一个生成Huffman码的函数:
void MakeHuffmanCode(PHuffNode hnode,int deep) //生成Huffman码
{
static char hcode[256]={0}; //每次调用均清0
static int ncnt = 0;
BOOL IsChild = TRUE; //用来标记是否为叶节点
if(hnode->lChild || hnode->rChild)
{
hnode->arrIndex = ncnt;
m_fhead.push_back(*hnode);
ncnt++;
}
#pragma intel omp parallel taskq
{
#pragma intel omp task
{
if(hnode->lChild != NULL)
{
hcode[deep] = '0'; //左边为0,右边为1
MakeHuffmanCode(hnode->lChild,deep+1);
IsChild = FALSE;
}
}
#pragma intel omp task
{
if(hnode->rChild != NULL)
{
hcode[deep] = '1';
MakeHuffmanCode(hnode->rChild,deep+1);
IsChild = FALSE;
}
}
}
if(IsChild) //一个字符的编码结束
{
hcode[deep]='\0';
HuffCode[hnode->cKey] = hcode;
}
}
还有其他很多函数的WHILE循环都是用任务队列实现的。
我再用Intel Thread Profiler检测一下负载平衡。
希望大家有建议提出来
谢谢了!!
Intel_CG
2008-05-19
打赏
举报
回复
建议用Intel Thread Profiler检查负载平横。 请贴出用OpenMP的代码,方便讨论。或去premier.intel.com提交问题
ARM的DSP增强型扩展
现在,很多新兴的应用领域涌现了许多新的算法标准,这些算法对于处理器提出了更高的
性能
和控制要求。信号处理需要处理器提供高峰值
性能
,但这部分在整个算法中的比例有减少的趋势。对于开发包含高
性能
算法的大规模应用的设计团队来说,有很多种可供选择的方案。市场竞争的压力使得选择一个对高
性能
有充分保障的处理器平台来实现高
性能
的功能变得非常重要。但是选择超出需求
性能
很多的处理器平台对于系统成本和电源消耗也是有着...
C语言实现的JPEG图像编码器
JPEG(Joint Photographic Experts Group)图像编码技术由ISO/IEC联合制定,是目前广泛应用于静态图像
压缩
的标准。它的发展始于上世纪80年代末期,其目的是为了解决高质量图像在存储和传输中的巨大数据量问题。JPEG编码采用有损
压缩
,能够在相对较小的文件大小下保持较好的视觉质量。
计算机基础知识(免费、全面)
查看目录 网络基础知识* 计算机基础知识1* 计算机基础知识2# 计算机病毒* 病毒:人为编制的程序,特点有隐蔽性、传染性破坏性等。传染性是病毒的基本特征,破坏性是目的* 按感染的方式分为:引导型病毒、文件型、网络、复合型、宏病毒、外壳型* 杀毒软件:KV300、KV3000、Kill、AV95* 引导型病毒感染引导区和主导区,如:大麻病毒、小球病毒、2708病毒。引导型病毒存放在引导区中* 文件病毒:大多是可执行文件,如:黑色星期五、CIH(硬盘/BIOS数据丢失)。 复合病毒:感染文件和引导区* .
基于SystemC的异构多核通信模块设计
转载https://wenku.baidu.com/view/ad83e420dd36a32d73758138.html 1 引言 如今,随着集成电路工艺发展到深亚微米的阶段,处理器体系结构的设计研究正朝着多 核的方向发展。Intel、IBM、SUN 等主流芯片产商已经在市场上发布了自己的多核处理器。 目前多核处理器的发展尚处于起步阶段,有很多问题还有待解决。其中,一个十分重要的方 面就是设计高效的片上通信架构[1]。多个内核上同时执行的各个程序之间可能需要进行数据 共享与同步,因此多核处理器的硬
Java代码保护与Vlinx Java Protector应用指南
Vlinx Java Protector 是一款专业的 Java 应用安全保护工具,旨在为开发者提供一系列的功能以确保 Java 应用在分发和执行过程中的安全。它不仅可以加密 Java 字节码,还能通过集成开发环境支持和一系列的配置参数来提高应用程序的安全性。本章节将详细介绍 Vlinx Java Protector 的功能特点及其用户界面的使用。在Java应用程序的保护中,混淆技术是一种关键的安全措施,用来提升代码的防御能力。
英特尔边缘计算技术
567
社区成员
7,024
社区内容
发帖
与我相关
我的任务
英特尔边缘计算技术
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
复制链接
扫一扫
分享
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章