并行计算术语
并行计算术语
名词
全称
注解
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<>转换。
概述
概述
BERT: Bidirectional Encoder Representation from Transformers
论文地址[2019]:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
对应github代码:github-bert
BERT分为 两个阶段:
Pre-training:利用无标记语料预训练模型
Fine-tuning: 使用预训练的模型,对已经标记的语料根据实际的任务进行训练
指令说明
FROM
指令说明
FROM
制定所创建镜像的基础镜像,如果本地不存在,则默认会去Docker Hub下载指定镜像。格式为FROM<image>,或FROM<image>:<tag>,或FROM<image>@<digest>。 注意:任何Dockerfile中的第一条指令必须为FROM指令,并且,如果在同一个Dockerfile中创建多个镜像,可以使用多个FROM指令(每个镜像一次)。比如:
FROM centos
FROM centos:latest
1. 源地址
清华源
以ubuntu 16.04为例
1. 源地址
清华源
# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security multiverse
定义
定义
基本可以按照C++理解
//成员必须有默认值,要么直接赋值,要么构建函数中赋初值;
//常量成员只能初始化一次,同上
struct Resolution {
var width = 0
var height = 0
}
class VideoMode {
var resolution = Resolution()
var interlaced = false
var frameRate = 0.0
var name: String?
}
let someResolution = Resolution()
let someVideoMode = VideoMode()
print("The width of someResolution is \(someResolution.width)")
print("The width of someVideoMode is \(someVideoMode.resolution.width)")