原创 使用Github+Markdown搭鍵自己的筆記本

有什麼東西慢慢偏離了發明者的初衷呢? 如果列個表,或許能繞赤道幾周,Github,應該也能算一個。Github本來是專門用來託管代碼的一個遠程倉庫,讓開發者們可以發現、分享以及一起開發優秀的軟件產品。但是它能託管的並不只有代碼,因

原创 PyTorch框架Tensor底層原理

神經網絡,可以看做是一個非常複雜的公式的代碼實現。計算機沒法理解抽象的公式,需要我們翻譯翻譯。例如y=10x+3y = 10x + 3y=10x+3這個公式,我們想讓計算機能用它來做計算,我們需要用編程語言做個轉換,C++實現如下

原创 ONNX Runtime 源碼閱讀:模型分區的實現

相關閱讀: ONNX Runtime 源碼閱讀:模型推理過程概覽 ONNX Runtime 源碼閱讀:模型結點串行執行順序的確定 前言 爲了實現高效的推理,神經網絡推理引擎應該儘可能將主機(Host)上能提供更高效計算的硬件設

原创 冰山之下:從extern C到程序鏈接

目錄改名(name mangling)Executable and Linkable Format動態鏈接總結References 閱讀C++代碼的時候,或者看一些教程的時候,我們經常會看到這麼一個關鍵字extern "C",例如

原创 交叉編譯和ABI簡介

目錄交叉編譯Application Binary InterfaceReferences 最近處理一個問題,需要在Ubuntu下使用GCC編譯出多個平臺版本做驗證,發現對交叉編譯這塊有點模糊。導致工作效率略受影響,因此打算學習一下

原创 cmake 腳本編程簡介

前言 學習,其實就是用已有的知識去理解未知的過程,如果能找到已有知識和未知之間的相似之處,那麼學習將事半功倍。接下來,我將嘗試用找尋已經學會的編程語言和cmake之間的相似點。 以前,我只能被動的去記憶cmake的一條條命令,把一

原创 就TM你叫std::forward啊?

之前介紹過std::move,今天我們就接着來說說std::forward。C++11引入了一個新特性:右值引用,這個特性可以避免不必要的拷貝從而提高性能。 std::forward 我們先看看std::forward是幹什麼的,

原创 就TM你叫std::move啊?

在閱讀源碼的時候,我發現有兩個標準庫的方法被頻繁使用,他們就是std::move和std::forward,因此打算一探究竟。只知道他們能做什麼是不能滿足我的,我還想只它他們爲什麼會出現。這兩個函數與C++11標準引入的新特性——

原创 ONNX一個溝通各大AI框架的橋樑

概述 ONNX全稱Open Neural Network Exchange,是微軟設計的一個開放式深度學習神經網絡模型的格式。旨在通過一個統一的模型格式標準,建立一個強大的人工智能生態。 深度神經網絡的實現是通過數據流圖實現的,數

原创 Python調用C++之PYBIND11源碼分析

前情提要 在之前的文章Python調用C++之PYBIND11簡介中我們介紹了pybind11的基本用法,我們已經知其然,接下來我們通過代碼分析,知其所以然。通過之前的講解,我們知道使用pybind11去導出C++接口到Pytho

原创 Python調用C++之PYBIND11簡介

簡介 PyBind11是能夠讓C++和Python代碼之間相互調用的輕量級頭文件庫。在這之前已經有了一個類似功能的庫:Boost.Python。既然已經有了一個類似庫,而且PyBind11的目的和語法都與Boost.Python相

原创 GCC 命令簡明教程

前言 GCC,全稱The GNU Compiler Collection,包含了 C, C++, Objective-C, Fortran, Ada, Go等語言的編譯器前端以及這些語言所依賴的一些庫文件。雖然現在的IDE基本可以

原创 ONNX Runtime 源碼閱讀:模型結點串行執行順序的確定

概要 ONNX模型中的結構是一個有向圖,包含了很多節點。每個節點執行一個特定的操作,最終就得到了推理結果。ONNX模型格式標準並沒有要求所有節點按照拓撲順序來存儲,進行模型解析的時候也基本不要求解析出來的節點一定要符合拓撲順序排列

原创 使用C語言編寫Python模塊-引子

爲什麼要用C語言寫Python模塊,是Python不夠香麼?還是覺得頭髮還茂盛?都不是。因爲C語言模塊有幾個顯而易見的好處: 可以使用Python調用C標準庫、系統調用等; 假設已經有了一堆C代碼實現的功能,可以不用重寫,豈不美

原创 Git submodule - Git子模塊簡介

目錄 建立倉庫 1.1 創建主倉庫 1.2 創建子倉庫 提交內容 2.1 提交到主工程的倉庫 2.2 提交到子模塊的倉庫 克隆帶子模塊的倉庫到本地 更新子倉庫 總結 參考文檔 正文 軟件開發中有一個DRY(Don’t Repe