CUDA是否支持未对齐的加载和存储?可以从地址addr中天真地读取大小为k字节的(单个)值,使得addr%k!= 0?
更具体地说,将访问如下:
unsigned* p = (unsigned*) ((char *) my_aligned_ptr + 1); *p = 0xAABBCCDD;
或
unsigned* q = (unsigned*) ((char *) my_aligned_ptr + 11); unsigned x = *q;
有预期的效果吗?
答案 0 :(得分:1)
尽管CUDA编程指南的Size and Alignment Requirement subsection有些含糊不清,但答案是不,不支持未对齐访问,句点。代码将编译但结果将(可能)就好像使用了一些附近的对齐地址。或者以其他方式未定义。
@tera在this answer中有解决方法。