Skip to content

Conversation

@bosilca
Copy link
Member

@bosilca bosilca commented Jan 13, 2021

As discussed in #8334 the intensive use of AVX2 and AVX512 will lead to a
significant frequency scaling, with drastic impact on application performance.
Until a better way to prevent this come up, we decided to artificially disable
support for AVX2 and AVX512.

The support for AVX2 and AVX512 can be enabled by users via the corresponding
MCA parameter (op_avx_support).

Signed-off-by: George Bosilca [email protected]

As discussed in open-mpi#8334 the intensive use of AVX2 and AVX512 will lead to a
significant frequency scaling, with drastic impact on application performance.
Until a better way to prevent this come up, we decided to artificially disable
support for AVX2 and AVX512.

The support for AVX2 and AVX512 can be enabled by users via the corresponding
MCA parameter (op_avx_support).

Signed-off-by: George Bosilca <[email protected]>
MCA enums make it easier for users to see/set MCA flag values.  For
example, ompi_output shows all the valid values:

```
$ ompi_info --all --parsable | grep _avx_
mca:op:avx:param:op_avx_available:value:SSE,SSE2,SSE3,SSE4.1,AVX
mca:op:avx:param:op_avx_available:source:default
mca:op:avx:param:op_avx_available:status:read-only
mca:op:avx:param:op_avx_available:level:4
mca:op:avx:param:op_avx_available:help:Level of SSE/MMX/AVX support available
mca:op:avx:param:op_avx_available:enumerator:value:1:SSE
mca:op:avx:param:op_avx_available:enumerator:value:2:SSE2
mca:op:avx:param:op_avx_available:enumerator:value:4:SSE3
mca:op:avx:param:op_avx_available:enumerator:value:8:SSE4.1
mca:op:avx:param:op_avx_available:enumerator:value:16:AVX
mca:op:avx:param:op_avx_available:enumerator:value:32:AVX2
mca:op:avx:param:op_avx_available:enumerator:value:256:AVX512F
mca:op:avx:param:op_avx_available:enumerator:value:512:AVX512BW
mca:op:avx:param:op_avx_available:deprecated:no
mca:op:avx:param:op_avx_available:type:int
mca:op:avx:param:op_avx_available:disabled:false
mca:op:avx:param:op_avx_support:value:SSE,SSE2,SSE3,SSE4.1,AVX
mca:op:avx:param:op_avx_support:source:default
mca:op:avx:param:op_avx_support:status:writeable
mca:op:avx:param:op_avx_support:level:4
mca:op:avx:param:op_avx_support:help:Level of SSE/MMX/AVX support to be used, capped by the local architecture capabilities
mca:op:avx:param:op_avx_support:enumerator:value:1:SSE
mca:op:avx:param:op_avx_support:enumerator:value:2:SSE2
mca:op:avx:param:op_avx_support:enumerator:value:4:SSE3
mca:op:avx:param:op_avx_support:enumerator:value:8:SSE4.1
mca:op:avx:param:op_avx_support:enumerator:value:16:AVX
mca:op:avx:param:op_avx_support:enumerator:value:32:AVX2
mca:op:avx:param:op_avx_support:enumerator:value:256:AVX512F
mca:op:avx:param:op_avx_support:enumerator:value:512:AVX512BW
mca:op:avx:param:op_avx_support:deprecated:no
mca:op:avx:param:op_avx_support:type:int
mca:op:avx:param:op_avx_support:disabled:false
```

Signed-off-by: Jeff Squyres <[email protected]>
@jsquyres
Copy link
Member

jsquyres commented Feb 2, 2021

@bosilca I pushed two additional commits; let's talk through these today on the call.

@bosilca bosilca closed this Feb 2, 2021
@bosilca
Copy link
Member Author

bosilca commented Feb 2, 2021

Based on the fact that we were unable to get a good understanding on when and what to restrict, we decided to close this PR without merging, leaving the AVX support on everywhere. @jsquyres commits adding the available and supported flags, and the user-friendly use of the MCA enum flags will have their own PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants