#author("2018-10-23T14:15:06+09:00","default:pbcglab_user","pbcglab_user") #author("2018-10-24T14:26:45+09:00","default:pbcglab_user","pbcglab_user") *CUDAのBuilt-inベクトル型 [#pae431b9] 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) [#i86cde77] (2018.10.24追記) デフォルトではfloat3やfloat4といったベクトル型は,データ格納には使用可能ですが演算子が定義されていません. ベクトル演算を行う時は"helper_math.h"をインクルードしてください. ("helper_math.h"内で"cuda_runtime.h"を読んでいるので"cuda_runtime.h"はインクルードしなくて良い) "helper_math.h"はCUDA Samplesが入ったディレクトリのどこかにあります. **変数の一覧 [#v9c4b155] |変数名|1要素のバイト数|符号|型|h |char1,char2,char3,char4|1|あり|整数| |uchar1,uchar2,uchar3,uchar4|1|なし|整数| |short1,short2,short3,short4|2|あり|整数| |ushort1,ushort2,ushort3,ushort4|2|なし|整数| |int1,int2,int3,int4|4|あり|整数| |uint1,uint2,uint3,uint4|4|なし|整数| |long1,long2,long3,long4|4 or 8(プラットフォーム依存)|あり|整数| |ulong1,ulong2,ulong3,ulong4|4 or 8(プラットフォーム依存)|なし|整数| |loglong1,longlong2|8|あり|整数| |float1,float2,float3,float4|4|あり|浮動小数点数| |double1,double2|8|あり|浮動小数点数| **dim3 [#y07a23d0] 上記の他に特別な型として,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) {}