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

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



> >>> On 10.08.16 at 14:10, <andrew.cooper3@xxxxxxxxxx> wrote:
> > On 10/08/16 11:29, Jan Beulich wrote:
> >>>>> On 10.08.16 at 11:58, <luwei.kang@xxxxxxxxx> wrote:
> >>>>>>> On 03.08.16 at 03:32, <luwei.kang@xxxxxxxxx> wrote:
> >>>>>>  On 25/07/16 07:09, Kang, Luwei wrote:
> >>>>>>>>>> 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()))



_______________________________________________
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®.