-
Notifications
You must be signed in to change notification settings - Fork 389
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
prov/psm3: illegal instruction #10589
Comments
This only partially solved the issue. Because of all the attribute ((constructor)) used in prov/psm3, this test is not enough !
|
One way is to put the check in the "_init" function which is called before all the "constructor" functions. |
I'm not sure you can prevent constructor from running. |
The use of constructors also causes issues when statically linking libfabric into your app or library #8979. It would be great if the code could be delayed until after provider selection. |
The most annoying thing in there is that the only reason to force AVX down everyone's throat is (see #8933):
At least the only one I've seen. SSE4.2 really does bring some support for CRC computation (although some legacy code for really old HW would be easy to add and handle at runtime). The rest is compiler optimisation... And that should be the call of each user/packager/distro to build how they want for their use case: most portable, most optimized, or anything in between. For now, I've had to completely disable psm3 AVX[12] support in openSUSE/SLES builds because that's the only way to avoid breaking libfabric (whteher using psm3 or not) on all non AVX supporting systems. |
Hi @nmorey, A summary of the issue is that avx instruction set 'required' by psm3 is causing issues as init code (including constructors) are hitting these instructions before the check in psm3 code. Originally, it was written that only specific objects in psm3 would have this flag applied when compiling so that it would not pollute the other processes. It seems this logic is broken. I will work with my team to fix this. Hi @raffenet, As for the constructors, I will discuss with my team and see if we can remove them and merge the code into the init calls where possible. |
I'll repeat what I said in both issues and in an email to you: Half the software out there (HPC, video encoding, pretty much anything computational) can get better performances with the right mtune/march. However very very few have hard requirements on an instruction set.
Intel has made the choice for us here and it has proven yet again to cause issues. |
Similar issue to #8933
Running libfabric 1.22, I still hit the same issue (probably only now because we had a GCC update):
My best guess is that GCC added some unsupported vector instructions in some of the code called through PSMX3_INFO
I've tried a quick ad not too clean patch to check it out:
And this works.
I haven't checked v2.0.0 but I'm guessing it is broken there as well
The text was updated successfully, but these errors were encountered: