1. 程式人生 > >CUDA-全域性記憶體讀取-實驗(快取+非快取-Fermi架構-sm2.1)

CUDA-全域性記憶體讀取-實驗(快取+非快取-Fermi架構-sm2.1)

特別宣告: 裝置GT540M, 計算能力2.1.程式碼附在後面;

快取載入:

(1)Fermi架構,預設情況是啟用L1快取,即採用128位元組記憶體事務。

  採用不同的偏移量,以實現非對齊訪問。命令列為:“nvprof --metircs gld_efficiency test.exe N” (N為偏移量)。採用批處理,計算0-255的偏移量的全域性記憶體載入效率,統計結果如下:偏移量每隔32,跳變一次。



非快取載入(L2快取)

(1)Fermi架構,編譯命令:-Xptxas -dlcm=cg 禁用L1快取,即採用32位元組記憶體事務。偏移量每隔8,跳變一次。


程式碼如下:

#include"iostream"
#include"cuda_runtime.h"
#include"device_launch_parameters.h"
using namespace std;
__global__ void fun1(float* datain,float* dataout,int n,int offset)
{
    int idx=threadIdx.x+blockIdx.x*blockDim.x;
    int k=idx+offset;
    if(k<n)
        datain[idx]=datain[k]+dataout[k];
}
int main(int argc,char* argv[])
{
	int offset = atoi(argv[1]);
	cout << offset << endl;
    const int N=512*15000;
    float* h_out,*h_in,*d_in,*d_out;

    cudaMallocHost((void**)&h_in,N*sizeof(float));
    cudaMallocHost((void**)&h_out,N*sizeof(float));
    cudaMalloc((void**)&d_in,N*sizeof(float));
    cudaMalloc((void**)&d_out,N*sizeof(float));
    for(int i=0;i<N;i++)
    {
        h_in[i]=i;
    }
    cudaMemcpy(d_in,h_in,N*sizeof(float),cudaMemcpyHostToDevice); 
    fun1<<<15000,512>>>(d_in,d_out,N,offset);
    cudaMemcpy(d_out,h_out,N*sizeof(float),cudaMemcpyDeviceToHost); 
    
    cudaDeviceSynchronize();
    return 0;
}



相關推薦

CUDA-全域性記憶體讀取-實驗快取+快取-Fermi架構-sm2.1

特別宣告: 裝置GT540M, 計算能力2.1.程式碼附在後面; 快取載入: (1)Fermi架構,預設情況是啟用L1快取,即採用128位元組記憶體事務。   採用不同的偏移量,以實現非對齊訪問。命令列為:“nvprof --metircs gld_efficiency t

CUDA全域性記憶體讀取

正如前文所述,CUDA全域性記憶體的訪問是通過”記憶體事務“實現的,其分類128位元組(L1/L2快取均參與)和32位元組(L2快取參與)兩種。本文則主要介紹全域性讀取的載入示例,分為”快取載入(L1+L2)“和”非快取載入(L2)“,程式碼會貼在後面。 一.快取載入(L1

軟件體系結構的第二次實驗解釋器風格與管道過濾器風格

硬件 hal 例如 .cn analyze boolean ole private 實現 一、實驗目的 1.熟悉體系結構的風格的概念 2.理解和應用管道過濾器型的風格。 3、理解解釋器的原理 4、理解編譯器模型 二、實驗環境 硬件: 軟件:Python或任何一種自己喜歡的

DNS服務子域委派,授權解析,負載均衡等功能原理解析實驗歡迎各位朋友蒞臨指教、討論

子域委派授權負載均衡一、DNS服務器簡易架構圖二、實驗操作步驟~~~~~~~~~~~~~~~~1、設置客戶端域名解析,使之指向緩存服務器~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[root@DNS131 ~]# cat /etc/resolv.conf ; generated

C 按行讀取檔案但是最後一行會多輸出一行

#include <stdio.h>   int main()  {      char filename[] = "E:\\data_test\\commands.txt"; //檔名   &nb

C語言全域性變數那些事兒深入C中最隱祕的地帶

【雖然自認為對C的角角落落都有所瞭解,但直到看到這篇文章,才知道C中的一些隱祕的坑,是自己之前不知道的。 關於全域性變數的連結問題,之前在我部落格的某文章中有介紹過,一般對C有些瞭解的程式設計師都知道這個問題,但本文最後所提到的使用動態連結庫所出現的問題,著實讓我震驚。

170720 混淆矩陣繪製+pandas讀取資料有點亂,後面抽空再整理

E:\Backup\validation confusion matrix_final2 # -*- coding: utf-8 -*- """ Created on Fri May 19 11:17:12 2017 @author: Bruce

iOS獲取裝置全域性資訊方法總結如訊號,電量,裝置標示

iOS獲取裝置全域性資訊方法總結 為系統建立一個隨機的標示符 (NSString*) createUUID { NSString *id = [[NSUserDefaults standardUserDefaults] objectFor

R語言讀取資料Practical Data Science with R 第二章

1、用R語言讀取檔案中的資料 1.1、用R語言讀取結構化資料 以University of California Irvine Machine Learning Repository (http://archive.ics.uci.edu/ml/)的car資料為例: u

計算機作業系統 ----記憶體空間回收首次適應演算法和最佳適應演算法

#include<iostream.h>  #include<stdlib.h>  #define Free 0 //空閒狀態  #define Busy 1 //已用狀態  #define OK 1    //完成  #define ERROR 0

從resource中的raw資料夾中獲取檔案並讀取資料資原始檔只能讀不能寫

轉載:http://blog.sina.com.cn/s/blog_4d25c9870100qpax.html 一、 從resource中的raw資料夾中獲取檔案並讀取資料(資原始檔只能讀不能寫) String res = ""; try{ InputStre

MyEclipse記憶體溢位問題an internal error occurred during building workspace

今天MyEclipse匯入了一個比較大的專案,出現了an internal error occurred during building workspace錯誤。 網上搜了一下,據說是記憶體溢位問題。可以通過修改myeclipse.ini檔案解決,一例如下。 優化之後的in

記憶體分配演算法-首次分配法和最佳分配法

/* implement a memory allocation scheme by using algorithms first-fit, next-fit, and best-fit * freelist為空閒區連結串列的頭,它的下一個節點才指向空閒緩衝區 * fr

Xcode出現 linker command failed with exit code 1錯誤總結

name 找不到文件 解決方法 錯誤 依賴 刪掉 導入 base replace 這種問題,通常出現在添加第三方庫文件或者多人開發時。一般是找不到文件而導致的鏈接錯誤。 我們可以從如下幾個方面著手排查。 提一點,我覺得一下方法中90%以上能解決你遇到的這個錯誤

windows下安裝mysqlmysql-installer-community-5.6.10.1

自動 選擇 devel 界面 mysql-in for 選項 需要 acc 轉載 2015年06月07日 18:22:57 轉載自:http://blog.sina.com.cn/s/blog_7cecec9501017cmk.html 一、安裝前的準備

出現 linker command failed with exit code 1錯誤總結

這種問題,通常出現在新增第三方庫檔案或者多人開發時。 這種問題一般是找不到檔案而導致的連結錯誤。 我們可以從如下幾個方面著手排查。 1.以如下錯誤為例,如果是多人開發,你同步完成後發現出現如下的錯誤。 Undefined symbols for archit

第四周預設建構函式 無參為1

/* *copyright(c) 2014,煙臺大學計算機學院 *All rights reserved。 *檔名稱:第四周(三角形) *作者:王忠 *完成日期:2015.4.1 *版本號:v1.0 * *問題描述:輸入三角形三條邊長,求出面積 周長 *輸入描述:輸入三角形

水波紋進度條自定義View——進階篇1

自定義控制元件——ProgressCircleView(水波紋進度條) 最近在很多群都有提到水波紋進度條,看起來蠻唬人的,但是我們要相信毛爺爺的話,一切看起來唬人的都是紙老唬,一言不合,還是先貼效果圖

分散式架構學習之:013--基於Dubbo的分散式系統架構介紹以第三方支付系統架構為例

基於Dubbo的分散式應用架構規劃(以第三方支付系統為例) 結合業務場景,對系統的應用型別進行劃分: (1) 服務子系統 ------ 賬戶、交易、對賬、結算、打款、風控…… (2) 內部管理應用

異或運算相同為0,不同為1

轉進位制計算器 先輸入一個十進位制數,再輸入要轉換的進位制······ #include<cstdio> #include<cstring> us