相关疑难解决方法(0)

如何分配16byte内存对齐数据

我试图在一段代码上实现SSE向量化,我需要将我的1D数组与16字节内存对齐.但是,我已经尝试了几种方法来分配16字节内存对齐数据,但它最终是4字节内存对齐.

我必须使用Intel icc编译器.这是我正在测试的示例代码:

  #include <stdio.h>
  #include <stdlib.h>

  void error(char *str)
  {
   printf("Error:%s\n",str);
   exit(-1);
  }

  int main()
  {
   int i;
   //float *A=NULL;
   float *A = (float*) memalign(16,20*sizeof(float));

   //align
   // if (posix_memalign((void **)&A, 16, 20*sizeof(void*)) != 0)
   //   error("Cannot align");

    for(i = 0; i < 20; i++)
       printf("&A[%d] = %p\n",i,&A[i]);

        free(A);

         return 0;
   }
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出:

 &A[0] = 0x11fe010
 &A[1] = 0x11fe014
 &A[2] = 0x11fe018
 &A[3] = 0x11fe01c
 &A[4] = 0x11fe020
 &A[5] = 0x11fe024
 &A[6] = 0x11fe028
 &A[7] = 0x11fe02c
 &A[8] = 0x11fe030 …
Run Code Online (Sandbox Code Playgroud)

c memory sse icc

12
推荐指数
2
解决办法
1万
查看次数

标签 统计

c ×1

icc ×1

memory ×1

sse ×1