最終更新:
mikk_ni3_92 2008年11月03日(月) 16:21:04履歴
現在地 >> メニュー >> CUDA >> CUDA::基本編06 >> CUDA::基本編06まとめ2
関連:CUBLAS::行列
関連:CUBLAS::行列
#include <iostream>
#include <algorithm>
#include <cublas.h>
float host[3][4]=
{
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
};
int main(int argc, char **argv)
{
float *gpu; //GPUメモリ格納用
float *FromGpu = new float[9];
cublasStatus status;
status = cublasInit(); //初期化
if (status != CUBLAS_STATUS_SUCCESS) {
std::cerr << "Can't Initialization CUBLAS\n";
return EXIT_FAILURE;
}
if ( cublasAlloc(12, sizeof(float), (void**)&gpu) != CUBLAS_STATUS_SUCCESS){ //メモリ確保
std::cerr << "Can't allocate Device memory\n";
return -1;
}
//row:y col:x
cublasSetMatrix(3,4,sizeof(float),host,4,gpu,4);
cublasGetMatrix(3,3,sizeof(float),gpu,4,FromGpu,3);//(3×3)分だけ取り出す
cublasFree(gpu);//メモリ解放
status = cublasShutdown(); //シャットダウン
if (status != CUBLAS_STATUS_SUCCESS) {
std::cerr << "Can't ShutDown CUBLAS\n";
return EXIT_FAILURE;
}
std::copy(FromGpu,FromGpu+9,std::ostream_iterator<float>(std::cout,"\n"));//出力テスト
delete [] FromGpu;
return EXIT_SUCCESS;
}

