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)