在AVX/AVX2中,我只能找到_mm256_stream_load_si256()
,這是__m256i
。有沒有辦法流式加載__m256d
,爲什麼? (我想加載它沒有污染CPU緩存)什麼是非時間流媒體加載內在(_mm256_stream_load_si256)的浮點(__m256d)版本?
是否有任何障礙做下列(積極鑄造)?
__m256d *pDest = /* ... */;
__m256d *pSrc = /* ... */;
/* ... */
const __m256i iWeight = _mm256_stream_load_si256(reinterpret_cast<const __m256i*>(pSrc));
const __m256d prior = _mm256_div_pd(*reinterpret_cast<const __m256d*>(&iWeight), divisor);
_mm256_stream_pd(reinterpret_cast<double*>(pDest), prior);
__m256d和__m256i有什麼區別? –
@MarekVitek,'__m256d'包含4個「雙」。 '__m256i'包含32 uint8_t' /'int8_t',16'uint16_t' /'int16_t',8'uint32_t' /'int32_t'和4'uint64_t' /'int64_t'的聯合。所以它們都是32字節長,佔用1個YMM寄存器。 –