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