[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v4] x86/cpuid: AVX-512 Feature Detection



> > >>>>>>>>>> First of all - please don't top post.
> > >>>>>>>>>>
> > >>>>>>>>>>> What about remove the dependency between AVX2 and AVX512F
> > >>>>>>>> ( AVX2:
> > >>>>>>>>>> [AVX512F], ) ?
> > >>>>>>>>>>
> > >>>>>>>>>> Yes, that's what I think we want, but we need Andrew's agreement 
> > >>>>>>>>>> here.
> > >>>>>>>>>>
> > >>>>>>>>> Hi Andrew,  what is your opinion ?
> > >>>>>>>> You are in a better position to answer than me.
> > >>>>>>>>
> > >>>>>>>> For a specific instruction which may be VEX and EVEX encoded,
> > >>>>>>>> is the circuitry for a specific instruction shared, or
> > >>>>>>>> discrete?  Is there a plausible future where you might
> > >>>>>>>> support only the EVEX variant of an instruction, and not the VEX 
> > >>>>>>>> variant?
> > >>>>>>>>
> > >>>>>>>> These dependences are about what may be reasonably assumed
> > >>>>>>>> about the way the environment is structured.  It doesn't look
> > >>>>>>>> reasonable to advertise an AVX512 environment to guests while
> > >>>>>>>> at the same time stating that AVX2 is not present.  If this
> > >>>>>>>> is correct, then the dependency
> > >>>>> should stay.
> > >>>>>>>> If Intel plausibly things it might release hardware with
> > >>>>>>>> !AVX2 but AVX512, then the dependency should be dropped.
> > >>>>>>> Regarding the dependency between AVX2 and AVX512F, I have ask
> > >>>>>>> some hardware
> > >>>>> architecture engineer.
> > >>>>>>> AVX512 is a superset of AVX2, the most important item being
> > >>>>>>> the state. If
> > >>>>> the state for AVX2 isn't enabled (in XCR0), then AVX512
> > >>>>>> also can't function.
> > >>>>>>> So if we want to use AVX512, AVX2 must be supported and enabled.
> > >>>>>>> The
> > >>>>> dependence between AVX512F and AVX2 may need be
> > >>>>>> reserved.
> > >>>>>>
> > >>>>>> Ok, so AVX512 strictly depends on AVX2.
> > >>>>>>
> > >>>>>> In which case, the python code was correct.  The meaning of the
> > >>>>>> key/value
> > >>>>> relationship is "if the feature in the key is not present, all
> > >>>>>> features in the value must also be disabled".
> > >>>>> Hi jan, what is your opinion?
> > >>>> There's no opinion to be had here, according to your earlier reply.
> > >>>> I do,
> > >>> however, continue to question that model: State and
> > >>>> instruction set are independent items. Of course YMM state is a
> > >>>> prereq to
> > >>> ZMM state, but I do not buy AVX2 insn support being a
> > >>>> prereq to AVX-512 insns. Yet to me the AVX2 and AVX-512F feature
> > >>>> flags solely
> > >>> represent the instructions, while the XSTATE leaf bits
> > >>>> represent the states.
> > >>>>
> > >>> Hi jan,
> > >>>     I get some information from hardware colleague.  There is no
> > >>> dependence about AVX512 instructions and AVX2 instructions. It is
> > >>> also not states in
> > > the
> > >>> official document.
> > >> As I had assumed.
> > >>
> > >>>    But I want to know the meaning of the dependence "AVX2:
> > >>> [AVX512F]"  in "gen-cpuid.py" file.
> > >>>    If it is the feature dependence, I think the dependence between
> > >>> AVX512 and AVX2  may need to add. As we talk before, Zmm is part of 
> > >>> AVX512 feature.
> > >
> > >>> If the state for AVX2 isn't enabled (in XCR0), then AVX512 also
> > >>> can't function. Apart from that, there is no processors with
> > >>> AVX512 without AVX2 currently and it is safe to treat AVX2 as part
> > >>> of the thermometer leading to
> > >
> > >>> AVX512. Regarding if will have a cpu support avx512 without avx2
> > >>> in future, it is really hard to say.
> > >>>     If it is the instructions dependence, I have no idea to delete
> > >>> this dependence in "gen-cpuid.py" file.
> > >>>     So, I want to know your advice.
> > >> Well, the main issue here is that we have no feature flag
> > >> representation for the xstate bits. If we had, the relevant parts
> > >> of the dependencies should look like
> > >>
> > >>  XSTATE_YMM: [AVX, XSTATE_ZMM]
> > >>  AVX: [AVX2]
> > >>  XSTATE_ZMM: [AVX512F]
> > >>  AVX512F: [AVX512CD, ...]
> > >>
> > >> But in their absence I guess keeping the AVX2 dependency as you
> > >> have it is the only reasonable approach. Just that I'd like it to
> > >> be accompanied by a comment explaining that this isn't the actual
> > >> dependency (so that if XSTATE feature flags got introduced later,
> > >> it would be clear how to adjust those parts).
> > >>
> > >> Andrew - I keep forgetting why you think having such XSTATE_*
> > >> feature flags is not appropriate.
> > >
> > > This is all about providing a plausible cpuid layout to a guest.
> > >
> > > It is not plausible that we will ever see a processor with e.g.
> > > AVX512F but not XSTATE_ZMM.
> >
> > This is a somewhat bogus argument considering we have
> >
> >         FXSR: [FFXSR, SSE],
> >
> > which, as you certainly realize, is slightly wrong nowadays:
> > XSTATE_XMM would suffice as a prereq, without any FXSR. (But I
> > certainly realize that lack of FXSR is unlikely, as that's considered
> > part of the base x86-64 architecture, and I also realize that
> > expressing alternative prereqs would make the deep dependency
> > generation logic more complicated.)
> >
> 
> According your advice, I change the comment of "AVX2: [AVX512F]," as below.
> If the description is not accurately enough, please help do some corrected, 
> thank you.
> 
> diff --git a/xen/tools/gen-cpuid.py b/xen/tools/gen-cpuid.py index 
> 7c45eca..e8b64ce 100755
> --- a/xen/tools/gen-cpuid.py
> +++ b/xen/tools/gen-cpuid.py
> @@ -243,6 +243,17 @@ def crunch_numbers(state):
>          # AMD K6-2+ and K6-III processors shipped with 3DNow+, beyond the
>          # standard 3DNow in the earlier K6 processors.
>          _3DNOW: [_3DNOWEXT],
> +
> +        # This is just the dependency between AVX512 and AVX2 of XSTATE 
> feature flag.
> +        # If want to use AVX512, AVX2 must be supported and enabled.
> +        AVX2: [AVX512F],
> +
> +        # AVX512F is taken to mean hardware support for EVEX encoded 
> instructions,
> +        # 512bit registers, and the instructions themselves. All further 
> AVX512 features
> +        # are built on top of AVX512F
> +        AVX512F: [AVX512DQ, AVX512IFMA, AVX512PF, AVX512ER, AVX512CD,
> +                    AVX512BW, AVX512VL, AVX512VBMI],
>      }
> 
>      deep_features = tuple(sorted(deps.keys()))
> 

Hi jan,
    What do you think about modify as above.  If need any corrected?

Thanks,
Luwei Kang


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.