這個在previous question上搭載我關於將矢量的各個元素分散到不同的存儲位置(分散操作)。我的代碼會將很多數據存儲到內存中,而這些數據不會再「長時間」訪問。我想通過使用非時間提示指令來減少所有這些商店生成的緩存污染量。但是,我不能想出一個好辦法來做到這一點。這裏是我的代碼看起來像現在的總結:使用SSE/AVX打包的雙向量的部分非臨時存儲
__m256d src = ... // data
double *dst;
int dst_dist;
__m128d a = _mm256_extractf128_pd(src, 0);
__m128d b = _mm256_extractf128_pd(src, 1);
_mm_storel_pd(dst + 0*dst_dist, a);
_mm_storeh_pd(dst + 1*dst_dist, a);
_mm_storel_pd(dst + 2*dst_dist, b);
_mm_storeh_pd(dst + 3*dst_dist, b);
我想使用非暫時提示執行64位的商店,但似乎沒有成爲一種從做直接一個XMM寄存器。什麼是實現這一目標的最佳方式?
好想法。你和斯蒂芬的答案表明我需要重新思考我的算法結構。我可能一次寫很多零散的東西(我有兩種模式,一種是我一次寫8個64位的值,另一種是我寫16的值)。 –