原创 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理論正