1. 程式人生 > >CUDA學習--記憶體處理之概述(1)

CUDA學習--記憶體處理之概述(1)

1. 快取記憶體

快取記憶體的最大速度與快取的大小成反比關係。一級快取是最快的,但他的大小一般限制在16k、32k或者64k。通常每個CPU核會分配一個單獨的一級快取。二級快取相對而言慢一些,但他更大,通常有256k~512k。二級快取或者三級快取一般在處理器的核之間是共享的,或者作為連線於特定處理器核的獨立快取來維護。

與CPU不同,GPU主要依賴基於程式設計師託管的快取或者共享記憶體區。在費米架構的GPU實現中,每個SM有一個一級快取,這個一級快取既是基於程式設計師託管的又是基於硬體託管的。在所有的SM之間有一個共享的二級快取。快取在處理器的核或者SM之間共享主要是為了讓裝置之間能夠通過相同的共享緩衝進行通訊,允許處理器之間不需要每次都通過全域性記憶體進行通訊。

不同儲存型別的訪問時間:

儲存型別 暫存器 共享記憶體 紋理記憶體 常量記憶體 全域性記憶體
頻寬 ~8TB/s ~1.5TB/s ~200MB/s ~200MB/s ~200MB/s
延遲 1個週期 1~32個週期 400~600個週期 400~600個週期 400~600個週期

因此,如表所示,我們在進行CUDA程式開發的過程中,應考慮各儲存器之間的特點,從而選擇使用較快的儲存器。

相關推薦

CUDA學習--記憶體處理概述1

1. 快取記憶體 快取記憶體的最大速度與快取的大小成反比關係。一級快取是最快的,但他的大小一般限制在16k、32k或者64k。通常每個CPU核會分配一個單獨的一級快取。二級快取相對而言慢一些,但他更大,通常有256k~512k。二級快取或者三級快取一般在處理器

CUDA學習--記憶體處理暫存器2

1. 暫存器 GPU上一個SM可以看成一個多執行緒的CPU核。一般CPU擁有二、四、八個核。但一個GPU卻有N個SM核。但這裡需要注意的是,所有的工作都是有SM上的SP(流處理器)處理的。每個核上SP數目不同,因此每個核支援的執行緒數目也會有很大的不同。事實上

CUDA學習--記憶體處理常量記憶體4

1.常量記憶體 常量記憶體,顧名思義,它是隻讀記憶體。這種型別的記憶體要麼是在編譯時宣告為只讀記憶體,要麼是在執行時通過主機端定義為只讀記憶體。常量只是從GPU記憶體的角度而言。在編譯時宣告一塊常量記憶體,需要用到const關鍵字。 常量記憶體其實只是全域性

FPGA小白學習1 System Verilog的概念以及與verilog的對比

函數返回 enable 傳遞 轉換操作符 st2 輸出 時間值 擴展 isa 轉自CSDN:http://blog.csdn.net/gtatcs/article/details/8970489 SystemVerilog語言簡介 SystemVerilog是一種硬件描

學習Linux程序設計1UNIX程序設計哲學

文件 系統 領域 mil 自己 編程 代碼 復雜 容易 UNIX程序編程有自己特定的風格,我們在學習UNIX程序設計的時候,應該盡量遵從這種設計風格,它能夠最大限度地幫助我們避免一些問題。簡單化 許多有用並且好用的UNIX系統軟件都非常簡單,而且很小並易於理解。

前端學習HTML1

HTML標籤學習 2018-10-31 記錄一下學習的網站 http://www.w3school.com.cn http://www.runoob.com/ 1 <!DOCTYPE html> 2 <html> 3 4 <head>

小李的Java學習1

第一天 java的面向物件思想 小葉:“為什麼要學習Java呢???” 小李:“因為Java比c語言有趣多了。。。。” 小葉:“你剛學完c語言,來說說c語言和Java的異同之處吧。” 小李:“c語言和Java的語法基礎,程式控制語句大體都是一樣的。主要是不同之處:Java和c的程

kaggle官方學習資源python1

學習地址: 學習目錄: 1. Hello, Python 簡單介紹python的常量、變數賦值以及算術運算 2. 練習: Syntax, Variables, and Numbers 3. Functions and Getting Help 函式定義

以問題推動學習——Mybatis1

以問題推動學習之——Mybatis(1) collection 需求 解決 深入理解 collection 需求 將上表中相同to_platform對應的flow_record_cnt變成ArrayLi

以問題推動學習——Postgresql1

以問題推動學習之——Postgresql(1) 1、 理解group by與聚合函式 需求 解決 深入理解 回看 1、 理解group by與聚合函式 需求 將資料合成一組,根據每一組的最大數取出

JavaWeb學習筆記XML1

文章目錄 XML 表單提交方式 XML的介紹 XML的應用 XML的語法 XML的dtd約束 schema約束 相關知識: https://blog.csd

ESP8266 WIFI模組學習1——模組的USB串列埠連線

ESP8266 WIFI模組是我一直想學習的模組,現在物聯網發展如此之快。 我們先看看ESP8266 WIFI模組長什麼樣子吧,如下圖: 然後,我們還需要一個TTL-USB串列埠線,如圖: 還需要一個串列埠除錯助手,為了接發資料。我使用的除錯助手如下圖:

TensorFlow學習1擬合線性方程

TensorFlow是Google開源的一個深度學習框架,之前接觸過一些但是沒有好好的深入瞭解,從這篇文章開始記錄自己所學到的知識。本次主要記錄一個簡單的例子,以後會慢慢深入,包括多層神經網路,卷積神經網路,迴圈神經網路,自編碼網路,深度神經網路和對抗神經網路。 例項描述

躺雨沒的學習筆記——藍芽概述 1.1BR/EDR概述

Agenda: (168頁)藍芽無線技術是一種短距離無線通訊系統,目的是取消連線在主電子裝置與外設之間的電線。藍芽無線技術的主要特點是:健壯性(抗干擾),低功耗、低成本。核心規範中的一些技術是可選的,意思是,各個產商實現的藍芽晶片所支

一個初學者→全棧工程師的學習1——關於全棧工程師的理解

關於全棧工程師的理解與學習 一、關於全棧工程師的定義與職務 1. 全棧工程師的定義 隨著網際網路技術的蓬勃發展,技術變得越來越繁瑣,越來越多面化。一個專案的開發,需要使用多樣技術。舉個例子,一個網站的建設,單論初步開發(功能實現)而言,需要功能分析、介面與互動性設計、前

Python資料預處理:機器學習、人工智慧通用技術1

Python資料預處理:機器學習、人工智慧通用技術 白寧超  2018年12月24日17:28:26  摘要:大資料技術與我們日常生活越來越緊密,要做大資料,首要解決資料問題。原始資料存在大量不完整、不一致、有異常的資料,嚴重影響到資料建模的執行效率,甚至可能導致模型

NodeJs學習1

NodeJs主要乾的工作 nodejs主要可以完成的工作就是在Web場景下使用,是對前端最友好的後端語言,主要是在高併發,非阻塞I/O密集下使用,但是不適合CPU使用密集、非阻塞I/O不多的情況下使用。很多情況下NodeJS在價效比方面不是最好的,但是

機器學習迴歸1線性迴歸

# -*- coding: utf-8 -*- """ Created on Sun Apr 15 16:18:34 2018 @author: Administrator """ import matplotlib.pyplot as plt       #pyplo

vue學習1——搭建vue腳手架vue-cli

準備的環境和工具 1. 首先安裝node.js,官網:https://nodejs.org/en/ 2. win+r 輸入cmd 開啟 命令列 輸入node -v 出現相應的版本號,則說明安裝成功。此時已經自帶npm(包管理工具) 3. 安

資料結構C語言學習1——緒論

小白學習資料結構,從基礎知識開始整理起。 1.資料結構是什麼? 2.資料結構在哪裡用? 3.資料結構怎麼用? 小白在開始學習資料結構,提出了這三個問題,希望到學習完成之後可以解決這三個問題。 小白從《大話資料結構》這本書開始學習。 基本概念: 資