给定一个 CUDA 向量类型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;}
在第七行,我试图将常量内存中的所有 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: