003-【CMU15-418】【并行计算架构和编程】【中英字幕】【Paralle

1. 本课程将讨论并行软件的编写。
2. 抽象和实现之间的区别很重要,不要混淆。
3. ISPC是一种并行语言,可以用于并行计算。
4. ISPC使用SPMD(Single Program Multiple Data)抽象来实现并行。
5. ISPC还提供了两种数据访问方式:interleaved和blocked。
6. 在ISPC中,阻塞和交错是两种不同的向量化编程方式,每种方式都有不同的性能表现。
7. ISPC中的for each是一种原始操作,它允许系统控制循环迭代的顺序,从而实现并行计算。
8. ISPC中的共享地址空间抽象允许线程通过读写共享内存来进行通信和合作。
9. 共享地址空间的实现可以通过物理共享内存或非统一内存访问(NUMA)来实现。
10. 共享地址空间的优点是通信简单,但需要额外的同步机制来确保数据的一致性和互斥访问。
11. 内存共享:如果计算机有两个插槽,那么它是一个非统一内存访问机器,因为内存是在这两个插槽之间共享的。
12. 共享地址空间机器:程序员可以共享相同的地址空间,但硬件实现上有一些挑战,如缓存一致性问题。
13. 消息传递:每个线程只有私有数据,没有共享地址空间,通过发送消息进行通信。
14. 数据并行:可以对数据进行并行操作,避免数据竞争和非确定性问题。
15. 流模型:通过流来处理数据并应用纯函数,避免数据竞争和非确定性问题。
16. 数据并行模型适用于需要对大量数据应用相同计算的情况,如GPU。
17. 共享地址空间模型通过在共享地址空间中加载和存储内存来进行通信。
18. 消息传递模型通过向其他线程发送消息来进行通信,因为它只有私有内存地址空间。
19. 数据并行模型将某个函数或计算映射到一组数据上。
20. 在实践中,要充分利用高端机器,通常需要同时使用共享地址空间、消息传递和数据并行等多种编程模型。