⑴ 中国人民大学数据库专业属于什么方向系统结构,软件与理论,还是计算机应用技术
其实现在很多人都在跨专业考研,而且其中也不少成功之人(本人也算是其中一员吧,呵呵~)。只不过跨专业得比考本专业付出更多的努力才能获得同等的成功!
当然,相比之下,如果你想考名牌大学,我个人认为考本专业的胜算会更大些。但是不管怎样,研究生阶段的专业应该和你未来的就业是紧密结合在一起的,所以,你最好结合自己的兴趣以及个人能力等等许多综合条件来考虑。
全国范围 与 计算机 相关的共有 13 个专业,详细信息如下: 查询提示: 带*的为院校自设专业·081200 计算机科学与技术·081201 计算机系统结构·081202 计算机软件与理论·081203 计算机应用技术·081220 计算机科学与技术(...*·081220 计算机科学与技术(...*·081220 计算机科学与技术(...*·081220 计算机科学与技术(...*·081221 计算机科学与技术(...*·081221 计算机科学与技术(...*·081280 计算机软件与理论(软...*·081423 土木工程计算机仿真*·081820 计算机技术与资源信...*
计算机系统结构(47)
排名
学校名称
等级
排名
学校名称
等级
排名
学校名称
等级
1
清华大学
A+
4
浙江大学
A
7
西安电子科技大学
A
2
华中科技大学
A+
5
上海交通大学
A
8
复旦大学
A
3
西安交通大学
A
6
武汉大学
A
9
吉林大学
A
B+等(14个):东南大学、东北大学、北京航空航天大学、哈尔滨工业大学、北京大学、北京邮电大学、山东大学、中国科学技术大学、电子科技大学、重庆大学、北京科技大学、西北工业大学、中山大学、中南大学
B等(14个):同济大学、北京理工大学、大连理工大学、华南理工大学、北京交通大学、湖南大学、南京理工大学、哈尔滨工程大学、四川大学、华东师范大学、上海大学、天津大学、西北大学、广东工业大学
C等(10个):名单略
计算机应用技术(271)
排名
学校名称
等级
排名
学校名称
等级
排名
学校名称
等级
1
清华大学
A+
19
武汉大学
A
37
合肥工业大学
A
2
浙江大学
A+
20
华南理工大学
A
38
苏州大学
A
3
北京航空航天大学
A+
21
电子科技大学
A
39
江苏大学
A
4
华中科技大学
A+
22
大连理工大学
A
40
大连海事大学
A
5
北京大学
A+
23
天津大学
A
41
中山大学
A
6
上海交通大学
A+
24
中南大学
A
42
北京化工大学
A
7
哈尔滨工业大学
A+
25
上海大学
A
43
重庆大学
A
8
北京理工大学
A+
26
南京大学
A
44
南京理工大学
A
9
东南大学
A+
27
四川大学
A
45
中国海洋大学
A
10
西安电子科技大学
A+
28
中国科学技术大学
A
46
太原理工大学
A
11
东北大学
A+
29
北京工业大学
A
47
湖南工业大学
A
12
吉林大学
A+
30
同济大学
A
48
北京交通大学
A
13
西北工业大学
A+
31
华东师范大学
A
49
燕山大学
A
14
复旦大学
A
32
湖南大学
A
50
上海海事大学
A
15
哈尔滨工程大学
A
33
西安交通大学
A
51
新疆大学
A
16
西南交通大学
A
34
山东大学
A
52
重庆邮电大学
A
17
北京邮电大学
A
35
北京科技大学
A
53
南华大学
A
18
南京航空航天大学
A
36
安徽大学
A
54
首都师范大学
A
B+等(81个):中国矿业大学、武汉理工大学、河海大学、哈尔滨理工大学、中国人民大学、黑龙江大学、华东理工大学、郑州轻工业学院、广东工业大学、浙江工业大学、南京邮电大学、华中师范大学、山西大学、内蒙古大学、江南大学、沈阳航空工业学院、南开大学、兰州理工大学、长沙理工大学、西华师范大学、华北电力大学、杭州电子科技大学、东北财经大学、西安理工大学、五邑大学、天津工业大学、南京工业大学、成都信息工程学院、天津科技大学、大连水产学院、昆明理工大学、河北工业大学、西北民族大学、浙江工商大学、长春理工大学、内蒙古科技大学、上海理工大学、西安邮电学院、广西大学、中国地质大学、桂林工学院、青岛大学、东华大学、西安建筑科技大学、大连交通大学、兰州大学、北京师范大学、辽宁工程技术大学、武汉科技学院、河南理工大学、北京信息科技大学、北方工业大学、深圳大学、辽宁大学、西安科技大学、江苏科技大学、汕头大学、桂林电子科技大学、浙江理工大学、黑龙江科技学院、暨南大学、沈阳理工大学、河南科技大学、湖南师范大学、南昌航空工业学院、南京师范大学、山东科技大学、辽宁石油化工大学、中国民航大学、郑州大学、云南大学、太原科技大学、厦门大学、江苏工业学院、武汉科技大学、中国石油大学、安徽理工大学、中国传媒大学、安徽工业大学、西南大学、中原工学院
B等(81个):中南林业科技大学、石家庄铁道学院、齐齐哈尔大学、山东轻工业学院、河北大学、湖北大学、河南工业大学、沈阳工业大学、宁波大学、河北科技大学、福建师范大学、江西师范大学、湘潭大学、天津理工大学、云南财经大学、江西理工大学、大庆石油学院、东北电力大学、重庆交通大学、河北工程大学、上海水产大学、西华大学、青岛理工大学、江西农业大学、长春工业大学、华东交通大学、华南农业大学、南京农业大学、江西财经大学、西北农林科技大学、重庆工学院、西北大学、兰州交通大学、成都理工大学、浙江师范大学、内蒙古师范大学、北京工商大学、鞍山科技大学、辽宁工学院、北京联合大学、武汉工程大学、济南大学、陕西师范大学、大连大学、安徽师范大学、西北师范大学、内蒙古工业大学、河南师范大学、东华理工大学、贵州财经学院、四川师范大学、河南大学、东北师范大学、福州大学、南京信息工程大学、湖南科技大学、华南师范大学、长安大学、西南科技大学、山东师范大学、烟台大学、广西师范大学、曲阜师范大学、扬州大学、哈尔滨师范大学、山东经济学院、西安工程大学、中北大学、西南石油大学、西安工业大学、河北农业大学、广西民族学院、吉林农业大学、东北农业大学、贵州师范大学、广西师范学院、山西师范大学、华北水利水电学院、辽宁师范大学、贵州大学、河北师范大学
C等(55个):名单略
上面的排名你可以参考一下,最好结合院校本身的综合实力来考虑院校的选择。我还帮你找了些资料,你可以参考一下。
计算机类专业考研分支方向
01中文信息处理
02模式识别
03数据库技术
04领域数据工程
05软件集成技术
06数据挖掘
07数字图像处理
08科学计算可视化
09新一代系统软件
10软件工程
11网格计算
12智能数据处理
13智能化数据服务
14低功耗SOC
15计算机仿真
16系统仿真建模与分析
17计算机智能管理
18软件设计方法
19分布/迁移/网络计算
20Linux操作系统及应用
21智能网络与智能通信
22网络技术与安全
23人工智能及应用
24信息安全技术
25人工智能与人工生命
26企业信息化软件平台与中间件技术
27嵌入式系统研究
28宽带网络协议研究
29实时系统软件体系结构研究
30网络与通信系统集成电路设计
31图像处理与表面检测
32高性能计算
33并行编译
计算机的核心课程大致为:数据结构,组成原理,离散数学,操作系统,编译原理,系统结构,软件工程,OOP,图形学,网络,C/C++/Pascal/Asm编程语言等。而考研的科目,一般为前面的五到六科(不同学校选择的科目会有不同)。
2010年计算机考研大纲
地址:
计算机考研全国统考复习指导及备战建议
地址:
09年全国计算机专业排名公布
地址:
计算机考研统考行之有效的备考方案
地址:
计算机考研最好考的10所学校
地址:
考研院校选择三大误区
地址:
计算机专业考研经验谈 掌握方法以不变应万变
地址:
关于计算机考研、计算机就业推荐你去计算机吧
全国硕士研究生入学统一考试计算机专业课推荐参考书目
一、数据结构
★ 严蔚敏、吴伟民编着:《数据结构(c语言版)》,清华大学出版社
★ 严蔚敏、吴伟民编着:《数据结构题集(C语言版)》,清华大学出版社
二、计算机组成原理
★唐朔飞编着:《计算机组成原理》,高等教育出版社,1999年版
★唐朔飞编着:《计算机组成原理学习指导与习题解答》,高等教育出版社,2005年9月
★白中英主编:《计算机组成原理》,科学出版社
三、操作系统
★汤小丹、梁红兵、哲凤屏、汤子瀛编着:《计算机操作系统(第三版)》,西安电子科技大学出版社 ★梁红兵、汤小丹编着:《计算机操作系统》学习指导与题解(第二版),西安电子科技大学出版社,2008年9月
四、计算机网络
★谢希仁编着:《计算机网络(第5版)》,电子工业出版社
★高传善、毛迪林、曹袖主编:《数据通信与计算机网络(第2版)》,高等教育出版社说明:
相关参考辅导书:
★《全国硕士研究生入学统一考试计算机专业基础综合考试大纲解析》,高等教育出版社,2008年10月
★巩微、冯东晖主编:《2009年考研计算机学科专业基础综合考试全真模拟试题集》,原子能出版社,2008年10月
★阳光考研命题研究中心编写:《2009年考研计算机科学专业基础综合考试教程》,中国人民大学出版社,2008年11月
希望我的回答对你有点帮助!
⑵ 计算机系统的层次结构
计算机系统的层次结构:
1、微程序设计级 ---- 第1级
该级的编程工具是微指令集,程序员用微指令编写的微程序,由硬件直接执行。(如图中最下一行右边的PCWrite =1表示对PC寄存器的写控制,详细内容在控制器部分将详细学习)
2、传统机器级 ---- 第2级
该级的编程工具是计算机的机器语言指令集,程序员用机器指令编写的程序由微程序进行解释执行
3、操作系统级 --- 第3级
从操作系统的基本功能来看,一方面它直接管理传统机器中的软硬件资源,另一方面它又是传统机器的延伸
4、汇编语言级 --- 第4级
该级的编程工具是汇编语言指令集。与第二层所采用的机器语言编程工具相比,采用汇编语言编写程序便于理解与记忆
5、高级语言级 --- 第5级
该集的编程工具是各种高级语言如C语言等,高级语言源程序通常用编译程序来完成高级语言翻译后才能被底层的硬件执行
6、层次之间的关系
1)各层次之间的关系十分密切,高层是低层功能的扩展,低层是高层实现的基础。
2)站在不同的层次观察计算机系统,到关于计算机不同的概念。上图第二列分别对应地给出了从高级语言、汇编语言、机器语言和微程序设计级所看到的计算机的不同编程工具。
拓展:
计算机系统指用于数据库管理的计算机硬软件及网络系统。数据库系统需要大容量的主存以存放和运行操作系统、数据库管理系统程序、应用程序以及数据库、目录、系统缓冲区等,而辅存则需要大容量的直接存取设备。此外,系统应具有较强的网络功能。
计算机系统的特点是能进行精确、快速的计算和判断,而且通用性好,使用容易,还能联成网络。①计算:一切复杂的计算,几乎都可用计算机通过算术运算和逻辑运算来实现。②判断:计算机有判别不同情况、选择作不同处理的能力,故可用于管理、控制、对抗、决策、推理等领域。③存储:计算机能存储巨量信息。④精确:只要字长足够,计算精度理论上不受限制。
详细内容请在 网络 计算机系统 中了解
⑶ 计算机的体系结构,组成和实现各自处理哪些方面的问题
电脑的体系结构分为硬件系统和软件系统两个部分。
多媒体技术个人电脑的硬件设备包括:
主机:主机是整个电脑的主体,可以说用电脑来工作的时候,工作是在它内部完成的。主机外观上分为立式和卧式两种。立式机箱的结构更利于散热,更受人们欢迎一些。
键盘:是电脑中不可缺少的输入设备,用户可以通过键盘输入命令和数据,并可通过它控制电脑的运行。常见的键盘大多是101或104键的,一些较为新颖的104键盘往往带有两个Windows键和一个应用程序键,以提高在Win7操作系统上操作电脑的效率。这些键可以分为大键盘区、编辑键区、功能键区和小键盘区。
显示器:是电脑基本的输出设备,是整个电脑硬件系统中不可缺少的部分。我们现在常用的是液晶显示器,与传统的阴极射线管显示器相比,辐射比较低、体积小,耗电少。它利用液晶的特性,通电时排列变得有秩序,使光线容易通过,不通电时排列混乱,阻止光线通过,通过电路控制,显示图像。
打印机也是一种常用的输出设备。因为显示器上显示的内容一旦关机就看不见了,也不方便把显示器搬来搬去给别人阅读,所以我们还是需要用打印机把自己的工作成果打印出来。
鼠标:电脑中重要的输入设备,它能方便地把鼠标指针准确定位在我们指定的屏幕位置,很方便地完成各种操作。按其工作原理,鼠标分为机械鼠标、光电鼠标和光机鼠标。目前我们常常用的鼠标是光电鼠标。光电鼠标的下面是两个平行放置的小光源,这种鼠标只能在特定的鼠标垫上移动,光源发出的光经过鼠标垫反射后由鼠标接收为移动信号,送入电脑,使屏幕上的鼠标指针随之移动。鼠标指针和鼠标的移动方向是一致的,移动距离也成比例。光电鼠标使用时比较灵活,故障率比较低。
音箱:相当于电脑的嘴巴和喉咙,有了它电脑才能发出悦耳的声音。音箱的外壳有木质和塑料两种,两只音箱一左一右摆放在电脑两侧,与显示器有一定距离,才能得到立体声效果。
麦克风:相当于电脑的耳朵,有了它电脑才能把外部的声音传送到电脑中,变换成数字波形,输入到文件或多媒体图像中。
摄像头:可以分为数字摄像头和模拟摄像头两大类,数字摄像头可以直接捕捉影像,通过串口、并口或USB接口传到电脑里。根据摄像头的形态,可以分为桌面底座式、高杆式和液晶挂式。摄像头还可以分为有驱动和无驱动型的摄像头。
软件分为系统软件、应用软件。
系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。
操作系统是一管理计算机硬件与软件资源的程序,同时也是计算机系统的内核与基石。操作系统身负诸如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让使用者与系统交互的操作接口。目前多媒体个人电脑的主要操作系统是Windows 7。
应用软件是为了某种特定的用途而被开发的软件。它可以是一个特定的程序,比如一个图像浏览器。也可以是一组功能联系紧密,可以互相协作的程序的集合,比如微软的Office软件。也可以是一个由众多独立程序组成的庞大的软件系统,比如数据库管理系统。多媒体个人电脑的应用软件主要有酷狗音乐、腾讯视频、PPTV、Office 2007等。
⑷ 什么是计算机体系结构中的并行性
并行处理(Parallel Processing)是计算机系统中能同时执行两个或更多个处理机的一种计算方法。处理机可同时工作于同一程序的不同方面。并行处理的主要目的是节省大型和复杂问题的解决时间。为使用并行处理,首先需要对程序进行并行化处理,也就是说将工作各部分分配到不同处理机中。而主要问题是并行是一个相互依靠性问题,而不能自动实现。此外,并行也不能保证加速。但是一个在 n 个处理机上执行的程序速度可能会是在单一处理机上执行的速度的 n 倍。
计算机体系结构(ComputerArchitecture)是程序员所看到的计算机的属性,即概念性结构与功能特性。按照计算机系统的多级层次结构,不同级程序员所看到的计算机具有不同的属性。一般来说,低级机器的属性对于高层机器程序员基本是透明的,通常所说的计算机体系结构主要指机器语言级机器的系统结构。经典的关于"计算机体系结构(computerarchitecture)"的定义是1964年C.M.Amdahl在介绍IBM360系统时提出的,其具体描述为"计算机体系结构是程序员所看到的计算机的属性,即概念性结构与功能特性" 。
利用计算机语言进行并行性描述的时候主要有三种方案:
1.语言扩展方案:也就是利用各种语言的库函数来进行并行性功能的扩展。
2.编译制导法:也称为智能编译,它是隐式并行策略的体现,主要是由并行编译系统进行程序表示、控制流的分析、相关分析、优化分析和并行化划分,由相关分析得到方法库管理方案,由优化分析得到知识库管理方案,由并行化划分得到程序重构,从而形成并行程序。
3.新的语言结构法:这是显式并行策略的体现。也就是建立一种全新的并行语言的体系,而这种并行语言通过编译就能直接形成并行程序。
⑸ 我们来讲解以下如何才能编写并行程序,以及如何编译运行
我们下面以C 语言为例。
具体语法规则可参看《高性能计算并行编程技术-MPI 并行程序设计》一书。
mpicc -o outfilename cpi.c
其中outfilename 为编译后的输出文件,cpi.c 为源代码.
可将cpi.c 下载后上传的自己目录下编译.
例如:mpicc -o cpi cpi.c
如没有安装OpenPBS 则:
mpirun -np 4 cpi
否则:(一般安装了)
之后需写一作业提交脚本.例如:submit 内容如下:
#PBS -l nodes=nodes number
#PBS -N jobname#PBS -j oecd /home/xmin/Project
/usr/local/bin/mpiexec cpi
其中 #PBS -l nodes=nodes number 为指定几个节点计算.如: nodes=4
#PBS -N jobname 为用户命名的提交作业名称.如: #PBS -N xmin
#PBS -j oe 为结果和错误输出同文件.如无此项则分别在两个文件中.
cd /home/xmin/Project 编译后的输出文件所在路径(从根目录开始).
/usr/local/bin/mpiexec cpi 为mpiexec 所在路径.
下面是完整例子:
#PBS -l nodes=4
#PBS -N xmin#PBS -j oecd /home/xmin/Project
/usr/local/bin/mpiexec cpi
提交脚本如下:
qsub submit得到如下:3565.isc.math.nankai.e.cn
此为你的作业编号.
这样你就可得到类似xmin.o2666 的文件,打开即可看到结果.
你还可以查询作业提交情况.命令如下:qstat
⑹ 并行处理的并行算法的基本策略
在并行处理技术中所使用的算法主要遵循三种策略:
1.分而治之法:也就是把多个任务分解到多个处理器或多个计算机中,然后再按照一定的拓扑结构来进行求解。
2.重新排序法:分别采用静态或动态的指令词度方式。
3.显式/隐式并行性结合:显式指的是并行语言通过编译形成并行程序,隐式指的是串行语言通过编译形成并行程序,显式/隐式并行性结合的关键就在于并行编译,而并行编译涉及到语句、程序段、进程以及各级程序的并行性。
二、并行性描述定义
利用计算机语言进行并行性描述的时候主要有三种方案:
1.语言扩展方案:也就是利用各种语言的库函数来进行并行性功能的扩展。
2.编译制导法:也称为智能编译,它是隐式并行策略的体现,主要是由并行编译系统进行程序表示、控制流的分析、相关分析、优化分析和并行化划分,由相关分析得到方法库管理方案,由优化分析得到知识库管理方案,由并行化划分得到程序重构,从而形成并行程序。
3.新的语言结构法:这是显式并行策略的体现。也就是建立一种全新的并行语言的体系,而这种并行语言通过编译就能直接形成并行程序。
三、并行软件
并行软件可分成并行系统软件和并行应用软件两大类,并行系统软件主要指并行编译系统和并行操作系统,并行应用软件主要指各种软件工具和应用软件包。在软件中所牵涉到的程序的并行性主要是指程序的相关性和网络互连两方面。
1.程序的相关性:程序的相关性主要分为数据相关、控制相关和资源相关三类。
数据相关说明的是语句之间的有序关系,主要有流相关、反相关、输出相关、I/O相关和求知相关等,这种关系在程序运行前就可以通过分析程序确定下来。数据相关是一种偏序关系,程序中并不是每一对语句的成员都是相关联的。可以通过分析程序的数据相关,把程序中一些不存在相关性的指令并行地执行,以提高程序运行的速度。
控制相关指的是语句执行次序在运行前不能确定的情况。它一般是由转移指令引起的,只有在程序执行到一定的语句时才能判断出语句的相关性。控制相关常使正在开发的并行性中止,为了开发更多的并行性,必须用编译技术克服控制相关。
而资源相关则与系统进行的工作无关,而与并行事件利用整数部件、浮点部件、寄存器和存储区等共享资源时发生的冲突有关。软件的并行性主要是由程序的控制相关和数据相关性决定的。在并行性开发时往往把程序划分成许多的程序段——颗粒。颗粒的规模也称为粒度,它是衡量软件进程所含计算量的尺度,一般用细、中、粗来描述。划分的粒度越细,各子系统间的通信时延也越低,并行性就越高,但系统开销也越大。因此,我们在进行程序组合优化的时候应该选择适当的粒度,并且把通讯时延尽可能放在程序段中进行,还可以通过软硬件适配和编译优化的手段来提高程序的并行度。
2.网络互连:将计算机子系统互连在一起或构造多处理机或多计算机时可使用静态或动态拓扑结构的网络。静态网络由点一点直接相连而成,这种连接方式在程序执行过程中不会改变,常用来实现集中式系统的子系统之间或分布式系统的多个计算结点之间的固定连接。动态网络是用开关通道实现的,它可动态地改变结构,使之与用户程序中的通信要求匹配。动态网络包括总线、交叉开关和多级网络,常用于共享存储型多处理机中。在网络上的消息传递主要通过寻径来实现。常见的寻径方式有存储转发寻径和虫蚀寻径等。在存储转发网络中以长度固定的包作为信息流的基本单位,每个结点有一个包缓冲区,包从源结点经过一系列中间结点到达目的结点。存储转发网络的时延与源和目的之间的距离(段数)成正比。而在新型的计算机系统中采用虫蚀寻径,把包进一步分成一些固定长度的片,与结点相连的硬件寻径器中有片缓冲区。消息从源传送到目的结点要经过一系列寻径器。同一个包中所有的片以流水方式顺序传送,不同的包可交替地传送,但不同包的片不能交叉,以免被送到错误的目的地。虫蚀寻径的时延几乎与源和目的之间的距离无关。在寻径中产生的死锁问题可以由虚拟通道来解决。虚拟通道是两个结点间的逻辑链,它由源结点的片缓冲区、结点间的物理通道以及接收结点的片缓冲区组成。物理通道由所有的虚拟通道分时地共享。虚拟通道虽然可以避免死锁,但可能会使每个请求可用的有效通道频宽降低。因此,在确定虚拟通道数目时,需要对网络吞吐量和通信时延折衷考虑。
四、硬件技术在硬件技术方面主要从处理机、存储器和流水线三个方面来实现并行。
1.处理机:主要的处理机系列包括CISC、RISC、超标量、VL1W、超流水线、向量以及符号处理机。
传统的处理机属于复杂指令系统计算(CISC)结构。指令系统大,指令格式可变,通用寄存器个数较少,基本上使用合一的指令与数据高速缓存,时钟频率较低,CPI较高,大多数利用ROM 实现微码控制CPU,而当今的精简指令系统计算(RISC)处理机指令格式简单规范,面向寄存器堆,采用重叠寄存器窗口技术,具有多级Cache,多种流水线结构,强调编译优化技术,时钟频率快,CPI低,大多数用硬连线控制CPU。
CISC或RISC标量处理机都可以采用超标量或向量结构来改善性能。标量处理机在每个周期内只发射一条指令并要求周期只完成从流水线来的一条指令。而在超标量处理机中,使用了多指令流水线,每个周期要发射多条指令并产生多个结果。由于希望程序中有许多的指令级并行性,因此超标量处理机更要依靠优化编译器去开发并行性。
VL1W 结构是将水平微码和超标量处理这两种普遍采用的概念结合起来产生的。典型的超长指令字VL1W 机器指令字长度有数百位。在VLlW 处理机中,多个功能部件是并发工作的,所有的功能部件共享使用公用大型寄存器堆,由功能部件同时执行的各种操作是用VL1W 指令来同步的,每条指令可指定多个操作。VL1W 指令译码比超标量指令容易,但在开发不同数量的并行性时总是需要不同的指令系统。VL1W 主要是开发标量操作之间的并行性,它的成功与否很大程度取决于代码压缩的效率,其结构和任何传统的通用处理机完全不兼容。即使同一结构的不同实现也不大可能做到彼此二进制兼容。VL1W 的主要优点在于它的硬件结构和指令系统简单,在科学应用领域可以发挥良好作用,但在一般应用场合可能并不很好用。
向量处理机对数组执行向量指令,每条指令都包含一串重复的操作。它是专门设计用来完成向量运算的协处理机,通常用于多流水线超级计算机中。向量处理机可以利用循环级展开所得的并行性,它可以附属于任何标量处理机。专用的向量流水线可以在循环控制中消除某些软件开销,它的效果与优化编译器将顺序代码向量化的性能很有关系。从理论上说,向量机可以具有和超标量处理机同样的性能,因此可以说向量机的并行性与超标量机相同。
符号处理机是为AI应用而研制的,已用于定理证明、模式识别、专家系统、知识工程、文本检索、科学以及机器智能等许多应用领域。在这些应用中,数据和知识表达式、原语操作、算法特性、存储器、I/0和通信以及专用的结构特性与数值计算是不一样的,符号处理机也称为逻辑程序设计语言处理机、表处理语言处理机或符号变换器。符号处理并不和数值数据打交道,它处理的是逻辑程序、符号表、对象、剧本、黑板、产生式系统、语义网络、框架以及人工神经网络等问题。这些操作需要专门的指令系统,通常不使用浮点操作。
2.存储器:存储设备按容量和存取时间从低到高可分为寄存器、高速缓存、主存储器、磁盘设备和磁带机五个层次。较低层存储设备与较高层的相比,存取速度较快、容量较小,每字节成本较高、带宽较宽、传输单位较小。
存放在存储器层次结构中的信息满足三个重要特性:包含性、一致性和局部性。所谓包含性,指的是一个信息字的复制品可以在比它高的所有层中找到,而如果在高层中丢失了一个信息,则在比它低的所有层中此信息也将丢失。CPU 和高速缓存之间的信息传送是按字进行的,高速缓存和主存储器间用块作为数据传送的基本单位,主存和磁盘之间又是以页面为基本单位来传送信息的,而在磁盘和磁带机之间的数据传送则是按文件级处理的。所谓一致性要求的是同一个信息项与后继存储器层次上的副本是一致的。也就是说,如果在高速缓存中的一个字被修改过,那么在所有更高层上该字的副本也必须立即或最后加以修改。为了尽量减少存储器层次结构的有效存取时间,通常把频繁使用的信息放在较低层次。维护存储器层次结构一致性一般有两种策略,一种是写直达策略,也就是如果,则立即在所有高层存储器中进行同样的修改;另一种是写回策略,也就是在较低层中对信息进行修改后并不立即在高层存储器中进行相应的修改,而是等到该信息将被替换或将从低层中消失时才在所有高层存储器中进行同样的修改。甚至可以将写直达和写回策略的优点结合起来,形成写一次协议来维护存储器的一致性。
存储器的层次结构是在一种程序行为——访问的局部性基础上开发出来的。主要有时间局部性、空间局部性和顺序局部性。时间局部性指的是最近的访问项很可能在不久的将来再次被访问。它往往会引起对最近使用区域的集中访问。空间局部性表示一种趋势,指的是一个进程访问的各项其地址彼此很近。顺序局部性指的是在典型程序中,除非是转移指令,一般指令都是顺序执行的。
在多处理机系统中一般使用共享存储器。对共享存储器的组织一般采用低位交叉、高位交叉、高低位交叉三种方法。低位交叉又称并发存取,它是把相邻的地址放在相邻的存储器模块中,在访问时不容易产生冲突,并行性较好,但可靠性容错能力和扩展性均较差。高位交叉又称允许同时存取,它是把相邻地址分配到同一个存储器模块中,可靠性、容错能力和扩展性均较强,但访问时易产生冲突,带宽较窄,并行性较差。高低位交叉存取又称C—s存取,它是结合了高位交叉和低位交叉两种方法的优点,既解决了冲突问题,又能有效地提高容错能力和并行性,最适合于向量处理机结构。
3.流水线:流水线技术主要有指令流水线技术和运算流水线技术两种。
指令流水线技术主要目的是要提高计算机的运行效率和吞吐率。它主要通过设置预取指令缓冲区、设置多功能部件、进行内部数据定向、采取适当的指令调度策略来实现。指令调度的策略主要有静态和动态两种,静态词度是基于软件的,主要由编译器完成,动态词度是基于硬件的,主要是通过硬件技术进行。
运算流水线主要有单功能流水线和多功能流水线两种。其中多功能流水线又可分为静态流水线和动态流水线。静态流水线技术只用来实现确定的功能,而动态流水线可以在不同时间重新组合,实现不同的功能,它除流线连接外,还允许前馈和反馈连接,因此也称为非线性流水线。这些前馈和反馈连接使得进入流水线的相继事件的词度变得很不简单。由于这些连接,流水线不一定从最后一段输出。根据不同的数据流动模式,人们可以用同一条流水线求得不同功能的值。
并行计算机发展简述
40 年代开始的现代计算机发展历程可以分为两个明显的发展时代:串行计算时代、并行计算时代。每一个计算时代都从体系结构发展开始,接着是系统软件(特别是编译器与操作系统)、应用软件,最后随着问题求解环境的发展而达到顶峰。创建和使用并行计算机的主要原因是因为并行计算机是解决单处理器速度瓶颈的最好方法之一。
并行计算机是由一组处理单元组成的,这组处理单元通过相互之间的通信与协作,以更快的速度共同完成一项大规模的计算任务。因此,并行计算机的两个最主要的组成部分是计算节点和节点间的通信与协作机制。并行计算机体系结构的发展也主要体现在计算节点性能的提高以及节点间通信技术的改进两方面。
60 年代初期,由于晶体管以及磁芯存储器的出现,处理单元变得越来越小,存储器也更加小巧和廉价。这些技术发展的结果导致了并行计算机的出现,这一时期的并行计算机多是规模不大的共享存储多处理器系统,即所谓大型主机(Mainframe)。IBM360 是这一时期的典型代表。
到了60 年代末期,同一个处理器开始设置多个功能相同的功能单元,流水线技术也出现了。与单纯提高时钟频率相比,这些并行特性在处理器内部的应用大大提高了并行计算机系统的性能。伊利诺依大学和Burroughs 公司此时开始实施IlliacIV 计划,研制一台64 个CPU 的SIMD 主机系统,它涉及到硬件技术、体系结构、I/O 设备、操作系统、程序设计语言直至应用程序在内的众多研究课题。不过,当一台规模大大缩小了的16CPU 系统终于在1975 年面世时,整个计算机界已经发生了巨大变化。
首先是存储系统概念的革新,提出虚拟存储和缓存的思想。IBM360/85 系统与360/91是属于同一系列的两个机型,360/91 的主频高于360/85,所选用的内存速度也较快,并且采用了动态调度的指令流水线;但是,360/85 的整体性能却高于360/91,唯一的原因就是前者采用了缓存技术,而后者则没有。
其次是半导体存储器开始代替磁芯存储器。最初,半导体存储器只是在某些机器被用作缓存,而CDC7600 则率先全面采用这种体积更小、速度更快、可以直接寻址的半导体存储器,磁芯存储器从此退出了历史舞台。与此同时,集成电路也出现了,并迅速应用到了计算机中。元器件技术的这两大革命性突破,使得IlliacIV 的设计者们在底层硬件以及并行体系结构方面提出的种种改进都大为逊色。
1976 年CRAY-1 问世以后,向量计算机从此牢牢地控制着整个高性能计算机市场15 年。CRAY-1 对所使用的逻辑电路进行了精心的设计,采用了我们如今称为RISC 的精简指令集,还引入了向量寄存器,以完成向量运算。这一系列全新技术手段的使用,使CRAY-1 的主频达到了80MHz。
微处理器随着机器的字长从4 位、8 位、16 位一直增加到32 位,其性能也随之显着提高。正是因为看到了微处理器的这种潜力,卡内基- 梅隆大学开始在当时流行的DECPDP11 小型计算机的基础上研制成功一台由16 个PDP11/40 处理机通过交叉开关与16 个共享存储器模块相连接而成的共享存储多处理器系统C.mmp。
从80 年代开始,微处理器技术一直在高速前进。稍后又出现了非常适合于SMP 方式的总线协议,而伯克利加州大学则对总线协议进行了扩展,提出了Cache 一致性问题的处理方案。从此,C.mmp 开创出的共享存储多处理器之路越走越宽;现在,这种体系结构已经基本上统治了服务器和桌面工作站市场。
同一时期,基于消息传递机制的并行计算机也开始不断涌现。80 年代中期,加州理工成功地将64 个i8086/i8087 处理器通过超立方体互连结构连结起来。此后,便先后出现了Intel iPSC 系列、INMOS Transputer 系列,Intel Paragon 以及IBM SP 的前身Vulcan 等基于消息传递机制的并行计算机。
80 年代末到90 年代初,共享存储器方式的大规模并行计算机又获得了新的发展。IBM将大量早期RISC 微处理器通过蝶形互连网络连结起来。人们开始考虑如何才能在实现共享存储器缓存一致的同时,使系统具有一定的可扩展性(Scalability)。90 年代初期,斯坦福大学提出了DASH 计划,它通过维护一个保存有每一缓存块位置信息的目录结构来实现分布式共享存储器的缓存一致性。后来,IEEE 在此基础上提出了缓存一致性协议的标准。
90 年代以来,主要的几种体系结构开始走向融合。属于数据并行类型的CM-5 除大量采用商品化的微处理器以外,也允许用户层的程序传递一些简单的消息;CRAY T3D是一台NUMA 结构的共享存储型并行计算机,但是它也提供了全局同步机制、消息队列机制,并采取了一些减少消息传递延迟的技术。
随着商品化微处理器、网络设备的发展,以及MPI/PVM 等并行编程标准的发布,机群架构的并行计算机出现。IBM SP2 系列机群系统就是其中的典型代表。在这些系统中,各个节点采用的都是标准的商品化计算机,它们之间通过高速网络连接起来。
今天,越来越多的并行计算机系统采用商品化的微处理器加上商品化的互连网络构造,这种分布存储的并行计算机系统称为机群。国内几乎所有的高性能计算机厂商都生产这种具有极高性能价格比的高性能计算机,并行计算机就进入了一个新的时代,并行计算的应用达到了前所未有的广度和深度。
并行计算机随着微处理芯片的发展,已经进入了一个新时代。目前并行计算机的性能已经突破20PFLOPS,正在向百亿亿次发展。我国并行计算机的研制已经走在世界前列。2003年由联想公司生产的深腾6800 在2003 年11 月世界TOP500 排名中位列第14 名,2004 年曙光公司生产的曙光4000A 在2004 年6 月的世界TOP500 排名中位列第10 名,这是我国公开发布的高性能计算机在世界TOP500 中首次进入前十名,这标志着我国在并行计算机系统的研制和生产中已经赶上了国际先进水平,为提高我国的科学研究水平奠定了物质基础。2013年国际超级计算机大会最新发布的世界超级计算机500强排名中,国防科技大学研制的天河二号超级计算机系统,以峰值计算速度每秒5.49亿亿次、持续计算速度每秒3.39亿亿次双精度浮点运算的优异性能位居榜首。
从TOP500 的前10 名来看,美国仍然是超级计算机的最大拥有者。按照世界TOP500 的统计数据来分析,美国在计算能力上占有近全世界的一半,在TOP500 中的所有计算机中拥有的数量超过50%。
⑺ 目前处理并行编译技术有哪几种方法
三种形式编辑
时间并行
时间并行指时间重叠,在并行性概念中引入时间因素,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。?
时间并行性概念的实现方式就是采用流水处理部件。这是一种非常经济而实用的并行技术,能保证计算机系统具有较高的性能价格比。目前的高性能微型机几乎无一例外地使用了流水技术。
空间并行
空间并行指资源重复,在并行性概念中引入空间因素,以“数量取胜”为原则来大幅度提高计算机的处理速度。大规模和超大规模集成电路的迅速发展为空间并行技术带来了巨大生机,因而成为实现并行处理的一个主要途径。空间并行技术主要体现在多处理器系统和多计算机系统。但是在单处理器系统中也得到了广泛应用。?
时间并行+空间并行
指时间重叠和资源重复的综合应用,既采用时间并行性又采用空间并行性。显然,第三种并行技术带来的高速效益是最好的。
⑻ android系统编译能用分布式编译吗
项目越来越大,每次需要重新编译整个项目都是一件很浪费时间的事情。Research了一下,找到以下可以帮助提高速度的方法,总结一下。
1. 使用tmpfs来代替部分IO读写
2.ccache,可以将ccache的缓存文件设置在tmpfs上,但是这样的话,每次开机后,ccache的缓存文件会丢失
3.distcc,多机器编译
4.将屏幕输出打印到内存文件或者/dev/null中,避免终端设备(慢速设备)拖慢速度。
tmpfs
有人说在Windows下用了RAMDisk把一个项目编译时间从4.5小时减少到了5分钟,也许这个数字是有点夸张了,不过粗想想,把文件放到内存上做编译应该是比在磁盘上快多了吧,尤其如果编译器需要生成很多临时文件的话。
这个做法的实现成本最低,在Linux中,直接mount一个tmpfs就可以了。而且对所编译的工程没有任何要求,也不用改动编译环境。
mount -t tmpfs tmpfs ~/build -o size=1G
用2.6.32.2的Linux Kernel来测试一下编译速度:
用物理磁盘:40分16秒
用tmpfs:39分56秒
呃……没什么变化。看来编译慢很大程度上瓶颈并不在IO上面。但对于一个实际项目来说,编译过程中可能还会有打包等IO密集的操作,所以只要可能,用tmpfs是有益无害的。当然对于大项目来说,你需要有足够的内存才能负担得起这个tmpfs的开销。
make -j
既然IO不是瓶颈,那CPU就应该是一个影响编译速度的重要因素了。
用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。
还是用Kernel来测试:
用make: 40分16秒
用make -j4:23分16秒
用make -j8:22分59秒
由此看来,在多核CPU上,适当的进行并行编译还是可以明显提高编译速度的。但并行的任务不宜太多,一般是以CPU的核心数目的两倍为宜。
不过这个方案不是完全没有cost的,如果项目的Makefile不规范,没有正确的设置好依赖关系,并行编译的结果就是编译不能正常进行。如果依赖关系设置过于保守,则可能本身编译的可并行度就下降了,也不能取得最佳的效果。
ccache
ccache工作原理:
ccache也是一个编译器驱动器。第一趟编译时ccache缓存了GCC的“-E”输出、编译选项以及.o文件到$HOME/.ccache。第二次编译时尽量利用缓存,必要时更新缓存。所以即使"make clean; make"也能从中获得好处。ccache是经过仔细编写的,确保了与直接使用GCC获得完全相同的输出。
ccache用于把编译的中间结果进行缓存,以便在再次编译的时候可以节省时间。这对于玩Kernel来说实在是再好不过了,因为经常需要修改一些Kernel的代码,然后再重新编译,而这两次编译大部分东西可能都没有发生变化。对于平时开发项目来说,也是一样。为什么不是直接用make所支持的增量编译呢?还是因为现实中,因为Makefile的不规范,很可能这种“聪明”的方案根本不能正常工作,只有每次make clean再make才行。
安装完ccache后,可以在/usr/local/bin下建立gcc,g++,c++,cc的symbolic link,链到/usr/bin/ccache上。总之确认系统在调用gcc等命令时会调用到ccache就可以了(通常情况下/usr/local /bin会在PATH中排在/usr/bin前面)。
安装的另外一种方法:
vi ~/.bash_profile
把/usr/lib/ccache/bin路径加到PATH下
PATH=/usr/lib/ccache/bin:$PATH:$HOME/bin
这样每次启动g++的时候都会启动/usr/lib/ccache/bin/g++,而不会启动/usr/bin/g++
效果跟使用命令行ccache g++效果一样
这样每次用户登录时,使用g++编译器时会自动启动ccache
继续测试:
用ccache的第一次编译(make -j4):23分38秒
用ccache的第二次编译(make -j4):8分48秒
用ccache的第三次编译(修改若干配置,make -j4):23分48秒
看来修改配置(我改了CPU类型...)对ccache的影响是很大的,因为基本头文件发生变化后,就导致所有缓存数据都无效了,必须重头来做。但如果只是修改一些.c文件的代码,ccache的效果还是相当明显的。而且使用ccache对项目没有特别的依赖,布署成本很低,这在日常工作中很实用。
可以用ccache -s来查看cache的使用和命中情况:
cache directory /home/lifanxi/.ccachecache hit 7165cache miss 14283called for link 71not a C/C++ file 120no input file 3045files in cache 28566cache size 81.7 Mbytesmax cache size 976.6 Mbytes
可以看到,显然只有第二编次译时cache命中了,cache miss是第一次和第三次编译带来的。两次cache占用了81.7M的磁盘,还是完全可以接受的。
distcc
一台机器的能力有限,可以联合多台电脑一起来编译。这在公司的日常开发中也是可行的,因为可能每个开发人员都有自己的开发编译环境,它们的编译器版本一般是一致的,公司的网络也通常具有较好的性能。这时就是distcc大显身手的时候了。
使用distcc,并不像想象中那样要求每台电脑都具有完全一致的环境,它只要求源代码可以用make -j并行编译,并且参与分布式编译的电脑系统中具有相同的编译器。因为它的原理只是把预处理好的源文件分发到多台计算机上,预处理、编译后的目标文件的链接和其它除编译以外的工作仍然是在发起编译的主控电脑上完成,所以只要求发起编译的那台机器具备一套完整的编译环境就可以了。
distcc安装后,可以启动一下它的服务:
/usr/bin/distccd --daemon --allow 10.64.0.0/16
默认的3632端口允许来自同一个网络的distcc连接。
然后设置一下DISTCC_HOSTS环境变量,设置可以参与编译的机器列表。通常localhost也参与编译,但如果可以参与编译的机器很多,则可以把localhost从这个列表中去掉,这样本机就完全只是进行预处理、分发和链接了,编译都在别的机器上完成。因为机器很多时,localhost的处理负担很重,所以它就不再“兼职”编译了。
export DISTCC_HOSTS="localhost 10.64.25.1 10.64.25.2 10.64.25.3"
然后与ccache类似把g++,gcc等常用的命令链接到/usr/bin/distcc上就可以了。
在make的时候,也必须用-j参数,一般是参数可以用所有参用编译的计算机CPU内核总数的两倍做为并行的任务数。
同样测试一下:
一台双核计算机,make -j4:23分16秒
两台双核计算机,make -j4:16分40秒
两台双核计算机,make -j8:15分49秒
跟最开始用一台双核时的23分钟相比,还是快了不少的。如果有更多的计算机加入,也可以得到更好的效果。
在编译过程中可以用distccmon-text来查看编译任务的分配情况。distcc也可以与ccache同时使用,通过设置一个环境变量就可以做到,非常方便。
总结一下:
tmpfs: 解决IO瓶颈,充分利用本机内存资源
make -j: 充分利用本机计算资源
distcc: 利用多台计算机资源
ccache: 减少重复编译相同代码的时间
这些工具的好处都在于布署的成本相对较低,综合利用这些工具,就可以轻轻松松的节省相当可观的时间。上面介绍的都是这些工具最基本的用法,更多的用法可以参考它们各自的man page。
5.还有提速方法是把屏幕输出重定向到内存文件或/dev/null,因对终端设备(慢速设备)的阻塞写操作也会拖慢速度。推荐内存文件,这样发生错误时,能够查看。