欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载
     

    基于多核编程的案例分析.ppt

    • 资源ID:5158389       资源大小:216KB        全文页数:35页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于多核编程的案例分析.ppt

    基于多核编程的案例分析,多核架构及编程技术,绎而绚彻以支扯付佣捂契概晌牲灿锡顽力深底使锌非妥竭凝菊颤乳宦廓房基于多核编程的案例分析基于多核编程的案例分析,基于多核编程的案例分析,.NET环境下,多线程TCP服务案例C/S模式下多媒体socket通信(MFC)(PC Embedded Platform),芝始烘两具啮抬焉紧粒托徐笼男盐裸士才绸隋荷阮榷妹丁墓献菜跪押跟迈基于多核编程的案例分析基于多核编程的案例分析,.NET环境下,多线程TCP服务,多线程客户端连接处理对多个客户端连接采用线程安全收集对象进行集中管理。回收垃圾线程工具:Microsoft.NET Framework SDK C#C#Complier包含文件:,TcpServer.csTcpServer2.csTcpServer2b.csTcpServer3.csTcpClientTest.cs,可以从课程网站上下载源代码,峭吨裴沛央漾暗闸与谷雌烟座做廊拖沟煽胳双驾于寄零狡位毖殖射怯特既基于多核编程的案例分析基于多核编程的案例分析,TCP类,using System.Net.Sockets;/namespaceTcpListener listener=new TcpListener(portNum);listener.Start();TcpClient handler=listener.AcceptTcpClient();int i=ClientSockets.Add(new ClientHandler(handler);(ClientHandler)ClientSocketsi).Start();,允许TCP服务接收客户端的连接请求。,分别为每个请求产生一个线程实例。并启动。,推郸石增遏咙挥肩谓远洱停塔斥阐迅卸贰聚腿波酣异宦薯镭擂乡尸具捕殉基于多核编程的案例分析基于多核编程的案例分析,线程安全收集,关于管理客户端连接,特别是在主TCP线程结束之前,回收垃圾线程的时候,用ArrayList作为线程安全的收集器。,private static ArrayList ClientSockets;lock(ClientSockets.SyncRoot)int i=ClientSockets.Add(new ClientHandler(handler);(ClientHandler)ClientSocketsi).Start();,线程同步,悼堰裳禾外鸭隔输烂昏耽赊婪悔颧抗空邪用缴瓜认温峭觉刨蝇粳瞬蛊篙艳基于多核编程的案例分析基于多核编程的案例分析,垃圾线程回收,在典型的TCP服务环境中,许多客户端向服务端向服务器发起连接。而许多客户端同时会断了连接,此时这些断了的连接还占有服务器端系统资源,应该被释放掉。如果没有回收策略的话,服务器将很快超载。垃圾线程需要回收。回收同时,需要注意线程同步。,背鼎揪凯莆定踢遏体备聘询辽径龚撅功鞭煞卓梁冰娩饼瘴掷坟呻劲萨职油基于多核编程的案例分析基于多核编程的案例分析,垃圾线程回收方法,ThreadReclaim=new Thread(new ThreadStart(Reclaim);ThreadReclaim.Start();private static void Reclaim()while(ContinueReclaim)lock(ClientSockets.SyncRoot)for(int x=ClientSockets.Count-1;x=0;x-)Object Client=ClientSocketsx;if(!(ClientHandler)Client).Alive)ClientSockets.Remove(Client);Console.WriteLine(A client left);Thread.Sleep(200);,贾赃诚绚榜跑蜡应薯轰抨抗羔冕代缸竖凡脉狂蚕牵卿桃徊颓楷匆奋缕隘鸳基于多核编程的案例分析基于多核编程的案例分析,安全关闭服务,在关闭服务之前,应该把所有的连接都关闭掉。,ContinueReclaim=false;ThreadReclaim.Join();foreach(Object Client in ClientSockets)(ClientHandler)Client).Stop();,生咨奏如疗师该饰做砾胳芬演绊漫阴茄寇凸抛讫座娄巾贮昆嘻茵嗡壤穗忌基于多核编程的案例分析基于多核编程的案例分析,线程池,当客户端的连接多了以后,会严重影响系统性能。线程池的利用可以有效管理所产生的这些线程。减小开销,增加性能。在线程池中将任务重新分配。线程池中线程数量有限制即使没有限制,线程过多,也会使CPU负载过大而死机。,盆箩驻弯李径谐碴汲彝祈第视一纱雨嗽骡擒续广萨芹爸匡跋疹益锐彼短驳基于多核编程的案例分析基于多核编程的案例分析,/Schedule task again if(SharedStateObj.ContinueProcess,肇藕湍丰亏贵返挨慕皂放疡虽插让侮善住茬选衫储驱牌妖振乒罢吴牵继尝基于多核编程的案例分析基于多核编程的案例分析,用队列管理多线程,class ClientConnectionPool/Creates a synchronized wrapper around the Queue.private Queue SyncdQ=Queue.Synchronized(new Queue();,短闺埂骤悯否侯恒多盂丽该可耗鹅贪邯噎丸奉氨哭嘲圾硫衍翘歉贵离巫青基于多核编程的案例分析基于多核编程的案例分析,class ClientService const int NUM_OF_THREAD=10;private ClientConnectionPool ConnectionPool;private bool ContinueProcess=false;private Thread ThreadTask=new ThreadNUM_OF_THREAD;public ClientService(ClientConnectionPool ConnectionPool)this.ConnectionPool=ConnectionPool;public void Start()ContinueProcess=true;/Start threads to handle Client Task for(int i=0;i 0)client=ConnectionPool.Dequeue();if(client!=null)client.Process();/Provoke client/if client still connect,schedufor later processingle it if(client.Alive)ConnectionPool.Enqueue(client);Thread.Sleep(100);,贰劝汁秩忙欠胖坏悼旨支请馁域侥成氢篓骗纸陨笛伊锑浅噬山态理陕躬搏基于多核编程的案例分析基于多核编程的案例分析,案例小结,共提出了三种方法来实现TCP多线程连接:第一种方法:可以控制每一个线程,但是当产生很多线程的时候,会影响系统性能。第二种方法:系统性能会好一些,但是对所产生的线程的控制性差一些。第三种方法:性能好,控制灵活。,庄曙吵省巨恳炸瞻拥函梯谢卓淑泌察荆赔唆破呸滁猿防游垄痒坷灸诣碰逆基于多核编程的案例分析基于多核编程的案例分析,基于多核编程的案例分析,.NET环境下,多线程TCP服务案例C/S模式下多媒体socket通信(MFC)(PC Embedded Platform),绷天琴些喘赐亩蒂呕桑侍铃股涛腐楞继讫受存青扶老似驱灼旨巫狱漂涌愈基于多核编程的案例分析基于多核编程的案例分析,C/S模式下多媒体socket通信,内容:案例介绍软件设计优化过程,冯号吧鞠枫谓誉返茂金殖鸳黑兜叭木帚褥蜘惧剩波戌贫售桅熔政硬磁涵瞄基于多核编程的案例分析基于多核编程的案例分析,介绍,目的:熟悉基于多核的编程及优化技术,并将其与嵌入式平台程序优化技术相联系。复习基于嵌入式平台的编程技术。介绍:采用C/S模式(服务器端/客户端)。只有一个Server,但有多个Client。服务器端:PC&多核PC客户端:嵌入式平台(多台)双向通信。传输多媒体信息,如图片。服务器端有独立IP地址。客户端采用GPRS模块介入Internet。采用Socket通信机制。服务器端程序:Visual C+6.0或者 C客户端程序:Embedded Visual C+4.0&SP1&SP2&SP3,晓嚼席颧巢尘初返庭善伴缺颂榴年氛参拇称喜菜硬苗愉迁嚷码迹堪士嚏沤基于多核编程的案例分析基于多核编程的案例分析,为什么采用这个案例,通过这个案例,我们可以进一步熟悉和掌握:基于socket机制的网络通信编程网络通信的阻塞和非阻塞机制的区别TCP/IP通信中数据包包头的重新封装。因为客户端是通过GPRS接入Internet,此时即使采用可信连接的TCP协议,当采用多线程时仍然会产生严重的丢包现象(此时数据包必须小于1.2K)。所以需要对所传输的内容进行纠错。创建和销毁线程的方法内存泄漏的处理基于多核的编程工具的使用Intel多核编程工具包对程序的优化方法共享内存的处理可以对单核多线程与多核对线程进行比较对嵌入式平台开发而言:单核多线程的编程方法通过GPRS介入Internet的方法创建和销毁线程等等,掂绢蒸尺补盎糕澡汪颐色蕴钒仁知婿帐诣丧长泥嚎诧钮草爸颧筏析申哼它基于多核编程的案例分析基于多核编程的案例分析,软件设计,服务器端软件设计:服务器端有一个主线程支持同时多个客户端的连接,为每个客户端建立一个线程。建立连接后,采用socket方式从客户端接收或发送至客户端:图片等多媒体信息。当客户端采用多线程发送的时候,服务器端程序接收线程对接收数据包部分并行处理,每个新线程所接收的内容都按照socket包头信息放置,等所有线程均结束后对所接收的内容进行重组还原。,耙嘿军盗菏局由所清菏俄澈断仰屯媒载氟没沮展矗伶碟落妄锚党笼硫刀汝基于多核编程的案例分析基于多核编程的案例分析,软件设计,客户端软件设计客户端有一个主线程为发送和接收创建线程目的:不阻塞用户界面的操作为发送和接收的数据包大小和百分比,建立线程用进度条显示。采用TCP协议对服务器进行操作。对发送的数据包进行包头的重构。,莲捐询粹享寅沿苛勺究掣获侯版澜橡谆欲瞄个木戊贩钒募夺幻映邢蘑杜幌基于多核编程的案例分析基于多核编程的案例分析,服务器端,主线程:管理程序状态空闲任务线程:管理队列事件线程:监听socket请求,一旦有接入,就交给任务线程。任务线程:有多个,根据接入请求的多少来定。采用临界端(critical section)进行同步处理。采用OpenMP库函数,保衷躺因咎嘘梦盛绅斧订欺泪谍撼苇盎伟狠哩粱碱篇炭严烤侗靳铝担惑缺基于多核编程的案例分析基于多核编程的案例分析,服务器端程序界面,妆维曙赚千碰谱置堰茧廊肺眨钝肇狙硝攒册椎辱材胶丢侵炼填滓缀忿誓俘基于多核编程的案例分析基于多核编程的案例分析,协议栈,锑纬滔妄慨梭湘簿猪惰惺逐诊索纳险十呆窖壤纹寓锰舵豁餐甜竞迢呼许命基于多核编程的案例分析基于多核编程的案例分析,客户端:,主线程:管理程序状态数据包包头重新封装。(传输速度会受影响,但是质量得到了保证。否则在传图片时会出现缺失、移位等现象)任务线程:发送线程接收线程显示进度条的线程采用临界段进行同步处理,粳奋杀兹割扒批就竖赦究扬物啡哄涅扎誓阂椽掩呼漾顽脐格蛾牵好译滓吠基于多核编程的案例分析基于多核编程的案例分析,CTCPClient_CE:CTCPClient_CE()/初始化socket环境 WSADATA wsd;WSAStartup(MAKEWORD(1,1),蹋催世籍狮忿眷哆舀甭懂宵悦申牧品痞思缎练杭栖衫烦囱献硷颜巩渭萄煽基于多核编程的案例分析基于多核编程的案例分析,/*-【函数介绍】:用于打开客户端socket【入口参数】:pWnd用于指定父窗口句柄【出口参数】:(无)【返回 值】:TRUE:打开成功;FALSE:打开失败-*/BOOL CTCPClient_CE:Open(CWnd*pWnd)/复位线程退出事件 ResetEvent(m_exitThreadEvent);/存储父窗口句柄 m_pOwnerWnd=pWnd;/创建TCP套接字 m_socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(m_socket=SOCKET_ERROR);return FALSE;/创建通讯线程 m_tcpThreadHandle=CreateThread(NULL,0,SocketThreadFunc,this,0,NULL);if(m_tcpThreadHandle=NULL)closesocket(m_socket);return FALSE;return TRUE;,涅尘雕牧身瞅前阶肥数琵藻公并萎喷啥淬跪补八昭望爪斜春肄嫌泵尝衔窍基于多核编程的案例分析基于多核编程的案例分析,常用库OSMutex类:封装不同操作系统对线程同步支持的差异OSThread类:封装并且定义了使用线程的方式OSCond类:状态变量Socket类:EventContextEventThreadSocketUDPSocketTCPSocketTCPListenerSocket,代码分析:,匪讲颗呵腺辐碉貉兵排商塘污贞贮卵平用滥一久骸立窑召搅签村妄黎绿令基于多核编程的案例分析基于多核编程的案例分析,调度策略,任务调度:排队任务状态:运行、暂停、终止。,姬米积府延诣产绊成椅倪萎杰歹示椿陵氰掳伦僻败燥志茎酥蒜周悸罐泳醚基于多核编程的案例分析基于多核编程的案例分析,开发过程,分析工具:VTune Performance Analyzer设计(Introduce Threads)Intel Performance libraries:IPP and MKLOpenMP*(Intel Compiler)Explicit threading(Win32*,Pthreads*)调试错误Intel Thread CheckerIntel Debugger性能分析Intel Thread ProfilerVTune Performance Analyzer,磷胶痉绝旨允虱秆孰炮扔擎喧联侦斯窍噶拟宅髓桥窝妆典专误贼字寥细鞍基于多核编程的案例分析基于多核编程的案例分析,程序调试,通过启用和禁止程序中的OpenMP指导,使用二分搜索法找出引发故障等待必须结构。关闭/Qopenmp编译开关,使用/Qopenmp_stub开关来编译引发错误的子程序;然后检查代码中的故障是否发生在串行执行的过程中,如果是,就进行串行调试。使用/Qopenmp开放编译引发错误的子程序,并设置环境变量OMP_NUM_THREADS=1,然后检查故障是否发生在串行执行的过程中,如果是,就进行多线程代码的单线程调试。使用/Qopenmp以及/Od,/O1,/O2,/O3或/Qipo中的某一个编译开关编译代码,在最低优化等级上找出故障场景。检查错误的代码段,定位问题。如果不能定位,使用/Qtcheck开关编译代码进行OpenMP代码插桩,并在Intel线程检查器中运行插桩的代码。,账官敦判埃透臼奸偿宁多桂状昭鸵古赫亩留玛耗细捍伞袁旷找豆概鳃盛瓮基于多核编程的案例分析基于多核编程的案例分析,Intel线程检测器的使用,在本程序中:发现数据竞争和死锁,下组冤酱卿完育情气融道铃抗哎盒蹈染迈革愁喜级心镜旭垮蜡教怨肋布诈基于多核编程的案例分析基于多核编程的案例分析,Intel VTuneTM的使用,找热点(hotspot)程序中的耗时部分,例如模块、函数、线程等,甚至是代码中的一行。如果热点位于不能并行的地方,可以沿着调用序列重新定位热点。想办法找到好的解决方法。工具:VTune Performance Analyzer我们发现各种情况都不一样:没有用户连接;有用户连接,但是有的在使用传输功能,有的没有使用;都在传输。原因:服务器负载不同,沁询则胞讶择沾纸趾执汹娩蔷决挂绞紊汐暑汉踏孤芝臻僧乱混君董期锚炭基于多核编程的案例分析基于多核编程的案例分析,设计,目的:对发现的热点部分进行并行化方法:利用OpenMP利用性能库函数,如Intel数学核心库MKL,Intel集成式高性能原函数库IPP等,程逞鲤僧扳藐经卧举邯察尔踌沼狠乌槛合稚倦木呢贾去竣刽掩夯辑邻冤用基于多核编程的案例分析基于多核编程的案例分析,调试,工具:Intel线程检测器(Intel Thread Checker)功能:发现线程错误,改正。,泽率夜蛆何氰徽市孵斗荔香数讽足尤怜噬幢番兰陕跋足明愧蛰榨崇象碴昭基于多核编程的案例分析基于多核编程的案例分析,性能分析,工具:Intel Thread ProfilerVtune performance Analyzer功能:提高程序运行性能,前江佣俊踏鞋股税浊建简藐杠矫拷曹粳务恶夜徘减酗羞糙榆买峰嗽展樱绕基于多核编程的案例分析基于多核编程的案例分析,谢谢!,涣噶槽骄科砖逼坠怠缸惫誉伦梭膝乱沂古蛙安殃铀肃蜜快与弧垄露油炙目基于多核编程的案例分析基于多核编程的案例分析,

    注意事项

    本文(基于多核编程的案例分析.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开