simde icon indicating copy to clipboard operation
simde copied to clipboard

AVX-512BW functions

Open nemequ opened this issue 4 years ago • 12 comments

https://software.intel.com/sites/landingpage/IntrinsicsGuide/#avx512techs=AVX512BW

For progress, see https://github.com/simd-everywhere/implementation-status/blob/main/x86.md#avx512bw

nemequ avatar Mar 10 '20 00:03 nemequ

Hello, I would like to contribute to this project by implementing functions. Would this issue be a good place to start? I noticed that there are several active contributors so I want to make sure I don't end up working on same functions as another contributor.

Thanks, -kg

karangovil avatar May 15 '20 16:05 karangovil

Welcome @karangovil ! I don't think anyone is targeting 512BW, except as it overlaps with other parts. Feel free to grab any of the un-checked boxes.

mr-c avatar May 15 '20 16:05 mr-c

Welcome @karangovil, thanks for your interest in contributing!

I agree with Michael, I just wanted to add that I think the _mm512_min_* and _mm512_max_ functions would probably be the easiest place to start if you want a gentle introduction to the project. There is an Implementing a New Function document in the wiki that might be helpful if you haven't already seen it.

If you have any questions please don't hesitate to ask either here, in the chat room, on the mailing list, or I'm available via e-mail.

nemequ avatar May 15 '20 16:05 nemequ

Thanks @mr-c and @nemequ for your supportive comments and suggestions. I will start with the _mm512_min_* and_mm512_max_. Looking forward to contributing!

karangovil avatar May 15 '20 17:05 karangovil

Hi, is this still open? Would like to take a crack at this!

rahulgo avatar Jun 26 '20 11:06 rahulgo

Hello @rahulgo , you would be very welcome to contribute implementations of any of the unchecked functions, yep!

mr-c avatar Jun 26 '20 11:06 mr-c

@mr-c Thanks! I am not a very experienced programmer, can you suggest a relatively easy function to implement as a starting point?

rahulgo avatar Jun 26 '20 13:06 rahulgo

Hi @rahulgo, thanks for your interest in contributing!

Unfortunately it looks like most of the most straightforward functions are already implemented, but there are a few good first functions left, such as _mm512_sllv_epi16, _mm512_srlv_epi16, and _mm512_srav_epi16.

Once the main function has been implemented, adding the mask and maskz variants is quite easy, too; if you take a look at a few you'll notice they all follow the same basic pattern, so just copying, pasting, and changing a function name should be enough for the implementation, then you just need to generate a test vector.

If you run into trouble you might want to stop by our chat room and hopefully someone can give you a hand.

Do you have access to AVX-512BW hardware to test on? You can use the Intel SDE, but it's a bit slow. If you have to go that route, please not that you can specify which function you want to test as an argument to the run-tests executable. For example: path/to/sde64 -- ./run-tests /x86/avx512bw/mm512_sllv_epi16.

nemequ avatar Jun 26 '20 15:06 nemequ

Hello ! Is this still open ? I wanted to contribute to the project, was thinking maybe I can try implementing some of the functions. From what I understand unchecked ones are missing. Are there any that you would suggest someone to start with ? Thanks!

YigitAras avatar Sep 12 '20 22:09 YigitAras

Hello ! Is this still open ? I wanted to contribute to the project, was thinking maybe I can try implementing some of the functions. From what I understand unchecked ones are missing. Are there any that you would suggest someone to start with ? Thanks!

Hi, thanks for your interested in contributing :) Yes, this issue is still open.

Instead of one file per ISA extension (e.g., avx512bw.h, avx512f.h, avx512cd.h, etc.) we now have one one file per function family. For example, all the AVX-512 add functions are in simde/x86/avx512/add.h, including the ones from AVX-512F, AVX-512BW, and AVX-512VL. That should make it a bit easier to see how things fit together.

I think the div functions would probably be a good place to start; they should be pretty straightforward, and only the floating point ones are currently done so there are plently more.

If you have any questions please let me know, I'm happy to help :)

nemequ avatar Sep 13 '20 06:09 nemequ

Hey guys. I'm actually really happy to have found you. I'd like to make use simd for our https://github.com/contour-terminal/libunicode 's implementation for text scanning. There I'd need AVX512BW. Currently we only support basic SSE2 and std::simd doesn't seem to support runtime detection, so I need to look over the fence a bit and then found you :)

christianparpart avatar Mar 17 '24 21:03 christianparpart

Hello @christianparpart ! Do you have a list of functions?

For AVX512BW, SIMDe has portable implementations for 337 of 790 (42.66%) as of version 0.8.0 https://github.com/simd-everywhere/implementation-status/blob/main/x86.md#avx512bw

mr-c avatar Mar 18 '24 11:03 mr-c