gpt4 book ai didi

c - 将 __m256i 存储为整数

转载 作者:太空宇宙 更新时间:2023-11-04 12:46:15 25 4
gpt4 key购买 nike

如何将 __m256i 数据类型存储为整数?

我知道对于花车有:

_mm256_store_ps(float *a, __m256 b)

第一个参数是输出数组。

对于我只找到的整数:

_mm256_store_si256(__m256i *a, __m256i b)

其中两个参数都是 __m256i 数据类型。

做这样的事情是否足够:

int * X = (int*) _mm_malloc( N * sizeof (*X) ,32 );

(我将其用作函数的参数并且我想获取它的值)

内部函数:

__m256i * Xmmtype = (__m256i*) X;

//fill output
_mm256_store_si256( &Xmmtype[ i ] , T ); //T is __m256i

这样可以吗?

-----已更新 ----------------------

好吧,那如果我有呢:

__m256i T;

for ( y = 0; y < h; y++ )
{
for ( x = 0; x < w; x++ )
{
for ( int i = 0; i < N; i+=8 )
{
//calculate here the T

}

//write result
_mm256_store_si256( &Xmmtype[ x + y * w ] , T );


}

}

最佳答案

你所做的没问题,但你不需要创建一个临时指针 - 你可以直接应用强制转换,例如:

_mm256_store_si256( (__m256i *)X, T );

或:

_mm256_store_si256( (__m256i *)&X[i], T );


根据您问题的最新编辑进行更新:

看起来您正在以不符合 AVX 对齐要求的方式对 X 进行索引,即 X[i] 不保证为 32 字节对齐,因此你应该使用未对齐的商店:

_mm256_storeu_si256( (__m256i *)&X[i], T );

关于c - 将 __m256i 存储为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51404863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com