并行计算术语
并行计算术语
名词
全称
注解
SI
Single Instruction
指单一指令,一个时钟执行单一指令。即便多个处理单元,也执行一样的指令。
SD
Single Data
指单一数据,一个时钟一条数据。即便多个处理单元,也使用相同的数据。
MI
Multiple Instruction
指多指令,不同处理单元处理不同的指令。
MD
Multiple Data
指多数据,不同的处理单元处理不同的数据。
SISD
Single Instruction, Single Data
串行计算,传统单核芯片属于该类
SIMD
Single Instruction, Multiple Data
单指令多数据流,典型的可以支持向量计算,对不同的数据使用相同的指令。一般现代CPU都会支持SIMD指令。
MISD
Multiple Instruction, Single Data
多指令单数据流,几乎不存在这样的架构
MIMD
Multiple Instruction, Multiple Data
多指令多数据流。多核处理器都是属于这个范畴
SIMT
Single Instruction Multiple Threads
单指令多线程,每个线程处理相同的指令和不同的数据。可以认为是SIMD的升级版,个人理解它们的区别在于:SIMD的数据必须是向量形式的数据,SIMT的数据则没有形式的要求。所以SIMT可以更加灵活。现代GPU一般都是SIMT。
SPMD
Simple Program, Multiple Data
单程序多数据,一种编程概念,用于数据并行的应用。一般MIMD或者SIMT,可以支持SPMD
RTTI
官网介绍:llvm
github源码:llvm-project
RTTI
阅读:How to set up LLVM-style RTTI for your class hierarchy
llvm有这些RTTI接口可以使用isa<>、dyn_cast<>、cast<>等等。
使用这些接口,父类和子列有这些要求:
父类:定义Kind枚举,且构造函数用Kind做入参
子列:构造函数指定kind,且定义classof接口
使用时如果入参可能是空指针,则需要调用dyn_cast_or_null<>转换。