Device类定义在tensorflow/core/common_runtime/device.h中,主要定义了设备设备属性、设备名称、设备管理器等成员变量,以及相关的成员函数。Device类继承DeviceBase类,DeviceBase类定义在tensorflow/core/framework/device_base.h中,DeviceBase是一个抽象类,主要定义系统环境对象、CPU线程池、GPU设备信息等底层信息。Device类在实际应用中还派生多种具体细化的子类,例如LocalDevice,RemoteDevice等。
DeviceBase类:
class DeviceBase {
public:
explicit DeviceBase(Env* env) : env_(env) {}//初始化Env类型指针env
virtual ~DeviceBase();//虚析构函数
Env* env() const { return env_; }//获取env_接口
//如果在OPs的计算中要求记录引用到临时变量,直到op完成,则设置为true
virtual bool RequiresRecordingAccessedTensors() const { return false; }
//cpu线程池结构体,内部定义的辅助变量,目测是处理非计算任务的线程池
struct CpuWorkerThreads {
int num_threads = 0;
thread::ThreadPool* workers = nullptr;
};
//设置CPU下tensorflow线程池
void set_tensorflow_cpu_worker_threads(CpuWorkerThreads* t) {
cpu_worker_threads_ = t;
}
//虚函数,获取cpu线程池