亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

函數(shù)說(shuō)明玩玩CUBLAS(2)——level1函數(shù)

系統(tǒng) 1788 0

改章節(jié)筆者在廣東游玩的時(shí)候突然想到的...明天就有想寫幾篇關(guān)于函數(shù)說(shuō)明的文章,所以回家到之后就奮筆疾書的寫出來(lái)發(fā)布了

????

/*=======================================================================

????

* 第二天了,算打弄完這個(gè)去吃劈柴院的灌湯包,海上起霧了,要是不冷了,去趟只聽過(guò)沒(méi)去過(guò)的棧橋

????

* 金剛狼3上映有一段時(shí)間了吧,晚上去試試。。

????

=======================================================================*/

????我看過(guò)cublas的說(shuō)明文檔,它在解講的時(shí)候先從總體上說(shuō)明cublas的基本存儲(chǔ)則規(guī),所以這里,我說(shuō)幾點(diǎn),這些容內(nèi)將在實(shí)際中體具習(xí)練。

????

????

2.1 實(shí)際之前的cublas幾點(diǎn)說(shuō)明

????

  • cublas實(shí)現(xiàn)三個(gè)別級(jí)的BLAS(Basic Linear Algebra Subprograms)的函數(shù)能功,關(guān)于BLAS的說(shuō)明,大家可以在 這里 找到。
  • 本節(jié)中述講blas1中的某個(gè)函數(shù)的應(yīng)用。
  • cublas接受的參數(shù),按照存儲(chǔ)點(diǎn)地分,有三種:設(shè)備上,主機(jī)上,設(shè)備或者主機(jī)上。按照數(shù)學(xué)類型分:量標(biāo)(對(duì)應(yīng)單變量,常量),量向(對(duì)應(yīng)數(shù)組),矩陣(對(duì)應(yīng)數(shù)組)。
  • cublas中量向,矩陣 從1開始引索 。這點(diǎn)要注意的是,cublas自己的函數(shù)這樣實(shí)現(xiàn),我們自己的數(shù)據(jù)還是按照自己的語(yǔ)言標(biāo)準(zhǔn)來(lái)做的,就是說(shuō),你用C語(yǔ)言的數(shù)組,還是從0開始,但是用cublas庫(kù)的時(shí)候,庫(kù)本身自己從1開始。

????

????

2.2 境環(huán)外額配置

????上一篇中紹介了如何配置cublas的編譯境環(huán),不過(guò)要應(yīng)用cublas,還需要cuda的runtime支撐,所以你需要在鏈接器的依附項(xiàng)中添加cudart.lib的外額依附。體具添加法方,與上一篇中法方相似,不再贅述。

????另外,源碼中應(yīng)用cuda runtime函數(shù)的文件中要添加#include “cuda_runtime.h”

????

????

2.3 驗(yàn)實(shí)函數(shù)說(shuō)明

????明天我們要驗(yàn)實(shí)的庫(kù)函數(shù)是cublasIsamax(...),它要實(shí)現(xiàn)的能功是得獲某個(gè)量向中第一個(gè)最大模的引索號(hào),注意這個(gè)引索號(hào)是從1開始的。

????函數(shù)型原是:cublasStatus_t cublasIsamax(cublasHandle_t handle, int n,?const float *x, int incx, int *result)

????參數(shù)說(shuō)明:

????

  • 回返值,含包函數(shù)的誤錯(cuò)碼代,這是個(gè)枚舉類型,值為CUBLAS_STATUS_SUCCESS時(shí),時(shí)常正,否則說(shuō)明發(fā)生了誤錯(cuò)。
  • handle,表現(xiàn)是cublas的上下文句柄。由cublasStatus_t?cublasCreate(cublasHandle_t *handle)函數(shù)創(chuàng)立,由cublasStatus_t?cublasDestroy(cublasHandle_t handle)釋放。
  • n,表現(xiàn)量向x中要引索的元素的總個(gè)數(shù)。
  • x,量向x。他的存儲(chǔ) 必須存儲(chǔ)在GPU上
  • incx,要引索的x中元素的增量。
  • result,寄存結(jié)果。他的存 儲(chǔ)可以在CPU上也可以在GPU上

????數(shù)學(xué)上解釋下算法:

????此函數(shù)回返第一個(gè)i,使得 |Im(x[j])| + |Re(x[j])| 為最大值,其中i=1,...,n,并且,j=1 + (i-1)*incx.

????每日一道理
如果你們是藍(lán)天,我愿做襯托的白云;如果你們是鮮花,我愿做陪伴的小草;如果你們是大樹,我愿做點(diǎn)綴的綠葉……我真誠(chéng)地希望我能成為你生活中一個(gè)歡樂(lè)的音符,為你的每一分鐘帶去祝福。

????

????

2.4 基本驗(yàn)實(shí)

????碼代我貼在了上面

    #include <stdio.h>

#include <stdlib.h>

#include <time.h>



#include "cuda_runtime.h"

#include "cublas_v2.h"

#define DATA_SIZE 1024



#define CUBLAS_ERROR_CHECK(sdata) if(CUBLAS_STATUS_SUCCESS!=sdata){printf("ERROR at:%s:%d\n",__FILE__,__LINE__);exit(-1);}



void InitVector(float *vec, int n, int down, int up)

{

	int i;

	srand((unsigned int)time(NULL));

	for (i = 0; i < n; i++)

	{

		vec[i] = (float)(rand()%(up-down+1)+down);

	}

	return ;

}

void myIsamax(int n, float *x, int incx, int *result)

{

	int i = 0;

	*result = 0;

	for (i = 1; i < n; i+=incx)

	{

		if(x[i]>x[*result]) *result=i; 

	}

}

int main(int argc, char **argv)

{

	cublasHandle_t cubhandle;

	cublasStatus_t cubStatus = CUBLAS_STATUS_SUCCESS;



	float *h_datax;

	float *d_datax;

	int    h_result;

	int    d_result;

	int    data_size = DATA_SIZE;

	

	// initialize cublas resource

	cubStatus = cublasCreate(&cubhandle); CUBLAS_ERROR_CHECK(cubStatus)



	// allocate memory CPU + GPU

	h_datax = (float*)malloc(data_size*sizeof(float));

	cudaMalloc((void**)&d_datax, data_size*sizeof(float));



	// initialize cpu memory

	InitVector(h_datax, data_size, 0, 100);



	// copy cpu value to gpu memory

	cubStatus = cublasSetVector(data_size, sizeof(float), h_datax, 1, d_datax, 1);

	CUBLAS_ERROR_CHECK(cubStatus)

	

	// execute GPU version

	cubStatus = cublasIsamax(cubhandle, data_size, d_datax, 1, &d_result); CUBLAS_ERROR_CHECK(cubStatus)

	// execute CPU version



	myIsamax(data_size, h_datax, 1, &h_result);





	printf("host   : h_datax[%d]=%.2f\n", h_result, h_datax[h_result]);

	printf("device : d_datax[%d]=%.2f\n", d_result-1, h_datax[d_result-1]);





	// Free memory

	free(h_datax);h_datax=0x0;

	cudaFree(d_datax);d_datax=0x0;



	cublasDestroy(cubhandle);

	getchar();

	return 0;

}
  

????總結(jié)

????為盡的地方,歡送大家批駁針指。

????

????

????

????

????

????

文章結(jié)束給大家分享下程序員的一些笑話語(yǔ)錄: 這年頭的互聯(lián)網(wǎng)真是娛樂(lè)了中國(guó),網(wǎng)民們從各種各樣的“門”里鉆來(lái)鉆去,又有好多“哥”好多“帝”,值得大家品味不已……網(wǎng)絡(luò)經(jīng)典語(yǔ)錄,關(guān)于IT與互聯(lián)網(wǎng),經(jīng)典與您分享!

函數(shù)說(shuō)明玩玩CUBLAS(2)——level1函數(shù)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 美女狠狠干 | 亚洲另类老妇videos | 99国产精品高清一区二区二区 | 久久93精品国产91久久综合 | 日产国产精品久久久久久 | 在线观看国产精品日本不卡网 | 四虎永久影院永久影库 | 国产久7精品视频 | 亚洲高清免费在线观看 | 手机看片国产 | 免费一级真人毛片 | 久久福利免费视频 | 九色 91| 热99re国产久热在线 | 四虎影视永久地址 | 2021国产精品自产拍在线观看 | 综合精品视频 | 欧美日韩国产成人综合在线影院 | 奇米影视狠狠狠天天777 | 动漫三级在线观看 | 欧美成人激情视频 | 波多野结衣中文字幕一区 | 亚洲欧美日韩国产精品网 | 欧美激情 亚洲 | 九九九 | 综合网视频| 国产香蕉一区二区精品视频 | 国产女主播喷出白浆视频 | 久久精品亚洲日本波多野结衣 | 亚洲成人中文 | 欧美金八天国 | 精品久久久久久久久久久久久久久 | 四虎成人www国产精品 | 日韩免费看 | 来自深渊在线观看 | 永久国产 | 精品国产视频在线观看 | 99精品久久久久久久婷婷 | 韩国精品videosex性韩国 | 亚洲欧美日韩中文高清一 | 久久国产乱子伦精品免 |