memory-alignment

    2热度

    2回答

    比方说,我有这样的事情: class C { private: __m128i m0; __m128i m1; __m128i cm0; int s0; ... } 这可能会导致问题,因为M0,M1,和C 6-10都不能保证是对齐的16字节,允许对准相关的访问冲突。如果我绝对想要有私人的simd级别会员,我可以保证我的联盟,我应该怎么做?

    1热度

    1回答

    我已拨出对准32个字节双打的阵列 double *dst; posix_memalign((void**)&dst, 32, 4*sizeof(double)); 我后来用_mm256_store_pd(dst,q);和为什么一个段错误发生在这里的指令 vmovapd YMMWORD PTR [rdi],ymm0 得到偶尔的段错误?除了对齐之外,vmovapd是否会导致段错误?

    10热度

    1回答

    简短的问题是,如果我有一个函数需要两个向量。一个是输入,另一个是输出(没有别名)。我只能对其中一个,我应该选择哪一个? 较长的版本是,考虑功能, void func(size_t n, void *in, void *out) { __m256i *in256 = reinterpret_cast<__m256i *>(in); __m256i *out256 = reint

    4热度

    2回答

    我有一个C函数,它需要一个uint8_t *参数,它必须指向32位对齐的内存。是否有可能在C或C++或任何特定平台的宏中为参数添加一些修饰,以便编译器或链接器在构建时抛出错误(如果未按需要对齐)? 这里的想法是,我想保护功能,防止其他用户(或我在6个月内)使用不当。我知道如何调整我想传递给它的东西。我想确保没有人可以通过将错误的东西传递给它。 基于this answer,我想回答我的问题是“不”,

    0热度

    1回答

    我正在构建基于配备arm64 CPU的UltraScale + FPGA的数据采集系统。 数据通过DMA传输到RAM。在驱动程序中的DMA缓冲区如下保留: virt_buf[i] = dma_zalloc_coherent(&pdev->dev, BUF_SIZE, &phys_buf[i],GFP_KERNEL); 在驾驶员MMAP功能,映射到用户空间通过以下方式完成: #ifdef ARC

    0热度

    1回答

    我试图在XCode6.4中构建我的Windows源代码。但找到对齐问题。 我设置了8个字节的“#pragma pack(x)”作为默认的窗口对齐方式,但似乎不起作用。 的XCode只接受1,2,4,但如果设置为8,仍具有相同4. 这是错误的XCode? 以下是我的代码。 #pragma pack(8) typedef struct { char cField; double

    0热度

    2回答

    我最初是从我的平板电脑写下这个问题的,并采取了很多快捷方式,因此我认为最终会导致读者和/或试图回答问题的人感到困惑。 我不是要求解决我最初开始的问题。如果你真的想要后面的故事阅读下一段,否则跳过它。 带来的是一些旧代码在{struct, data, struct, data, ...}的数据阵列上运行,其中每个data具有任意长度。代码通过指针访问每个结构,当我们切换到gcc时,由于访问错误,它在

    2热度

    1回答

    引用从Kernighan和Ritchie代码(第2版第188页), static Header* morecore(unsigned nu) { char *cp, *sbrk(int); Header* up; if (nu < NALLOC) nu = NALLOC; cp = sbrk(nu * sizeof(Header));

    1热度

    1回答

    是否可以告诉编译器vector[index]对于特定索引有128位内存对齐方式? 或者,我们不能用索引做到这一点,并且必须用指针来做到这一点?

    1热度

    2回答

    我正在阅读一本关于编译器设计和实现的书。在关于存储管理的部分,作者写了一个函数来分配内存。他希望函数适合任何类型。他声称下面的联盟的大小是主机上的最小对齐。我不太明白这是什么意思。从这本书中:“......它的领域是那些最有可能具有最严格的对齐要求的领域。” union align { long l; char *p; double d; int (*f)