simd 出现Unaligned exception
-
各位老师,我在做simd的时候有出现使用simd_set_floatv4可以,但simd_load会报出Unaligned exception的问题。
例如__thread_local float a_slave[256*34] __attribute__((aligned(16))); athread_get(PE_MODE, &host_a[0], &a_slave[0], 256*34*sizeof(float), (void*)&get_reply, 0, 0, 0); while (get_reply != 1); floatv4 p_a; p_a = simd_set_floatv4(a_slave[index], a_slave[index+1],a_slave[index +2],a_slave[index+3]);
是ok的。
但是floatv4 p_a; simd_load(p_a, &a_slave[index]);
和
floatv4 *p_a; p_a = (floatv4*)(&a_slave[index]);
都会报出Unaligned exception。
是什么原因呢? 是我对界属性设置写错了吗?
-
align可能没有用,最好打印一下&a_slave[index] ,是不是16字节对齐的
-
@parallel 您好,如果没有用的话,16字节对齐还可以用其他什么办法吗?
-
@Sam 自己做地址对齐,自己给指针附一个16字节对齐的地址