- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
This might be a noob question, but is there a way to perform a byte swap between big and little endian on a __m512i vector without having to iterate through each value? I really want to avoid using unions, as they can be slow. I can't find any info in documentation or googling around, so hopefully somebody here can help me.
コピーされたリンク
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
I'm checking with our Developer. Stay tuned.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Developer's guidance is that vector byte swap is not available as there is no hardware support for it.
Let me know if you have additional questions.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Look at using _mm256_shuffle_epi8
This will work on AVX2, I haven't checked to see if this is supported on Phi. As long as the byte swaps do not cross 128-bit lanes, this will work for you. You will also have to check to see if this disturbs the high 256-bits. This will affect your strategy to perform 512-bit byte endian shuffle.
Jim Dempsey
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
you can read in the data to vector as byte, then use swizzle to swap the elements (bytes), then write back the vector. This only do 16 bytes at a time, though. Reading in full full 64 bytes and swap the bytes by shifts and bit or/and may actually be faster.
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
@Jim: Xeon Phi (Knight's Corner) doesn't support any MMX, SSE*, or AVX* flavors. So __mm256 instructions can't be used. Sorry
Charles
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
You could just write your own byte swap routine involving the bitwise logical and shift __m512i operations.
The relevant functions are listed under AVX-512... I didn't test it, but i guess they should also work on KNC. There are a lot of functions not listed under AVX-512, but still work on KNC...
http://software.intel.com/sites/landingpage/IntrinsicsGuide/
