×
現在地 >> メニュー >> CUDA >> CUDA::基本編06 >> CUDA::基本編06まとめ1
関連:CUBLAS::ベクトル


問題


配列要素をGPUにコピーし、そのGPUに格納されたデータのうち、
先頭3つをとりだせ。

答え

#include <iostream>
#include <algorithm>
#include <cublas.h>

float host[]={11,23,56,3,21,8,7,9};
int main(int argc, char **argv)
{

	float *gpu; //GPUメモリ格納用
	float *FromGpu = new float[3];

	cublasStatus status;
	status = cublasInit(); //初期化
	if (status != CUBLAS_STATUS_SUCCESS) {
		std::cerr << "Can't Initialization CUBLAS\n";
		return EXIT_FAILURE;
	}


	if ( cublasAlloc(8, sizeof(float), (void**)&gpu) != CUBLAS_STATUS_SUCCESS){ //メモリ確保
		std::cerr << "Can't allocate Device memory\n";
		return -1;
	}

	cublasSetVector(8, sizeof(float), host, 1, gpu, 1); //GPUへデータコピー
	cublasGetVector(3,sizeof(float),gpu,1,FromGpu,1); //GPUから3要素データを取り出す
	
	cublasFree(gpu);//メモリ解放

	status = cublasShutdown(); //シャットダウン
	if (status != CUBLAS_STATUS_SUCCESS) {
		std::cerr << "Can't ShutDown CUBLAS\n";
		return EXIT_FAILURE;
	}


	std::copy(FromGpu,FromGpu+3,std::ostream_iterator<float>(std::cout,"\n"));//出力テスト

	delete [] FromGpu;


	return EXIT_SUCCESS;
}

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます

広告募集中