Matlab 使用GPU加速 轉載

在matlab中使用GPU加速,來加速矩陣運算。

首先如前面所說,并不是所有GPU都能在maltab中進行加速的,貌似只有NVDIA的顯卡可以吧。

硬件:GeForce GTX 980

軟件:Matlab 2015a ?(Matlab 2012以后的版本才帶有GPU加速的工具箱)

下面開始介紹怎么玩GPU加速

第一步:在matlab命令窗口,運行gpuDevice,查看自己的顯卡是否具備GPU加速功能

gpuDevice

正常情況下matlab會輸出如下結果代表具備GPU加速功能:

  CUDADevice with properties:Name: 'GeForce GTX 980'Index: 1ComputeCapability: '5.2'SupportsDouble: 1DriverVersion: 7.5000ToolkitVersion: 6.5000MaxThreadsPerBlock: 1024MaxShmemPerBlock: 49152MaxThreadBlockSize: [1024 1024 64]MaxGridSize: [2.1475e+09 65535 65535]SIMDWidth: 32TotalMemory: 4.2950e+09AvailableMemory: 3.3203e+09MultiprocessorCount: 16ClockRateKHz: 1380000ComputeMode: 'Default'GPUOverlapsTransfers: 1KernelExecutionTimeout: 1CanMapHostMemory: 1DeviceSupported: 1DeviceSelected: 1

第二步:CPU和GPU之間的數據交換,大致有如下幾個函數和功能:

? ? ? ? ? (1)、將數據從CPU中搬入GPU,函數:gpuArray,用法 M = gpuArray(M);

? ? ? ? ? (2)、在GPU中計算完成后,將數據搬出到CPU存儲,函數:gather,用法M=gather(M)。

下面給大家看看最簡單的用法以及處理同樣矩陣運算時的時間對比:

復制代碼
clear all
clc
M = rand(2000,2000);            % 生成一個隨機矩陣
tic
[A1,B1] = eig(M);               % 求該隨機矩陣的特征值和特征向量
t1=toc tic M = gpuArray(M); % 將數據從CPU中搬到GPU [A2,B2] = eig(M); % 求特征值和特征向量 A2 = gather(A2); % 將數據從GPU中搬到CPU t2 = toc
復制代碼

輸出結果(運行時間對比):

t1 = 14.1483
t2 =  9.1567

總結:雖然加速不是特別明顯,不過還是非常給力的,需要說明的是,一般的GPU對于單精度型的數據運算加速更明顯一點,因此我們在編寫代碼時,最好能夠將數據從double型轉換為single型,即M=single(M),然后在使用M=gpuArray(M),將數據搬遷到GPU進行計算,下面看看轉換為單精度型后的時間對比:

clear all
clc
M = rand(2000,2000);            % 生成一個隨機矩陣
tic
[A1,B1] = eig(M);                    % 求該隨機矩陣的特征值和特征向量
t1=toctic
M = single(M);                     % 將數據轉換為單精度型
M = gpuArray(M);                % 將數據從CPU中搬到GPU
[A2,B2] = eig(M);                 % 求特征值和特征向量
A2 = gather(A2);                 % 將數據從GPU中搬到CPU
t2 = toc

運行結果:

t1 =  14.8332
t2 =   5.0963

GPU對eig和svd進行加速,和cpu運行時間對比

clear all
A = rand(2000,2000);
tic
A1 = gpuArray(single(A));
[U,S,V] = svd(A1,'econ');
A2 = U*S*V';
A3 = gather(A2);
t = toc
tic
[U1,S1,V1] = svd(A,'econ');
A4 = U1*S1*V1';
t2 = tocerror = norm(A3-A4,'fro')tic
A1 = gpuArray(single(A));
[vv,dd] = eig(A1);
t3 = toc

結果:

t =    3.1564
t2 =    7.1644
error =    0.0032
t3 =    5.2244
t4 =   17.6389

  

 

是不是加速更明顯了呢?  

注:1、單精度型初始化矩陣函數例:X=rand(10,'single'); ?%定義在CPU上的一個10x10的隨機初始化數組 

? ? ? 2、直接在GPU中初始化矩陣例:GX=rand(10,'gpuArray'); ??%直接在GPU設備上隨機初始化一個10x10的數組 

  3、判斷數據DATA是否存在于GPU內存中例:TF=existOnGPU(DATA)

? ? ? 4、計算效率統計例:t=gputimeit(F,N)???????? %返回執行F操作N次所需的時間,當N=1時可以缺省 

轉載于:https://www.cnblogs.com/phyzrx/p/7475201.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253514.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253514.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253514.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數字后端——可制造性設計

隨著集成電路制造工藝技術的迅速發展,集成電路集成度迅速攀升,制造流程及工藝步驟日趨復雜,工藝尺寸也在不斷縮小。集成電路可制造性設計(Design For Manufacturability,DFM) 以直接提升集成電路芯片的良品率及降低芯片…

Cloudstack安裝(二)

Cloudstack安裝 官方文檔參考: http://docs.cloudstack.apache.org/projects/cloudstack-installation/en/4.9/qig.html#environment Cloudstack主要分Management和Agent兩部分。 系統版本:CentOS 6.8 Management: cpu1,ram 2048M…

Pycharm 輸出中文或打印中文亂碼現象的解決辦法

轉載地址:https://www.cnblogs.com/Bro-Young/p/5920884.html 1. 確保文件開頭加上以下代碼: 1 # -*- coding:utf-8 -*- 還可以加上 1 import sys 2 reload(sys) 3 sys.setdefaultencoding(utf-8) 確保以下。 如果還是沒有解決中文亂碼,那么進…

計算機系統結構——概述

計算機的實現包括兩個方面:組成和硬件。組成一詞包含了計算機設計的高階內容,例如存儲器系統,存儲器互連,設計內部處理器 CPU (中央處理器——算術、邏輯、分支和數據傳送功能都在內部實現)。有時也用微體系…

BestCoder Round #91 1001 Lotus and Characters

題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid6011 題意: Lotus有nn種字母,給出每種字母的價值以及每種字母的個數限制,她想構造一個任意長度的串。 定義串的價值為:第1位字母的價值*1第2位字母的價值*2第3位字…

Calendar的那些神坑

參考我的博客:http://www.isedwardtang.com/2017/08/31/java-calendar-bug/轉載于:https://www.cnblogs.com/EdwardTang/p/7476781.html

mkyaffs2image的用法

在Ubuntu中第一次使用mkyaffs2image命令時,會提示 mkyaffs2image:找不到命令 還需要安裝mkyaffs2image http://code.google.com/p/fatplus/downloads/detail?nameyaffs2-source.tar&can2&q 下載yaffs2-source.tar 解壓后,進入util…

全景圖像拼接——基本流程

圖像拼接技術是數字圖像處理技術一個重要的研究方向,它即是將兩幅或多幅相互有部分重疊的場景照片拼接成具有超寬視角、與原始圖像接近且失真小、沒有明顯縫合線的高分辨率圖像。可以很好地解決廣角鏡、魚眼鏡頭等全景圖獲取設備的不足。如下圖: 圖像拼接產生的圖像不…

SmartRaiden 和 Lighting Network 進行去中心化跨鏈原子資產交換

SmartRaiden 和 Lighting Network 進行去中心化跨鏈原子資產交換 前言 如果能夠進行以太坊和比特幣跨鏈原子資產交換,是不是一件很酷的事情? 目前鏈下的擴容方式有很多,最廣為人知的就是比特幣的閃電網絡和以太坊的雷電網絡,今天我…

WPF 帶CheckBox、圖標的TreeView

WPF 帶CheckBox、圖標的TreeView 在WPF實際項目開發的時候,經常會用到帶CheckBox的TreeView,雖然微軟在WPF的TreeView中沒有提供該功能,但是微軟在WPF中提供強大的ItemTemplate模板功能和自定義樣式,那我們可以自己寫一個這樣的控…

win32框架,GDI圖形編程寫一個HelloWorld游戲_c語言

1.如圖,實現功能: Hello World!字符串跟隨鼠標移動鼠標左擊Hello World!顏色為紅色鼠標右擊Hello World!顏色為藍色鼠標滾輪滾動改變Hello World!顏色的RGB中的G值 2.實現工具: vs20133.實現步驟: 新建一個win32項目 如圖,看到HelloWorldGame.cpp中 _tWinMain()的函…

全景圖像拼接——圖像融合

圖像融合技術就是將配準過后的圖像融合成一幅寬視角、大場景的圖像。但由于圖像采集過程中各種因素的影響,例如光照、角度、距離等,從而導致圖像間的光照不均勻、顏色上不連續。 經過配準以后,參考圖像和輸入圖像已經在同一個坐標系下,如果只是取某一幅圖像的信息或者簡單地…

極詳細的ECC講解 -OOB與ECC

http://blog.csdn.net/dongzhichen/article/details/8249228 詳細的ECC講解 -OOB與ECC 在網絡編程中 OOB(out of band)帶外數據 在MTD設備中 OOB 如下所示: http://www.cnblogs.com/bcxx_qin/archive/2009/06/11/1501271.html 極詳細的ECC…

前端進階(8) - 前端開發需要了解的工具集合:webpack, eslint, prettier, ...

前端開發需要了解的工具集合:webpack, eslint, prettier, ... 前端開發需要了解的一些工具,這些工具能夠幫助你在項目開發中事半功倍。 1. nrm: npm registry 管理器 registry: npm 遠程倉庫的地址。 由于眾所周知的原因,npm 官方倉庫在國內特…

CMOS圖像傳感器——TOF 圖像傳感器

一、3D成像技術概述 圖像傳感器一直以來都是人類研究的熱點。但隨著當代科學技術發展, 人類對于傳統的 2D 圖像傳感器的要求越來高,不僅期望著更高分辨率,更快速度,更大的動態范圍,人類加希望能夠獲得物體深信息,但是 2D 成 像技術現在已經不能滿足人類的需求,所以應運…

AndroidStudio創建jinLibs文件夾

在文件中的buildTypes節點下添加 sourceSets.main { jniLibs.srcDir libs } 如圖 轉載于:https://www.cnblogs.com/kim-liu/p/7479360.html

內嵌Tomcat的Connector對象的靜態代碼塊

在排查問題的過程中發現Connector對象有一個靜態代碼塊: static {replacements.put("acceptCount", "backlog");replacements.put("connectionLinger", "soLinger");replacements.put("connectionTimeout", &quo…

????YAFFS2文件系統在嵌入式LINUX系統中的應用

YAFFS2文件系統在嵌入式LINUX系統中的應用 2011-03-31 19:59 181人閱讀 評論(0) 收藏 舉報 1.文件系統簡述 隨著32位CPU價格不斷下跌,片上存儲設備的容量相比越來越大,越來越多的嵌入式系統開始應用各種嵌入式操作系統。一般在嵌入式領域&am…

【Python爬蟲學習筆記1】網絡協議及請求基礎

http協議與https協議 HTTP協議(全稱為HyperText Transfer Protocol,超文本傳輸協議),是發布和接收HTML頁面的方法,其服務端口號為80。 HTTPS協議為HTTP協議的加密版本,其在HTTP下加入了SSL層,服務端口號為443。 URL結構…

快速上手SpyGlass——基本流程

SpyGlass,這是一個很強大的RTL驗證級工具。它不僅僅能檢查sdc的錯誤,還能做以下各種檢查:Low Power, DFT,CDC(Cross Domain Check)。 一、基本概念 1、方法學相關 Rule: 是SpyGlass 進行RTL分析的最小單…