tensorflow原始碼閱讀device

2021-09-12 18:37:22 字數 1771 閱讀 2764

//tensorflow/core/commeon_runtime/device_factory.h

#define register_local_device_factory(device_type, device_factory, ...) \

internal_register_local_device_factory(device_type, device_factory, \

__counter__, ##__va_args__)

#define internal_register_local_device_factory(device_type, device_factory, \

ctr, ...) \

static ::tensorflow::dfactory::registrar\

internal_register_local_device_factory_name(ctr)(device_type, \

##__va_args__)

// __counter__ must go through another macro to be properly expanded

#define internal_register_local_device_factory_name(ctr) ___##ctr##__object_

gpu裝置工廠註冊

register_local_device_factory

("cpu"

, threadpooldevicefactory,60)

;

巨集註冊有三個引數:device_type裝置型別,device_factory裝置工廠類,優先順序,預設為50

register_local_device_factory巨集會首先呼叫registrar方法:

//tensorflow/core/commeon_runtime/device_factory.h

template

<

class

factory

>

class

registrar

};

然後呼叫devicefactory的register方法

//tensorflow/core/commeon_runtime/device_factory.cc

// static

void devicefactory::

register

(const string& device_type, devicefactory* factory,

int priority);}

else;}

else

if(iter-

>second.priority == priority)

}}

struct factoryitem 

;std::unordered_map

&device_factories()

factoryitem是乙個結構體,包含乙個指向devicefactory的指標以及她的優先順序。

factories是乙個map,。

從factories查詢有沒有device_type的裝置已經註冊,如果沒有,則把它放到factories裡面

如果已經註冊,則檢視它的優先順序,如果優先順序比傳入的優先順序小,則進行更改,如果相等,則提示錯誤。

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...

原始碼閱讀 Glide原始碼閱讀之with方法(一)

前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...

原始碼閱讀 Glide原始碼閱讀之load方法(二)

原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 首先,load方法有以下幾個過載方法 public requestbuilder load nullable bitmap bitmap public requestbuilder load nu...