這裏有什麼問題?當我運行該程序時,它說,Segmentation Fault (Core Dumped)
。 我已經使用了一些SIMD命令。使用SIMD命令的程序段分段錯誤
float function (Point p1, Point p2, int dim)
{
int k;
float result=0.0;
float *p3;
p3 = (float*) malloc (16);
k=dim%4;
__m128 *v_p1 = (__m128*)p1.coord;
__m128 *v_p2 = (__m128*)p2.coord;
__m128 *v_p3 = (__m128*)p3;
for (int i=0; i<dim/4; i++){
*v_p3= _mm_sub_ps(*v_p1,*v_p2);
}
for(int i=0; i<dim; i++){
result+=p3[i];
}
return(result);
}
我的猜測是,'_mm_sub_ps'需要'16 byte'調整後的數據和'P1 .coord','p2.coord'和'p3'沒有正確對齊。因此,如果您通過應該正確對齊的值賦予'__m128'變量,並使用那些我敢打賭的問題,那麼問題就會消失。 – 2013-04-25 15:22:37
嘗試使用** gdb **進行調試。 – lucasmrod 2013-04-25 15:37:25
不涉及故障:似乎第一個循環一次又一次地執行相同的數據 – MBo 2013-04-25 15:45:05