吉林大学多核程序设计

[复制链接]
admin 发表于 2016-12-9 09:59:38 | 显示全部楼层 |阅读模式
      以Intel为代表的国际主流微处理器厂商已经成功推出了多款多核微处理器系统,应用领域也从高端服务器向一般桌面系统延伸。如何充分发挥多核处理器的性能优势,已经成为当前软件产业的重要挑战。在已有软件工程专业的教学体系中,还没有课程能充分指导学生掌握多核处理器上软件设计的方法和技巧,这直接制约了多核处理器应用的普及和深入,制约了软件技术水平的提高。因此,开设“多核程序设计”课程具有相当的重要性和紧迫性。
现如今多核处理器已经成为通用处理器的主流,多核程序设计技术是一大新兴的研究热点。本课程目的是让学生了解当前计算机芯片设计领域中新兴多核体系设计的基本原理、技术难点、目前发展状况、以及对计算机领域带来的相关影响等,通过建立体系经典理论研究和实际的发展方向之间的桥梁,为将来从事体系结构领域、系统软件领域以及相关领域的高水平研究打好扎实的基础。学习该课程的基本目标是通过本课程的学习,使学生掌握多核体系的基本原理、基于多处理器的程序设计方法、编程方式的变化趋势等,达到能真正将多核技术应用在本学科领域的目的。
本课程通过对多核架构和编程技术的学习,结合同学们在本专业其它课程的学习,侧重于多核编程技术的应用实践。让学生学习多核平台上的并行编程设计,学习多核硬件与单核在编程技巧上的差异性,以及多核程序评测和调优工具的使用以及优化技巧。
本课程中程序设计实践占了相当大的比重,为配合本课程更好的开展教学,课程提供了程序设计习题,供同学们在各章节的学习思考。此外课程还精心设计了多个配套实验,让同学们在各章节理论学习的同时进行动手实践加深理解,切实掌握多核程序设计技术。
“多核程序设计”课程的主要内容包括四个主要部分:基本理论知识,多核程序设计方法,基于多核处理器的并行算法设计与实现,多核软件性能分析工具的使用。
1、  基本理论知识
该部分主要介绍多核程序设计的硬件和操作系统平台基础,以期让学生掌握多核程序设计的基本原理。
2、多核软件设计技术
这部分内容主要讲授基于Windows操作系统平台上多线程程序设计的基本操作系统原语,以及OpenMP的基本设计方法,以期让学生掌握使用多线程方法进行多核程序设计的基本技能。
3、并行算法设计基本方法和实例分析
这部分内容主要讲授并行计算程序设计的一般原理,以及结合实际例子说明在多核处理器平台上使用多线程方法设计并行程序的方法。
4、多核软件的性能分析方法和工具
这部分内容以Intel公司的性能分析工具为基础,介绍了多核软件实际运行性能的分析和优化方法。包括性能分析工具中采样方式和调用图方式的工作原理,以及工具中关于数据竞争、死锁、关键路径、负载均衡等重要问题的方法。

The introduction of course --- Multi-Core Programming

The current international microprocessor manufacturers, represented by Intel, have successfully presented various multi-core microprocessors, and have expanded their application fields from high-end servers to common desktop systems as well. It has been a great challenge for the software industry that how to maximize the performance advantages of multi-core processors. In the software engineering curriculum system, there is no course that can guide the students to fully master the methods and techniques of software programming using multi-core processors, which directly restricts the universal and deep application of multi-core processors, and restricts the improvement of software techniques. Thus, it's of great importance and urgency to develop the multi-core programming course.
Now the Multi-core processor has already become the mainstream of the current processor, and the Multi-core programming design is a new research hotspot. The purpose of this course is letting students understand the new Multi-core design’s principle, the technical difficulty, the present developmental situation, and the influence of the computer which all in the present computer CMOS chip designing realm. Through establishing the bridge between the system classical theory and the actual developmental direction, it’ll build the well-knit foundation for the high-leveled research of engaging in the realm of the systematic structure, the realm of the systematic software and relevant realm. The basic purpose of studying this course is letting students grip the principle of the Multi-core system. Based on the Multi-processor programming design method and the changing trend of the programming and so on, it will reach the purpose that students could apply the Multi-core technology in this course realm.
Through the studying of this Multi-core construction and the program technology and combining the other course’s study, this course emphasize particularly on the applied practice of the Multi-core programming technology. This course let students study the parallel programming which on the Multi-core platform, the different programming skill between the Multi-core hardware and the Single-core hardware, and the Multi-core programming evaluation and the use and optimization skill of optimization implemental.
In this course, the programming account for a large proportion. In order to cooperate with this course to better develop the teaching, it provides the exercises of programming to let the students to think in every chapter. Besides, it also designs many matching experiments elaborately. So it will help students while carrying on different chapters’ theoretical study to deepen the understanding and let them actually grip Multi-core programming technology.
“Multi-core programming” course mainly consist four major parts: basic theoretical knowledge, Multi-core programming method, the parallel arithmetic design and realization based on the multi-core processor, the utilization of analysis implement of multi-core software.
(1) Fundamental theoretical knowledge
This part mostly introduces the hardware and operating system platform foundation of multi-core programming to let students grip the principle of multi-core programming.
(2) The programming technology of multi-core software
The primary content of this part introduces the basic skill of multithreading programming fundamental operating system original word which based on the Windows platform and the OpenMP basic programming method to let student grip the skill of using the multithreading method to design the multi-core programming.
The method of multithreading programming based on the Windows platform. This part primarily introduces the multithreading API connection function on the Windows platform which includes the establishment, abolishment, hangcomeback, the setting of PRI, sleeping, and critical region and so on.
It’s the method of multi-core software programming based on OpenMP. This part primarily introduces the principle and character of the OpenMP, the sentence format of translation and edition direction, the instruct order and the clause which are always used in the sentences. And emphatically introduce the variable property, the maneuver of multithreading distribution, stipulations of an agreement sentence and so on.
(3) The basic method of the parallel arithmetic programming and instance analysis
This part primarily instruct the principle of the parallel account programming, and combining the actual instance to explain how to use the multithreading programming method to design the parallel program on the multi-core processor.
(4) The character analysis method and implement of the multi-core software
Based on the Intel company character analysis implement, this part introduces the analysis and the optimization method of the multi-core software’s function. Including the sampling manner in the character analysis implement and the principle of the transferring picture manner, it also includes the methods about the date competition, lock, the key path, load equilibrium and so on in the implement.

本帖被以下学院推荐:

 楼主| admin 发表于 2016-12-9 10:01:24 | 显示全部楼层
2007级多核程序设计考题
点击此处下载

免费下载

175.34 KB, 下载次数: 1409

 楼主| admin 发表于 2016-12-9 10:00:10 | 显示全部楼层

《多核程序设计》教学大纲

课程编码
531023
教学单位
计算机科学与技术学院
课程名称
多核程序设计
英文名称
Multi-Core Programming
课程学时
32
课程学分
2
课程类别
专业教育课
课程性质
选修课
开课学期
6 学期
适用专业、方向
计算机科学与技术、网络与信息安全方向
选用教材
多核程序设计,多核系列教材编写组,清华大学出版社,2007年
主要参考书
[1] SHAMEEM AKHTER;JASON ROBERTS 多核程序设计技术--通过软件多线程提升性能  电子工业出版社 2007
[2] 周伟明 多核计算与程序设计 华中科技大学出版社 2009
[3] 英特尔软件学院教材编写组 多核多线程技术 上海交通大学出版社 2011
制定人
彭涛
制定时间
2013.6.20
一、 教学目的
“多核(Multi-Core)”,一般是指“单个裸片上具有多个可见的处理器,并且这些处理器各自拥有独立的控制和工作状态,互相之间无需共享关键资源”。随着信息时代对计算能力需求的强劲增长,也随着90 、65纳米等先进制造工艺的应用,多核技术走向个人电脑不仅被铺平了道路,而且已经成为事实上的趋势,并成为影响计算机产业最为重要的技术方向之一。
为帮助大学培养掌握业界先进技术,满足时代发展需求的计算机人才,尤其是软件开发人才,英特尔公司于2006年在全球范围内推出“多核技术”大学计划,除支持基于多核的应用开发研究外,主要支持基于多核的课程及实验建设,尤其是围绕多核技术程序设计的课程建设,并逐步扩大到信息技术学科更广泛的课程分支中去。在中国,英特尔已开始对多核技术如何引入大学计算机教学进行讨论与尝试。2007年,英特尔的这一合作迅速扩大到了国内的37所高校。由浙江大学、复旦大学、清华大学、北京大学、上海交通大学共同组织编写的《多核程序设计》教材也已经由清华大学出版社正式发行。2008年,英特尔计划继续通过“多核技术课程大学计划”同中国更多大学在多核教学领域建立起更广泛有效的合作,以最大限度的帮助大学生掌握业界先进技术,满足时代发展需求,与世界同步。我院于2007年底收到英特尔中国大学合作部的电子邮件邀请,参加2008年“多核技术”大学计划,按照要求做出了一份“英特尔多核大学合作计划课程方案书”,经过评审,吉林大学顺利入围,并将按照计划开展合作。
多核程序设计课程作为一门新兴课程刚刚被引入到大学的研究与教学中,为了使大学培养出的计算机人才能够满足时代发展的需要,我们对多核程序设计课程建设规划的初步设想如下:在课程准备和教学过程中逐步完善教学理念和教学手段,教学过程中,改变传统教学方法,合理安排实验课程,以案例为导向的教学方法,增加与学生的互动,并与学生共同发展。时刻把握多核技术的发展动态,并将其有机地融入到课程教学当中。在教学过程中,利用逐步积累的经验及多核技术的发展编写和修订适合大学教学的多核程序设计教材和教学方法。以理论学习为基础,按照理论、设计、实例各环节的关系,逐步建立和完善实验的内容和方法手段。通过对多核程序设计课程的开展及推广,使大学生时刻掌握业界的先进技术,同时进一步完善和发展多核程序设计课程的内容和教学方法。
二、 教学要求
本课程从多核技术以及并行计算基础、原理、技术、经验以及多核软件工具等方面为学生提供关于多核程序设计技术的全方位解释,介绍多核体系结构、多核处理器、硬件支持、系统软件的现状,详细讲解在多核平台上进行软件开发的理论与方法。介绍多核计算机的发展,介绍软件多线程的内容,介绍并行算法与常用算法,以线程为出发点介绍多线程程序设计基础理论。介绍和讨论Windows多线程编写并行程序的常用编程API,详细介绍多核程序设计与调优方法。讲解Linux平台下的多线程编程技术, 详细介绍OpenMP与MPI利用多核平台进行并行程序设计的方法。然后利用Windows平台与Linux平台及多核厂家提供的多核软件调优工具以及多核程序设计实例引导学生迅速掌握多核平台上的程序设计技术与调优方法。
三、 预备知识或先修课程要求
高级语言程序设计,计算机操作系统,计算机系统结构。
四、 教学方式
以课堂讲授为主。
五、 教学内容及学时分配
第一章 多核技术概述(4学时)
知识点:多核技术的概述,掌握多核技术的软硬件发展历程,以及各种技术对于多核的支持。
重点:多核的发展历程,多核技术发展的必然性。
1.1 微处理器发展史
1.2 集成电路及芯片发展
1.3 片上多核处理器架构
1.4 操作系统对多核的支持
第二章 并行计算基础(4学时)
知识点:并行计算技术对多核的支持,并行计算的基础知识和基本计算模型,多核程序的性能评测方法。
重点:并行程序的性能评测方法。
2.1并行计算机体系结构
2.2并行计算模型
2.3进程、线程及性能评测
第三章 多线程基础(4学时)
知识点:多核多线程的基本概念,用户级线程和内核级线程的区别,线程的同步方法。
重点:多线程中用户级线程与内核级线程的区别,线程同步的方式。
3.1多线程概念
3.2用户及内核级线程
3.3线程同步
第四章 Windows多线程编程及调优(4学时)
知识点:Windows多线程编程的基础知识,具体的编程技术和线程API,线程执行的过程,在Windows环境下的调试和优化方法。
重点:Windows多线程编程技术,Windows多线程编程的调试与优化方法。
4.1线程库介绍
4.2 Win32线程API使用
4.3线程执行
4.4多线程调试与优化
第五章 Linux多线程编程(4学时)
知识点:Linux环境下进行多线程编程的基础知识,使用POSIX Pthreads库进行多线程编程的具体方法,线程互斥和同步的方法及实例。
重点:Linux下POSIX库编程的基本方法。
5.1 POSIX线程库介绍
5.2 POSIX Pthreads库基本线程操作
5.3线程互斥和同步
第六章 OpenMP多编程编程及性能优化(4学时)
知识点:OpenMP编程的基础知识,具体的OpenMP编程方法,以及如何对OpenMP程序进行性能分析和优化。
重点:OpenMP编程的具体方法,以及OpenMP程序的性能分析与优化方法。
6.1 OpenMP编程介绍
6.2 OpenMP编程技术
6.3 OpenMP编程性能分析与优化
第七章 MPI编程及性能优化(4学时)
知识点:MPI编程的基础知识,MPI编程的具体方法及实例,MPI程序的性能分析与优化方法。
重点:MPI编程与OpenMP编程的异同,性能分析与优化。
7.1 MPI介绍
7.2安装配置
7.3编程基础
7.4性能分析与优化
第八章 多核软件工具介绍及使用(4学时)
知识点:C++编译器、VTune性能分析器、Thread Checker线程检查器、Thread Profile线程档案器的主要功能、配置方法和使用方法。
重点:多核几种软件工具的功能和简单使用方法。
8.1 C++编译器
8.2 VTune性能分析器
8.3 Thread Checker线程检查器
8.4 Thread Profiler线程档案器
六、 考核要求、考核方式及成绩评定标准
笔试
七、 其他说明