1. 程式人生 > >CUDA程式設計—硬體基礎

CUDA程式設計—硬體基礎

1、梳理概念:spsmthreadblockgridwarp

1)硬體上, SPstreamingProcess),SMstreaming multiprocessor)。

  SP最基本的處理單元,也稱為CUDA coreCUDA CoreNVIDIA在推出全新的Fermi架構後才出現的一個名詞。簡單的說,CUDACore就是以前所說的流處理器,是類似的東西,只是名字上的叫法不同而已,不過還是有區別的,具體區別查閱相關資料。最後具體的指令和任務都是在SP上處理的。GPU進行平行計算,也就是很多個SP同時做處理。

  SM多個SP加上其他的一些資源組成一個SM。也叫

GPU大核,其他資源如:warpschedulerregistersharedmemory等。SM可以看做GPU的心臟(對比CPU核心),registersharedmemorySM的稀缺資源。CUDA將這些資源分配給所有駐留在SM中的threads。因此,這些有限的資源就使每個SMactive warps有非常嚴格的限制,也就限制了並行能力。

需要指出:每個SM包含的SP數量依據GPU架構而不同,Fermi架構GF10032個,GF10X48個,Kepler架構都是192個,Maxwell都是128個。相同架構的GPU包含的SM數量則根據GPU的中高低端來定。

2)軟體上,hread

blockgridwarp

 thread一個CUDA的並行程式會被以許多個threads來執行。

 block數個threads會被群組成一個block,同一個block中的threads可以同步,也可以通過sharedmemory通訊。

 grid多個blocks則會再構成grid

 warpGPU執行程式時的排程單位,目前cudawarp的大小為32,同在一個warp的執行緒,以不同資料資源執行相同的指令,這就是所謂 SIMT-- Single InstructionMultiple Thread


2、硬體對映

    Nvidia32threads組成一個

warpwarp是排程和執行的基本單元。warp中所有threads並行的執行相同的指令,warp具有掛起,就緒,執行四種狀態,由SM的硬體warpscheduler負責排程,達到隱藏延遲的作用。容忍長延遲操作,例如浮點算術及分支指令,大量的warp使得硬體可以在任意時間點找到一個可排程的warp

   

        由於每個SM上的硬體資源是有限的,所以每個SM上可以同時駐紮的block數量和thread數量是有限制的,相關限制可以在相關的手冊中查詢。例如:對於GT200,SM上最多駐紮8個block,每個SM最多駐紮1024個thread,GT200至多駐留30720執行緒。

好的執行配置:每個SM中的執行緒數達到容量最大值且對於長延遲操作可排程最大數量的warps.


    一個SP可以執行一個thread,在GPU中可以同時(同一時鐘週期內)執行的thread數量為總的sp數量,也就是總的CUDA核數量(個人理解,不一定正確,這個對效能提升沒有太大的作用)。

相關推薦

CUDA程式設計硬體基礎

1、梳理概念:sp,sm,thread,block,grid,warp (1)硬體上, SP(streamingProcess),SM(streaming multiprocessor)。   SP:最基本的處理單元,也稱為CUDA core。CUDA Core是NV

網路程式設計基礎

網路程式設計 應用軟體的架構 1、C/S  client===>server 客戶端到服務端 2、B/S   browser===》server 瀏覽器端到服務端 在不同的計算機上,一個安裝客戶端另一安裝服務端 通過網路來通訊 什麼是網路通訊? 要完成通訊必須具

程式設計師教程-3章-程式設計語言基礎知識

  這一章難度頗大,好好學也學不到什麼,隨便寫點東西吧   目錄結構   3.1 程式設計語言概述     3.1.1 程式設計語言的基本概念       1 低階語言和高階語言       2 編譯程式和解釋程式       3 程式設計語言的定義     3.1.2 程式設計語言的分類和特點

80C51系列微控制器硬體基礎

80C51系列微控制器硬體基礎 一、總體介紹;   微控制器是一個大規模的積體電路晶片。現在一般介紹微控制器時,一般以MCS-51微控制器為基礎介紹。學習微控制器,以硬體和軟體方面學習。硬體方面:外部引腳、內部程式設計結構、儲存器結構、時鐘電路、復位電路以及最小系統構成。 二、引腳介紹:   1、

【Java TCP/IP Socket程式設計】----基礎知識

1.計算機網路、分組報文和協議 計算機網路是一組通過通訊通道相互連線的機器組成,這些機器被稱為主機和路由器。世界上所有的主機之間直接互聯不可行,通過路由器可以將所有主機連線到一起,實現主機之間資訊的傳遞,資訊指代的是由程式建立和解釋的位元組序列(分組報文packet)。分組報文裡面包含目的地址和

軟考總結---(二)程式設計語言基礎知識

前言:下面和大家分享一下第二章的知識點,希望對大家有幫助。 (一)程式設計語言概述 1.編譯程式和解釋程式 基本方式:彙編、解釋、編譯 【1】 ①用某種高階語言或組合語言編寫的程式稱為【源程式】,不能直接在計算機上執行。 ②如果源程式是用【組合語言】編寫的,則需要一個【彙編

C#.網路程式設計 Tcp基礎(二) TCP組包、粘包、拆包的原理

一、TCP粘包,拆包及解決方法    轉https://blog.csdn.net/scythe666/article/details/51996268 以下是轉發的部分內容          我們都知道TCP屬於傳

week7:網路程式設計基礎

一、OSI模型 二、網路通訊要素 2.1、IP地址 2.2、埠號 2.3、傳輸協議 三、socket程式設計 socket即是一種特殊的檔案,一些socket函式就是對其進行的操作(讀/寫IO、開啟、關閉)。 Socket 是任何一種計算機網路通訊中最基礎的內容。例如當你

CUDA程式設計(七)共享記憶體與Thread的同步

https://blog.csdn.net/sunmc1204953974/article/details/51078818   CUDA程式設計(七) 共享記憶體與Thread的同步 在之前我們通過block,繼續增大了執行緒的數量,結果還是比較令人滿意的,但是也產生了一

軟體設計師2--程式設計語言基礎知識

第二章 程式設計語言基礎知識 低階語言:機器語言、組合語言 高階語言:C、JAVA、python、Delphi、Pascal等 編譯程式:把程式翻譯成目標程式,在計算機中執行目標程式,如C語言、Java語言 解釋程式:把程式翻譯成某種中間程式碼並執行,如py

計算機基礎與作業系統 計算機系統簡介 計算機基礎知識 計算機的發展史及多道技術 計算機網路知識簡單介紹 Windows系統,Mac系統與Linux系統的的安裝與簡介 伺服器硬體基礎 Linux發展史 Linux伺服器遠端登入 Linux常用的150個命令彙總 在終端下寫Python程式碼

第一章:計算機系統簡介 第二章:計算機基礎知識 第三章:計算機的發展史及多道技術 第四章:計算機網路知識簡單介紹 第五章:Windows系統,Mac系統與Linux系統的的安裝與簡介 第六章:伺服器硬體基礎 第七章:Linux發展史 第八章:Linux伺服器遠端登入 第九

適合程式設計基礎最詳細的大資料學習線路

要說當下IT行業什麼最火?ABC無出其右。所謂ABC者,AI + Big Data + Cloud也,即人工智慧、大資料和雲端計算(雲平臺)。每個領域目前都有行業領袖在引領前行,今天我們來討論下大資料Big Data這個方向。 二,大資料裡面的角色 角色一:大資料工程 想學習的同學歡迎加

基於UTP的Socket程式設計基礎

User package com.imooc.UTPReturn; import java.io.Serializable; public class User implements Serializable{ private String username; private

這是一個非常簡單的題目,意在考察你程式設計基礎能力。千萬別想難了哦。輸入為一行,包括了用空格分隔的三個整數 AA、BB、CC(資料範圍均在-40−40 ~ 4040 之間)。輸出為一行,為“A+B+CA

這是一個非常簡單的題目,意在考察你程式設計的基礎能力。千萬別想難了哦。 輸入為一行,包括了用空格分隔的三個整數 A、B、C(資料範圍均在−40 ~ 40 之間)。 輸出為一行,為“A+B+C”的計算結果。 樣例輸入 22 1 3 樣例輸出 26 import java.util.

Python程式設計入門基礎語法詳解經典

一、基本概念 1.內建的變數型別: Python是有變數型別的,而且會強制檢查變數型別。內建的變數型別有如下幾種: #浮點 float_number = 2.3 #複數 complex_number = 1 + 5j #整型 integer_number = 1 #list 序列 samp

《Java多執行緒程式設計實戰》——第1章 Java多執行緒程式設計實戰基礎

Java執行緒: 守護執行緒——不影響JVM的正常停止,常用於執行一些重要性不太高的任務 使用者執行緒—— 建立一個Thread例項與建立其他類例項的區別: JVM為Thread例項分配兩個呼叫棧所需的儲存空間: 跟蹤Java程式碼間的呼叫關係

程式設計開發基礎之什麼是硬編碼?

舉個例子,比如說你做個軟體,他有選單欄,你如果把選單的標題全部寫在程式碼裡,那如果現在要換英文的,你就不得不改變程式碼。 現在換一種方式,你把選單標題全部寫在一個文本里,比如叫title.txt,現在你要英文,那麼只要把title.txt裡面相對應的值換成英文就可以了,而不用在去改程

Python網路程式設計基礎2

因為基礎內容較多所以內容回顧較多(程式碼放到下面) 網路效能衡量指標 頻寬:通訊通道上支援的最高資料傳輸頻率 速率:每秒中傳輸多少bits資料 吞吞量:單位時間內通過某個網路資料量 時延:傳輸時延,傳播時延,處理時延,排隊時

Python網路程式設計基礎1

1. 網路的概念 1)網路:多個節點通過特定的介質聯絡起來 的一種關係 2)計算機網路:以計算裝置作為節點 通訊線路作為介質的網路 3)網際網路(英特網) 把許多的網路連在一起的網路 4)起源:起源於冷戰 2. 網路功能

計算機硬體基礎

一 計算機基本組成 目前市面上的計算機幾乎都是馮諾依曼體系計算機,馮·諾依曼計算機使用馮諾依曼體系機構的電子數字計算機。1945年6月,馮·諾依曼提出了在數字計算機內部的儲存器中存放程式的概念,這是所有現代電子計算機的末班,被稱為“馮·諾依曼結構”,按照這種結構構造的電腦稱為儲存程式計算機,又稱為通用計算機。