填空题 常用的并行算法设计的基本技术有_______ _________,___________________,_______________________,____________ ______,_____________________,_______________________等。 常见的并行计算模型有____________ ______,_____________________,_______________________,____________ ______等。 PCAM设计过程分为_________,__________,_________ 和_________四步。 常见的并行程序设计模型包括__ ___________,__ _____________,______________________,______________________等。 问答题 请简述从上个世纪80年代至今,主流并行计算机体系结构的变化趋势。 基于蝶式计算原理的FFT在二维mesh连接和蝶式网络连接的处理器上均可并行实现。 (1)请问哪种实现效率较好?并给出原因。 (2)蝶式网络连接的处理器在实际的并行计算机系统并不常见,这是否会影响FFT在蝶式网络连接上的并行实现在实际中的使用?为什么? 基本的开关技术有哪两种?各具有什么特点? 阅读题 1.阅读以下新闻报道,回答问题。 2004 年 6月29日 国家科技部今日在人民大会堂宣布:“863计划重点项目——曙光4000A通过鉴定验收,曙光4000A实现了对每秒10万亿次运算速度的技术和应用的双跨越,成为国内计算能力最强的商品化超级计算机”。在今年6月22日刚刚公布的全球高性能计算机TOP500排行榜中,曙光4000A以每秒11万亿次的峰值速度和80610亿次Linpack计算值位列全球第十,这是中国超级计算机得到国际同行认可的最好成绩。随着曙光4000A的推出,中国已经成为继美、日之后第三个跨越了10万亿次计算机研发、应用的国家。 曙光4000A拥有自主研制的机群系统软件包括机群管理系统、机群部署系统、机群作业管理系统、并行文件系统、机群监控系统、机群并行通信系统、机群高可用系统、机群负载均衡系统等。 (1)请问文中提到的“TOP500排行榜”是按照什么方法对高性能计算机进行排序的?这种方法具有什么样的优点和不足? (2)结合高性能计算的应用,谈谈为什么中国需要研制高性能计算机。 (3)文中所说的机群系统指的是什么?它具有什么样的特点? 2.以下是一段用MPI实现的并行程序代码,用来并行求一组数的和。 #include <mpi.h> #include <stdio.h> #include <math.h> #define SIZE 10 void main(int argc, char *argv) { int myid, numprocs; int data[SIZE], i, x, low, high, myresult, result; char fn[255]; char *fp; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); if (myid == 0) { /* Open input file and initialize data */ strcpy(fn,getenv("HOME")); strcat(fn,"/data"); if ((fp = fopen(fn,"r")) == NULL) { printf("Can’t open the input file: %s\n\n", fn); exit(1); } for(i = 0; i < SIZE; i++) fscanf(fp,"%d", &data[i]); } /* broadcast data */ MPI_Bcast(data, SIZE, MPI_INT, 0, MPI_COMM_WORLD); /* Add my portion Of data */ x = SIZE/numprocs; low = myid * x; high = low + x; if(myid == numprocs - 1) high = SIZE; myresult = 0; for(i = low; i < high; i++) myresult += data[i]; /* Compute global sum */ MPI_Reduce(&myresult, &result, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if (myid == 0) printf("The sum is %d.\n", result); MPI_Finalize(); } 请回答以下问题: (1) 请问上述并行程序的并行执行的进程数是何时指定的,如何确定的?在程序中,使用什么函数得到了进程数的信息。 (2) 试分析上述并行程序对应的并行算法的时间复杂度。 (3) 说明上述并行程序是如何对计算任务进行划分的。请问这种划分方式是循环划分还是块划分?试写出另一种划分方式的代码。 (4) 试对上述并行程序的加速比进行分析,并以此为例简要说明Amdahl定律和Gustafson定律的不同。 (5) 结合上述并行程序的输入输出部分,说明SPMD程序的特点。 (6) 请问上述程序中使用了MPI哪些群集通信的函数?它们实现了什么功能? 综合题 1.假定和已加载到如下所示的处理器阵列上,试用图表示Cannon矩阵乘法或者Fox矩阵乘法的具体过程(任选一种即可)。  2.以下是上三角方程组回代解法的串行算法的形式化描述。 Begin (1)for i=n downto 1 do (1.1)xi=bi/aii (1.2)for j=1 to i-1 do bj=bj-ajixi aji=0 endfor endfor End ①请指出串行算法哪些部分可以并行化。②写出并行算法的形式化描述(需要注明计算模型类型),分析你的算法的时间复杂度。