simde
simde copied to clipboard
AVX-512BW functions
https://software.intel.com/sites/landingpage/IntrinsicsGuide/#avx512techs=AVX512BW
For progress, see https://github.com/simd-everywhere/implementation-status/blob/main/x86.md#avx512bw
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
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.
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.
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!
Hi, is this still open? Would like to take a crack at this!
Hello @rahulgo , you would be very welcome to contribute implementations of any of the unchecked functions, yep!
@mr-c Thanks! I am not a very experienced programmer, can you suggest a relatively easy function to implement as a starting point?
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.
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!
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 :)
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 :)
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