CUDA vector type が与えられたint4
場合、定数メモリから 128 ビットのデータをロードするにはどうすればよいですか。
これはうまくいかないようです:
#include <stdio.h>
#include <cuda.h>
__constant__ int constant_mem[4];
__global__ void kernel(){
int4 vec;
vec = constant_mem[0];
}
int main(void){return 0;}
7 行目では、定数メモリ内の 4 つの整数値すべてを 128 ビットのベクトル型にロードしようとしています。この操作により、次のコンパイル エラーが発生します。
vectest.cu(7): error: no operator "=" matches these operands
operand types are: int4 = int
また、次のように、キャストせずにベクター型に直接アクセスすることは可能ですか?
int data = vec[0];
PTX アセンブリの switch ステートメント:
@%p1 bra BB1_55;
setp.eq.s32 %p26, %r1, 1;
@%p26 bra BB1_54;
setp.eq.s32 %p27, %r1, 2;
@%p27 bra BB1_53;
setp.ne.s32 %p28, %r1, 3;
@%p28 bra BB1_55;
mov.u32 %r961, %r61;
bra.uni BB1_56;
BB1_53:
mov.u32 %r961, %r60;
bra.uni BB1_56;
BB1_54:
mov.u32 %r961, %r59;
bra.uni BB1_56;
BB1_55:
mov.u32 %r961, %r58;
BB1_56: