CUDAのBuilt-inベクトル型

CUDAにはBuilt-inのベクトル型が多く定義されています. 元々GPUは3Dのコンピュータグラフィックスを扱うため, 4次元のベクトル型(3次元の同次座標やRGBの3色とアルファ値など)までが用意されています.

ベクトル型の作成のために,make_型名 という関数が用意されていますので,例えば,float4型の変数を作りたいときは,

float4 a = make_float4(1.0f, 2.0f, 3.0f, 4.0f);

といったように定義します.

ベクトル型の演算(CUDA 10.0)

(2018.10.24追記)

デフォルトではfloat3やfloat4といったベクトル型は,データ格納には使用可能ですが演算子が定義されていません. ベクトル演算を行う時は"helper_math.h"をインクルードしてください. ("helper_math.h"内で"cuda_runtime.h"を読んでいるので"cuda_runtime.h"はインクルードしなくて良い) "helper_math.h"はCUDA Samplesが入ったディレクトリのどこかにあります.

変数の一覧

変数名1要素のバイト数符号
char1,char2,char3,char41あり整数
uchar1,uchar2,uchar3,uchar41なし整数
short1,short2,short3,short42あり整数
ushort1,ushort2,ushort3,ushort42なし整数
int1,int2,int3,int44あり整数
uint1,uint2,uint3,uint44なし整数
long1,long2,long3,long44 or 8(プラットフォーム依存)あり整数
ulong1,ulong2,ulong3,ulong44 or 8(プラットフォーム依存)なし整数
loglong1,longlong28あり整数
float1,float2,float3,float44あり浮動小数点数
double1,double28あり浮動小数点数

dim3

上記の他に特別な型として,dim3 があります. dim3はグリッドやブロックなどのサイズ指定に用いられます. 基本的には uint3 ですが,指定されなかった要素が1で初期化されることが特徴です.

dim3のコンストラクタは次のように定義されています(関数修飾子などは除いています).

dim3(unsigned int x = 1, unsigned int y = 1, unsigned int z = 1) : x(x), y(y), z(z) {}
dim3(uint3 v) : x(v.x), y(v.y), z(v.z) {}

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2024-03-08 (金) 18:06:03