并行计算中期复习

并行计算导论中期复习

2024年5月19日

前言/碎碎念

说实话,并行计算课上到现在第13周我大概还是云里雾里的。上课听讲的人也没有多少,以至于我现在感觉自己在“为往圣继绝学”,然而我大概率不是合适人选。

在复习之前我先吐槽一下“大模型代码搜索数据集”的研究,我在这个暗无天日的研究中体悟到了大模型和数据集的玄妙。如果让openai必须二选一,开源他的模型或者开源他的数据集,openai肯定选开源模型而不是数据集。我感觉相比模型,数据集更像资产,你开源个模型,但是不讲这个模型的底层原理和设计,那很多技术还是在自己手里,但是数据集就不一样,直接就是人类脑力劳动堆出来的东西,而且其技术含量远没有模型那么高,开源出去就真的相当于送给别人了。

我们这个数据集要用来发表论文,肯定得开源。我想我们高质量的数据集将给代码搜索领域带来福音,就算我们论文没有成功登堂入室,huggingface社区的人也会非常感激我们。

而且我也意识到了为什么代码搜索会比代码生成冷这么多。我们数据集构建的其中一个步骤是给query生成对应的code片段。如果用GPT4/claude3生成的code已经完全匹配了几乎所有query,这就说明没必要去代码仓库里面搜索相关的代码片段。反而是工程级大项目的代码有必要去搜索,因为大模型现在显然生成不了一整个大项目的代码。当然,目前大模型生成较复杂代码还是不准确的,特别是对于精确的算法很容易犯错……我特别研究了对代码搜索有价值的应用场景(代码生成解决不了的应用场景),得出的结论是:根据自然语言的query去搜索代码片段可能会局限于某些领域或场景(1.复杂逻辑和大规模项目的、2.偏数学和算法的、3.特定领域和前沿技术的、4.对性能和安全要求高的、5.系统级编程和并发编程的、6.特定版本库与API集成和使用的)。

章节

老师的章节安排总体是按照《Introduction to Parallel Computing》这本书来的。

第一章讲了并行计算介绍,分为三个部分:

  1. 推动并行化的因素
  2. 并行计算的应用范围
  3. 课程组织和内容(这个不在书上,不过书上有“本书的组织及内容)

第二章讲了并行计算平台,顺序基本还是按照书上的来,不过章节的层次不是完全按照书上的:

  1. 隐式并行:微处理器架构的发展趋势
  2. 内存系统性能的局限
  3. 并行计算平台剖析
  4. 并行平台的通信模型
  5. 并行平台的物理组织
  6. 并行机器的通信开销
  7. 消息传递开销模型和路由机制
  8. 图映射技术
  9. 案例学习

第三章讲了并行算法设计原则:

  1. 并行算法介绍
    1. 任务与分解
    2. 进程与映射
    3. 进程vs处理器
  2. 分解技术
    1. 递归分解
    2. 探索性/启发式 分解
    3. 混合分解
  3. 任务与交互的特性
    1. 任务生成、粒度和上下文
    2. 任务间交互的特性
  4. 负载均衡的映射技术
    1. 静态映射和动态映射
  5. 最小化交互开销的方法
    1. 最大化数据本地性
    2. 最小化争用与热点
    3. 使计算与交互重叠
    4. 复制vs.通信
    5. 组通信 vs. 点对点通信
  6. 并行算法设计模型
    1. 数据并行、工作池、任务图、主-从、流水线和混合模型

知识点

上面的章节描述来看一下每个部分。

并行计算介绍

推动并行化的因素

计算能力不断提高→并行计算如何有效利用晶体管?

处理器速度与内存访问速度之间的差距→并行计算如何提供更好内存性能?

计算资源在分布式网络中→如何实现基于通信的并行化计算?

并行计算应用范围:工程及设计、科学计算、商业应用、计算机系统

并行计算平台

隐式并行:隐式并行主要是在硬件(处理器)层面的讲了流水线上的超标量执行和超长指令字两种技术。这些技术是硬件自动实现的,我们在软件层面并没有直接的感知,所以称为“隐式”是合适的。


并行计算中期复习
http://thinkerhui.site/2024/05/19/课程学习/并行计算中期复习/
作者
thinkerhui
发布于
2024年5月19日
许可协议