伺服器推理加速工作 6 17

2021-09-24 12:32:50 字數 2265 閱讀 4220

1.解決標頭檔案互相引用問題:

使用#parama once, 和#ifndef... #define ... #endif功能一樣。詳細區別

2. requantizeoutput初始化失敗,原因是column_offsets_型別為std::shared_ptr> column_offsets_,並沒有初始化,因此呼叫empty()失敗,初始化方法為

column_offsets_ = std::make_shared>();

column_offsets_->resize(h_w);

requantizeoutputoutputprocobj(

donothingobj,

requantization_multipliers_.data(), // c_multiplier

0, // c_zero_point

// column_offsets_ empty means column_offsets_ are folded into bias

0, // aq_zero_point

filter_zero_points_.data(), // bq_zero_point

packa.getrowoffsetbuffer(), // row_offsets

column_offsets_->empty() ? nullptr: column_offsets_->data(), // col_offsets

b_quantized_data_, // bias

m, // num_output_

1); // group

3.vector指標的初始化方式

std::vector* top_data_ = new std::vector[sizes];    //   vector指標初始化

float * data_fp = new float[sizes] // 普通float指標初始化

for (int i = 0; i < 10; i++)

float* top_data_ptr = top_data_->data();

top_data_ptr[0] = 12.f; // 如果沒有賦值語句會訪問出錯

4.fbgemm計算偏移量,在src/refimplementations.cc中定義了row_offsets和column_offsets的計算方式(用於gtest)

/*

每行所有的值相加

*/void row_offsets_u8acc32_ref( // 輸入資料為uint8, row_offsets為int32

int m,

int k,

int ld,

const uint8_t* aint8,

int32_t* row_offsets)

row_offsets[i] = sum;

}}/* 每列所有的值相加

*/void col_offsets_with_zero_pt_s8acc32_ref( // 輸入資料為sint8, col_offsets為int32,量化時指定0對映位置zero_point

int k,

int n,

int ld,

const int8_t* bint8,

const int32_t* b_zero_point,

int32_t* col_offsets,

int ncols_per_quant_group)

col_offsets[j] = sum - b_zero_point[j / ncols_per_quant_group] * k;

}}

5. 正確顯示uint8_t的值

c++中uint8_t的實現是typedef unsigned char      uint8_t;因此實際的執行結果是列印對應的ascii碼,需要用一元運算子+或者把uint8_t轉換成unsigned型別(

float* bottom_data = new float[10];

std::uint8_t* bottom_data2 = reinterpret_cast(bottom_data); // 型強制轉換

for(int i = 0; i < 10; i++)

Radius伺服器工作原理

radius是一種c s結構的協議,它的客戶端最初就是nas net access server 伺服器,現在任何執行radius客戶端軟體的計算機都可以成為radius的客戶端。radius協議認證機制靈活,可以採用pap chap或者unix登入認證等多種方式。radius是一種可擴充套件的協議...

KMS伺服器工作原理

若要檢查您當前的評估期上剩餘的時間,可以使用 system32 資料夾中的指令碼 slmgr.vbs 這個指令碼可以用 dli 開關來執行此指令碼。具體方法如下 1.單擊 開始,然後以管理員身份 命令提示符。2.鍵入 slmgr.vbs dli 然後按 enter 以檢查您的評估期的當前狀態。此時,...

MSSQL 檢視伺服器工作狀態

檢視伺服器工作狀態 create function fgetsstatus servername varchar 50 伺服器名 userid varchar 50 sa 使用者名稱,如果為nt驗證方式,則為空 password varchar 50 密碼 returns varchar 20 as...