- 关键术语描述
kernel
在神经网络模型中,每个node都定义了自己需要完成的操作,比如要做卷积、矩阵相乘等。
可以将kernel看做是一段能够跑在具体硬件设备上的算法程序,所以即使同样的2D卷积算法,我们有基于gpu的Convolution 2D kernel实例、基于cpu的Convolution 2D kernel实例。
device
负责运行kernel的具体硬件设备抽象。每个device实例,对应系统中一个具体的处理器硬件,比如gpu:0 device, gpu:1 device, cpu:0 device。一般来说,每个device实例同时包括处理器资源、内存资源。device的抽象支持硬件设备提供的并行处理能力。
- device是什么
为方便描述,下面我们把在tensorflow里面运行的神经网络模型都统一称为graph。
我们知道,tensorflow主要针对的是跨硬件平台、分布式、并发运行的场景,参与运算的每个硬件资源,我们都抽象为device实例,便于管理。
device的主要职责:
管理处理器资源,为支持device内部的并行计算,进一步将其抽象为thread pool或streams:
cpu:使用thread pool来管理,thread之间可支持不同程度的并行计算能力
gpu: 针对nvidia gpu, 使用cuda streams来管理,根据不同的gpu型号,可支持不同数量的stream做并行计算
管理内存资源:为kernel的运行,分配和释放内存,进一步抽象为Allocator及其各种子类的实例来管理。
主机内存: