中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

C++注冊(cè)op-創(chuàng)新互聯(lián)

文章目錄
      • paddle如何注冊(cè)op
      • 注冊(cè)op
      • 使用op
      • 說明
      • 寫一個(gè)簡(jiǎn)單demo
        • run.cc
        • single.h single.cc
        • use_op.h use_op.cc
      • pool.cc

創(chuàng)新互聯(lián)公司是一家專業(yè)從事成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)的品牌網(wǎng)絡(luò)公司。如今是成都地區(qū)具影響力的網(wǎng)站設(shè)計(jì)公司,作為專業(yè)的成都網(wǎng)站建設(shè)公司,創(chuàng)新互聯(lián)公司依托強(qiáng)大的技術(shù)實(shí)力、以及多年的網(wǎng)站運(yùn)營經(jīng)驗(yàn),為您提供專業(yè)的成都網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)及網(wǎng)站設(shè)計(jì)開發(fā)服務(wù)!paddle如何注冊(cè)op
//a.h
#define UNUSED __attribute__((unused))

class Factory {public:
  // 靜態(tài)成員函數(shù)
  static Factory& Instance() {static Factory g_meta_fn_map; //單例模式
    return g_meta_fn_map;
  }

  void Insert(string op_name, Fn fn) {fn_map_.insert({std::move(op_name), std::move(fn)});
  }

  const Fn& Get(const string& op_name) const {auto it = fn_map_.find(op_name);
    return it->second;
  }
 private:
  Factory() = default;
  mapfn_map_;
  DISABLE_COPY_AND_ASSIGN(Factory);
};

struct OpRegistrar 
{OpRegistrar(const char* op_name, Fn function) 
  {Factory::Instance().Insert(op_name, std::move(function));
  }
  void Touch() {}
};

#define REGISTER_KERNEL(op_type, function)                                 \
  static OpRegistrar registrar_kernel_##op_type(#op_type, function);       \
  int TouchOpRegistrar_##op_type()                                         \
  {                                \
    registrar_kernel_##op_type.Touch();                                    \
    return 0;                                                              \
  }

#define USE_OP(op_type)                              \
  extern int TouchOpRegistrar_##op_type();            \
  static int use_op_##op_type  UNUSED = TouchOpRegistrar_##op_type();
注冊(cè)op
//test_op.cc
#include "a.h"
REGISTER_KERNEL(test_op, func);
使用op
//use_op.h
#include "a.h"
USE_OP(test_op);
說明

我們知道test_op.cc和use_op.h是不同的編譯單元,靜態(tài)變量的初始化順序不能保證,所以為了能夠在use_op的時(shí)候已經(jīng)注冊(cè)好了,
所以必須用函數(shù)調(diào)用來保證初始化順序。

寫一個(gè)簡(jiǎn)單demo

在這里插入圖片描述

run.cc
#include#include#include#include "use_op.h"

using namespace std;

int main()
{vectormodel;
        model.push_back("conv");
        model.push_back("pool");
        model.push_back("add");
		run(model);
		return 0;
}
single.h single.cc
//single.h
#ifndef __SINGLE_H_
#define __SINGLE_H_

#include#includeusing Fn = void (*) ();
std::map& single_instance();

#endif

//single.cc
#include "single.h"
std::map& single_instance()
{static std::mapmap;
        return map;
}
use_op.h use_op.cc
//use_op.h
#ifndef __USE_OP_H_
#define __USE_OP_H_
#include#includevoid run(std::vectormodel);
#endif

//use_op.cc
#include "single.h"
#include "use_op.h"

extern int reg_conv();
static int conv = reg_conv(); //之所以這樣寫是因?yàn)殪o態(tài)全局變量會(huì)在程序開始前初始化,保證了個(gè)這個(gè)函數(shù)一定會(huì)被調(diào)用,也就保證了kernel被注冊(cè)
extern int reg_pool();
static int pool = reg_pool();
extern int reg_add();
static int add  = reg_add();

void run(std::vectormodel)
{for(auto x:model)
	{auto fn = single_instance()[x];
        fn();
	}
}
pool.cc
#include#include "single.h"

void show_pool()
{std::cout<<"pool_run"< std::cout<<"reg_pool"<

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

本文標(biāo)題:C++注冊(cè)op-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://www.rwnh.cn/article6/dghgog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、虛擬主機(jī)、App開發(fā)、微信小程序、定制開發(fā)App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

嘉义市| 德安县| 浦东新区| 达日县| 铁力市| 彩票| 任丘市| 临澧县| 石城县| 长泰县| 灵寿县| 嘉峪关市| 苏州市| 聂荣县| 河北省| 密云县| 高平市| 花垣县| 秭归县| 巴南区| 巴楚县| 永康市| 靖边县| 湄潭县| 泗阳县| 红桥区| 二手房| 清徐县| 芦溪县| 建平县| 望奎县| 忻州市| 南丰县| 苍南县| 华坪县| 信丰县| 天气| 青冈县| 盖州市| 洛川县| 安庆市|