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

    大学课件基于多核编程的案例分析.ppt

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

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

    大学课件基于多核编程的案例分析.ppt

    基于多核编程的案例分析,多核架构及编程技术,http:/,语讫泛橇祈屠堆佃所辑禹聊帽线里低筹带弥咬沉识骋湘码棍除俯坎芒闽斟【大学课件】基于多核编程的案例分析【大学课件】基于多核编程的案例分析,基于多核编程的案例分析,.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号

    三一办公
    收起
    展开