希姆计算基本概念
版本历史
版本 | 作者 | 日期 | 说明 |
---|---|---|---|
V1.0.0 | 希姆计算 | 2022-04-29 | 初始版本。 |
硬件基本概念
概念 | 英文名称 | 说明 |
---|---|---|
NPU | Neural-network Processing Unit | 神经网络处理器,专门面向大规模神经元和突触处理的处理器。采用数据驱动并行计算的架构,非常适合并行计算的场景。 |
NerualScale | NerualScale | 希姆计算自研的NPU神经网络计算加速架构,支持基于RISC-V指令集的扩展指令,具有良好的可编程性。 |
STCP920 | Stream Computing P920 | 希姆计算推出的云端AI推理计算加速板卡,内含可编程NPU,基于NerualScale架构、软硬件协同设计。 |
NPC | Neural-network Processing Core | 希姆计算自研NPU中的神经网络处理核心。 每个NPU中包含多个NPC Cluster,例如STCP920中包含4个NPC Cluster,每个NPC Cluster包括8个NPC,因此STCP920中共包含32个NPC。 每个NPC Cluster通过NPC Cluster ID唯一标识,对N个NPC Cluster,异构编程环境中使用0至N-1依次标记,同一个NPU中的所有NPC Cluster的ID是连续的。 |
全局内存(DDR) | Double Data Rate Synchronous Dynamic Random-Access Memory | 每个NPC Cluster私有的内存,由NPC Cluster内的NPC共享,访问速度最慢。STCP920中,每个NPC Cluster的全局内存大小为4GiB。 |
共享内存(LLB) | Last Level Buffer | 每个NPC Cluster私有的内存,由NPC Cluster内的NPC共享,访问速度较快。STCP920中,每个NPC Cluster的共享内存大小为8MiB。 |
本地内存(L1) | L1 | 每个NPC私有的内存,访问速度最快。STCP920中,每个NPC的本地内存大小为1.25MiB。 |
sysDMA | System Direct Memory Access | 数据传输通道,用于在NPC Cluster内的共享内存和全局内存间传输数据。 |
IM | Intermediate Buffer | 中转缓存, 每个NPC私有的高速内存,STCP920中的大小为256KB。 |
PMU | Performance Monitor Unit | 性能数据采集单元。 |
PMC | Performance Monictor Counters | 性能数据采集单元统计的计数器。 |
MCU | Microcontroller Unit | 一款兼容RISC-V指令集架构的微控制器。 |
MME | Matrix MAC Engine | 矩阵MAC引擎。 |
VME | Vector MAC Engine | 向量MAC引擎。 |
MTE | Memory Transfer Engine | 内存传输引擎。 |
HPE基本概念
概念 | 英文名称 | 说明 |
---|---|---|
SHC | Stream Computing Heterogeneous C++ | 异构编程语言,完整兼容C++17标准,并针对异构程序扩展了语法和函数库,例如支持调用核函数的<<< >>> 符号。 |
核函数 | Kernel Function | 一个核函数对应一个计算任务,由主机端(CPU)部署到设备端(NPU),并在设备端的多个NPC上并行执行。 |
stcc | Stream Computing Heterogeneous C++ Compiler | 异构程序编译器,统一编译异构程序中的主机端程序和设备端程序,生成可执行文件。 |
stc-dkms | Stream Computing Dynamic Kernel Module Support | 异构驱动模块,对应有异构驱动stc.ko文件。主机端与设备端使用PCIe总线连接,异构驱动将主机端的操作请求通过PCIe总线传递到设备端。 stc-dkms方便异构驱动适应不同的Linux内核版本,不用逐版本手动编译也能保证异构驱动始终可用,主机端和设备端的交互不会因Linux内核版本变化而产生异常。 |
stc-smi | Stream Computing System Management Interface | 设备管理工具,管理和监控NPU设备的状态。 |
stc-prof | Stream Computing Profiler | 性能调优工具,采集异构程序的性能数据,分析异构程序的性能。 说明:stc-prof是命令行工具,希姆计算还提供了接口形式的性能调优工具STCPTI( Stream Computing Profiling Tool Interface )。 |
stc-gdb | Stream Computing Debugger | 异构程序调试工具,监视程序运行状态,获取和修改程序的中间运行结果。stc-gdb完全兼容GDB原生命令,并添加了希姆计算的扩展命令。 |
hpert | Heterogeneous Programming Engine Runtime | 主机端运行时库,为主机端程序提供控制设备端内存访问、核函数执行等操作的接口。 |
npurt | NPU Runtime | 设备端运行时库,为设备端程序提供信息打印、内存拷贝等操作的接口。 |
TensorTurbo基本概念
概念 | 英文名称 | 说明 |
---|---|---|
模型 | Model | 泛指神经网络模型,例如ResNet50、BERT。 |
算子 | Operator | 泛指神经网络模型中的算子,是一个数学逻辑单元,算子组成一个有向无环图(Directed acyclic graph,DAG),构成一个模型。 |
元算子 | Primitive Operator | TensorTurbo中特有的概念,指类似加减乘除等基本的数学计算操作算子。 |
图算子 | Graph Operator | TensorTurbo中特有的概念,是一个由元算子组成的子图,存在于图层抽象。例如softmax可以是一个图算子,定义在图层抽象中,在lower到算子层时,由元算子自动拼接编译得到。 |