原创 cuda及常用計時方式

CUDA中的計時方式:#include <cuda_runtime.h>  <pre code_snippet_id="1724831" snippet_file_name="blog_20160622_1_6734195" name=

原创 cuda中warp分支及執行

根據編程指南,任何流控制指令(if\switch\do\for\while)都會導致線程分歧,線程分歧時會順序執行每個分子路徑,而禁用不在此路徑上的線程,直到所有路徑完成,線程再重新匯合到同一執行路徑。 主要有以下三種情況: 如果一個wa

原创 cuda內存處理及stream內存處理

CUDA內存拷貝 1、cudaMemcpy()<--> cudaMalloc()  //線性內存拷貝 1 //線性內存拷貝 2 cudaMalloc((void**)&dev_A, data_size); 3 cudaMemcpy

原创 Nagle算法規則

Nagle算法的規則: (1)如果包長度達到MSS,則允許發送; (2)如果該包含有FIN,則允許發送; (3)設置了TCP_NODELAY選項,則允許發送; (4)未設置TCP_CORK選項時,若所有發出去的小數據包(包長度小

原创 不同顯卡(GPU)浮點數計算能力

1、SP總數=TPC&GPC數量*每個TPC中SM數量*每個SM中的SP數量; TPC和GPC是介於整個GPU和流處理器簇之間的硬件單元,用於執行CUDA計算。特斯拉架構硬件將SM組合成TPC(紋理處理集羣),其中,TPC包含有紋理硬件

原创 獨顯和集顯設置,雙顯卡工作及cuda計算

有時候我們會碰到插上獨顯後,想用集顯卻不顯示了,不是電腦出問題了,需要在BIOS中進行設置。 1、確保在BIOS中設置集顯和獨顯都予以使用(部分板卡可能不支持); 2、此時顯示器可以接在集顯上,獨顯單獨做計算(確保都有合適的驅動); 3、

原创 STL容器

1.vector  底層數據結構爲數組 ,支持快速隨機訪問 2.list    底層數據結構爲雙向鏈表,支持快速增刪 3.deque   底層數據結構爲一箇中央控制器和多個緩衝區,詳細見STL源碼剖析P146,支持首尾(中間不能

原创 GPU上基於SIMD的實現模式與多核CPU上基於MIMD的實現模式各有什麼優缺點

如題:         由於每個執行單元的指令流都是相同的,SIMD模式將指令的獲取時間均攤到每一個執行單元。但是,當指令流出現分支,指令就會被序列化。而MIMD模式的設計主要是爲了處理不同指令流,當指令流出現分支,它不需要對線程進行阻塞

原创 CBF中for循環變矩陣乘法的思想(arrayfire)--複數矩陣

接着上一篇博客CBF中for循環變矩陣乘法的思想(arrayfire)的續。 上一篇主要講了算法思想的改變,但是隻是測試了實數,沒有測試複數的效果,實際項目中都是複數的運用,所以這次添上覆數的代碼及測試結果。 這次在添加arrayfire

原创 多線程程序在多核和單核上運行的不同

1、鎖 在單核上,多個線程執行鎖或者臨界區時,實際上只有一個線程在執行臨界區代碼,而核心也只支持一個線程執行,因此不存在衝突。如果某個線程持有鎖,那只有其他線程不會被調度到CPU上執行,影響的只是持有和釋放鎖的時間,處理器時刻在運行着。但

原创 Turbo Cache技術

Turbo Cache,即Turbo Cache技術,是NVIDIA推出的一項技術。通俗的說,Turbo Cache技術就是用內存當顯存來使用。 既然是利用系統內存,這和以前的集成顯卡又有什麼區別呢? 在nVIDIA 的官方技術說明

原创 靜態局部變量特點

void fun() { static int val; } val的內存地址已經初始化。 靜態局部變量有以下特點: 該變量在全局數據區分配內存; 靜態局部變量在程序執行到該對象的聲明處時被首次初始化,即以後的函數調用不再進行

原创 cuda stream處理

  需要通過某種方式一次性地執行完讀取、修改寫入這三個操作,並且執行過程中不被其他線程中斷,這種操作稱爲原子操作。 #include "cuda_runtime.h" #include "device_launch_parameters

原创 每個線程塊中最大線程問題

1:每個block 最大1024個線程(視不同的卡來定),這個是線程總數的限制。 2:每個線程塊最大維度的限制爲x方向1024,y方向1024,z方向64(視不同的卡來定)。 3:一個線程塊的線程情況同時收到上述兩條的約束,即,如果在

原创 cuda debug 查看顯存中變量

用工程自帶的簡單數組加法測試。 一、打開start CUDA debug 二、打開CUDA warp watch 及CUDA info 三、就可以查看kernel中(顯存)的變量了