【高性能计算导论】【1】课程简介


Brief

先修要求

C/C++编程基础

Brief Inttroduction of Programing Facilities

两个环境

1、自己的电脑
2、系里的高性能计算集群

使用linux系统

在这里插入图片描述

Linux Basic

在这里插入图片描述

显示Ubuntu版本的命令

cat /etc/issue

了解CPU的性能

lscpu
显示出来是虚拟机可以用的核的数量,说明只能有图示这么多线程。

串行编程无法充分利用多核CPU

芯片的物理特性

更小的晶体管会制造更快的处理器,跟更快的处理器会带来更大的功耗,更大的功耗会带来更多热量,更多的热量会造成不稳定的处理器

在这里插入图片描述

core指的就是CPU,多核就是多CPU

使用的计算集群

在这里插入图片描述

  • 每位同学面对的机器就是client
  • 高性能计算集群就是方框里面的机器,之间通过高速网络互联
  • 要使用时,先由本地计算机连接至Jump Server,再通过它连接至其他的worker机器
  • 也有可能你将自己的计算任务提交至Jump Server,由他来分配计算任务

远程连接方法

在这里插入图片描述

摩尔定律

在这里插入图片描述
超级计算机的浮点计算能力

在这里插入图片描述
横轴是超级计算机的性能
我们国家最快的超级计算机是神威太湖之光
在这里插入图片描述

一个芯片中有260个核心,超过一千万个核心

晶体管相关的物理知识

尺寸变小,可以提高时钟频率,但是从2012年就不能提高了,会带来功耗的提高
在这里插入图片描述

如果继续提高时钟频率的话,会导致动态功耗迅速增大。如果按照正常的速度增长,芯片功耗会在2008年增涨到核反应的级别,在2001年会达到火箭发射口的功率

因此只能充分应用硬件

对串行程序进行重写

在这里插入图片描述

如何进行并行编程

在并行计算中核之间协调工作的类型

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
分享内存式:

数据并行

每个核做的是一样的事
在这里插入图片描述

任务并行

每个核做的任务不一样
在这里插入图片描述

需要注意的地方

在这里插入图片描述

显式地进行编程

在这里插入图片描述

并发计算、并行计算、分布计算

在这里插入图片描述

  • 串行程序不能充分利用硬件
  • 也不能自动将串行程序转化为并行程序,因此学习高性能计算就非常必要。
  • 如何更好地协调多个计算核心
  • 单核计算机上不能并行计算

第一次作业

题目

高性能计算导论 第一次作业

题1. 在自己的个人电脑上准备好Linux操作系统,并将课程教材的附带程序拷到该系统中,参考下图进行截屏以证明你完成了这项工作。

题2. Exercise 1.1

Devise formulas for the functions that calculate my_first_i and my_last_i in the global sum example. Remember that each core should be assigned roughly the same number of elements of computations in the loop. Hint: First consider the case when n is evenly divisible by p.

为全局总和例子中的my_first_i和my_last_i推导一个公式。需要注意的是,在循环中,需要给各个核分配数目大致相同的计算元素。提示:先考虑n能被p整除的情况。

题3. Exercise 1.6

Derive formulas for the number of receives and additions that core 0 carries out using
a. The original pseudo-code for a global sum, and
b. The tree-structured global sum.
Make a table showing the numbers of receives and additions carried out by core 0 when the two sums are used with 2,4,8,…,1024 cores.
在下列情况中,推导公式求出0号核执行接收与加法操作的次数
a. 最初的全局总和的伪代码
b. 树形结构求全局总和
制作一张表,比较两种算法在总核数2、4、8、…、1024时,0号核接受与加法操作的次数。

题4. Exercise 1.7

The first part of the global sum example—when each core adds its assigned computed values—is usually considered to be an example of data-parallelism, while the second part of the first global sum—when the cores send their partial sums to the master core, which adds them—could be considered to be an example of task-parallelism. What about the second part of the second global sum—when the cores use a tree structure to add their partial sums? Is this an example of data- or task-parallelism? Why?

全局总和例子中的第一部分(每个核对分配给他的计算值求和),通常认为是数据并行的例子,而第一个求全局总和算法的第二部分(各个核将他们计算出的部分和发送给master核,master核将这些部分和再累加求和),认为是任务并行。第二个全局和算法的第二部分(各个核使用树形结构累加他们的部分和),是数据并行的例子还是任务并行的例子?或者都不是?为什么?

题5. Exercise 1.9

Write an essay describing a research problem in your major that would benefit from the use of parallel computing. Provide a rough outline of how parallelism would be used. Would you use task- or data-parallelism? if you don’t have personal experience, just present an example known from other course, book, internet or even private communication. For this example, briefly describe how the computation can be parallelized, and is there data parallelism or task parallelism?

写一篇短文,描述你研究方向中由于使用并行计算而获利的课题。大致描述是如何使用并行计算的,你将用到数据并行还是任务并行。如果你没有这方面的经历,亦可列举一个在其他课程、书本、网络、交谈中了解到的课题。并介绍该课题是如何使用并行计算的,该计算是数据并行还是任务并行。

不超过500字或400 words。

作答

题1

题2:
首先定义core_id∈[0, p),
num = n/p
rem = n%p

my_first_i(core_id) = num * core_id
my_last_i(core_id) = num * (core_id + 1) + rem
题3:
a.
总核数 最初的全局总和0号核接受与加法操作的次数 树形结构求全局总和0号核接受与加法操作的次数
2 1 1
4 3 2
8 7 3
16 15 4
32 31 5
64 63 6
128 127 7
256 255 8
512 511 9
1024 1023 10

题4:

我认为是数据并行和任务并行都存在,因为每两个核中有一个会接收相邻的核的数据并相加,也就是说进行了数据分配,这是数据并行的特征。但是执行累加和操作的核执行的任务都是一样的,这是任务并行的特征。

题5:
一种基于gpu多核并行加速的车辆检测方法
本发明公开了一种基于GPU多核并行加速的车辆检测方法,其步骤包括计算机视觉、特征提取、目标相似度检测以及Map‑Reduce并行计算框架。本发明有益效果在于,通过Map‑Reduce的GPU并行计算提高了HOG特征提取算法效率,显著缩短了车辆检测所需时间,可用于自动化的智能交通和城市管理领域。
随着智能交通系统在现代社会中重要性的不断提升,车辆监控技术得到了越来越 广泛的应用。现有智能交通系统的问题主要是大量的监控信息难W得到有效的及时的处 理。而如何通过计算机智能地实时地分析和提取有效的信息,W提升车辆监控与跟踪准确 率,已经成为计算机视觉领域的一个热点研究问题。
MapReduce是由谷歌公司提出的并行算法,旨在帮助程序员轻松的编写分布式程 序。程序员只需编写两个函数:Map函数和Reduce函数,其他有关并行的功能,包括:任务调 度、容错、实时同步等都由运行时负责。Map函数负责处理输入数据并产生中间键key/ values,Reduce函数根据k巧值将中间键进行合并,并产生最终的结果。目前MapReduce的实 现包括基于机群的化doop系统、基于CPU的化oenix系统和基于GPU的Mars系统等。
我在仔细阅读这个课题的研究内容和详细方法之后,认为这个课题使用了高性能并行计算的方法来解决实际问题,该计算是采用了任务并行的方式。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值