SRQ – 24 新知总结
本文最后更新于42 天前,其中的信息可能已经过时,如有错误请发送邮件到zhangweihao22@outlook.com

优化背景

总的来说和计算机的设计相关

[!note] 计算机设计的简单了解
计算机和计算相关的硬件和系统主要有:

  1. 中央处理器(CPU)
  2. 内存
  3. 硬件并行设计

Ps:之前在新生研讨课的时候听老师提到GPU处理简单计算是比cpu要快的,那么是否可以有指令让程序在GPU上面进行计算(亦或者说,程序本身就会在GPU上面运行?)这一点还没搞懂

CPU:【用于计算和控制的计算机大脑】
对于做题而言,CPU里面最重要的设计就是缓存(cahe)
缓存就相当于是一个临时储存,起数据临时存放和调用的作用,它的特点是(空间)小型(读取速度)快速
缓存能够减少因数据多次从主存中读取而大大增加的时间,对于需要重复使用的数据来说,缓存是它们最好的归宿
gihub上的优化方法中的拆开循环,一次计算1*4(或者4*4)可能的目的就是去贴近缓存空间大小,减少缓存未命中【这个又和缓存的设计有关系】

   >Ps:之前偶然碰见并使用的交换循环的方法就是去靠近缓存的设计【当时直接倍率上到了6,开心死,可惜没有进一步优化的空间(也可能是我太菜,看不出来,哈哈)】

内存系统:【存放数据的仓库】
对于做题而言,只需要知道,数据从主存中读取的速度相较于从缓存中读取慢上很多,因此数据尽量从缓存中读取
但是我们又不是计算机,怎么能控制数据从哪个地方读取呢?【思考ing】
反正我现在不知道
我们知道【其实是我推测的,这个具体的过程我还没去了解】,数据是先从主存中读取,然后储存在缓存中。CPU读取数据先从缓存中读取,若未读取到,则会再次从主存中搜索获取【此过程成为“缓存命中】

硬件并行设计
主要分为多线程和多进程
分别对应mpi与omp多进程与多线程
omp和mpi适用的计算机内存模型不一样【详见《并行程序设计导论》】
mpi相当于是把任务均分【理想是均分】给多个内存空间,然后同时计算,最后等所有计算完成后,将计算结果汇总计算,最终得到最后的结果
对于单台计算机而言,我认为mpi的作用是精细分配任务,最大限度释放计算机性能
【不过原理是明白了,但是还是操作不起来,哈哈哈】
omp相当于是…..
【哦~,对omp和mpi的理解还不太行】

SIMD & MIM
单指令多数据和多指令多数据并行计算模式【目前看到这个地方,后面由于时间原因就没有深入了解了】
gihub上最终的优化方案总重要的一步就是使用了SSE(即是SIMD命名)
【当然,前面的循环展开,寄存器的使用等等都是有用的】

附:GPT较为全面的总结

循环展开、一次优化1*4或者4*4、寄存器【临时储存变量】都和上述原因相关

所以,要对并行计算领域进行探索,对计算机系统也必须要有较好的理解!

2024/10/17 创建
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
Copyright 2025-2025 @ Ziyang
Running Time days H M S