Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AVX-512BW functions #104

Open
nemequ opened this issue Mar 10, 2020 · 12 comments
Open

AVX-512BW functions #104

nemequ opened this issue Mar 10, 2020 · 12 comments
Labels
good first issue This is perfect if you're new to the project and looking to help. GSoC/Outreachy-ideas Ideas for Google Summer of Code or Outreachy projects help wanted We lack either the expertise or time for this. Basically, "patches welcome". instruction-set-support Implementing new SIMD ISA extensions portably

Comments

@nemequ
Copy link
Member

nemequ commented Mar 10, 2020

@nemequ nemequ added help wanted We lack either the expertise or time for this. Basically, "patches welcome". instruction-set-support Implementing new SIMD ISA extensions portably good first issue This is perfect if you're new to the project and looking to help. GSoC/Outreachy-ideas Ideas for Google Summer of Code or Outreachy projects labels Mar 10, 2020
@karangovil
Copy link

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

@mr-c
Copy link
Collaborator

mr-c commented May 15, 2020

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.

@nemequ
Copy link
Member Author

nemequ commented May 15, 2020

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.

@karangovil
Copy link

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!

@rahulgo
Copy link

rahulgo commented Jun 26, 2020

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

@mr-c
Copy link
Collaborator

mr-c commented Jun 26, 2020

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

@rahulgo
Copy link

rahulgo commented Jun 26, 2020

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

@nemequ
Copy link
Member Author

nemequ commented Jun 26, 2020

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.

@YigitAras
Copy link

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!

@nemequ
Copy link
Member Author

nemequ commented Sep 13, 2020

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 :)

@christianparpart
Copy link

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 :)

@mr-c
Copy link
Collaborator

mr-c commented Mar 18, 2024

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue This is perfect if you're new to the project and looking to help. GSoC/Outreachy-ideas Ideas for Google Summer of Code or Outreachy projects help wanted We lack either the expertise or time for this. Basically, "patches welcome". instruction-set-support Implementing new SIMD ISA extensions portably
Projects
None yet
Development

No branches or pull requests

6 participants