原创 error C2011 type redefinition類型重定義

編譯期報錯: c:\program files (x86)\windows kits\10\include\10.0.17763.0\shared\ws2def.h(235): error C2011: “sockaddr”:“stru

原创 CUDA Stream優化經驗

Multi-Process Service(MPS)原理:     一個GPU卡上同時只能執行一個context;因此多進程同時往一個GPU卡上提交任務時,同時只能有一個任務跑起來,沒法多任務並行;     MPS服務:多進程提交的任務

原创 《Learning CUDA Programming》讀書筆記(四)

Kernel執行,GPU和Host之間數據Copy,都是有CUDA Stream管理的; default stream默認不能與其他stream並行執行;即其他stream都結束後,default stream才能開始執行,他結束後,其他

原创 python和C的連接

Python/C API方式 #include <Python.h> int add_one(int a){ return a + 1; } static PyObject * py_add_one(PyObje

原创 C++11/14語法

Move Constructor(Move構造函數)和Move Assignment Operators(Move賦值運算符) 用"..."實現遞歸模板定義

原创 pytorch源碼閱讀學習筆記(C代碼宏展開實現泛型)

基本原則:#include的文件就相當於粘貼了一份代碼;”.h”文件裏放數據結構struct定義、函數聲明(全局可以被多次#include);”.cpp”文件裏放函數定義(實現代碼;全局只能被編譯一次);   TH/generic/THT

原创 《Learning CUDA Programming》讀書筆記(三)

CUDA occupancy: 一般等於:Active Thread Blocks per Multiprocessor / Max Threads per Multiprocessor;分子是用戶kernel和GPU硬件條件共同決定的

原创 NVIDIA for HPC

原文鏈接 Libraries: An easy replacement for CPU libraries. Standard Languages: NVIDIA C++17編譯器,add support for execution p

原创 CPU、內存、操作系統的硬核知識

原文 比較指令的實現:做減法運算,根據標誌寄存器裏表示結果正負零的位,指示是大於等於還是小於的結果。 函數調用的原理:把調用方的下一條指令的地址,寫到新函數的棧裏;return時從棧裏得到返回地址,寫入PC寄存器; 壓縮: RLE(Run

原创 規則自動提取

規則提取介紹

原创 CAS/Interlocked操作的原理

CAS/Interlocked操作的原理 在Intelx86指令體系中,有些運算指令加上lock前綴就可以保證該指令操作的原子性。其原理是CPU執行該指令時發現其前面加lock前綴,就會在總線維持一個硬件信號以阻止其他CPU(或線程)訪問

原创 Lock-free隊列(無圖版)

1. Introduction Improving applications with high-performance constraints has an obvious choice nowadays: Multithreading

原创 lock-free數據結構

Lock-Free 學習總結 參考文章 Lock-Free Data Structures, Andrei Alexandrescu, 2004 Lock-Free Data Structures with Hazard Pointers

原创 CPU L1-cache的false-sharing

L1-cache加載和失效的單位是64字節; 所以2個變量挨着放,線程1和線程2雖然兩者訪問的是不同地址的變量(至少有一個線程在寫入),也會導致2個L1-cache該行不停的失效,不停的加載內存進L1-cache,導致速度損失。 解決方法

原创 分佈式系統的CAP理論

分佈式系統的CAP理論 2000年7月,加州大學伯克利分校的Eric Brewer教授在ACM PODC會議上提出CAP猜想。2年後,麻省理工學院的Seth Gilbert和Nancy Lynch從理論上證明了CAP。之後,CAP理論正