I added model 71 to cpuid.c as a Broadwell. The other models I have left
out for now, as I don't find sufficient evidence for those identifications
just yet. Perhaps Intel has reserved them for future chips. When people
start reporting to us that they have chips in these families, we'll take a
look at what they are and add them as appropriate.

On 21 February 2017 at 11:11, Bill Hart <[email protected]> wrote:

> I've opened [1] for the haswell bmi2 issue. I doubt it will be dealt with
> in this release. As far as I can tell, such machines are vanishingly rare.
>
> Bill.
>
> [1] https://github.com/wbhart/mpir/issues/209
>
> On 21 February 2017 at 11:03, Bill Hart <[email protected]>
> wrote:
>
>> Whoops, looks like I was wrong about us correctly handling Haswell
>> without BMI2. We handle Skylake correctly, but Haswell we don't check for
>> BMI2.
>>
>> It looks like the Haswell directory has been divided into haswell and
>> haswell/avx, which is probably intended for this distinction, but I think
>> we decided to wait and see if anyone actually had one of these machines
>> before we panicked too much.
>>
>> I'll have a think about this.
>>
>> On 21 February 2017 at 10:53, Bill Hart <[email protected]>
>> wrote:
>>
>>> I have just been contacted off list by a very experienced assembly
>>> expert who would like to help develop Broadwell assembly optimisations,
>>> guided by your experiments (as far as I know, he doesn't actually have a
>>> Broadwell machine).
>>>
>>> If you are ok with it, I could share your email with him so that he can
>>> communicate with you off list. Would you be up for working with him on this?
>>>
>>> Bill.
>>>
>>> On 21 February 2017 at 09:05, Bill Hart <[email protected]>
>>> wrote:
>>>
>>>>
>>>>
>>>> On 21 February 2017 at 00:35, <[email protected]> wrote:
>>>>
>>>>> Hello Bill,
>>>>>
>>>>> I can report that both of my systems are now correctly detected.
>>>>> Thank you for the fix!
>>>>>
>>>>> I also noticed that there were a couple of other missing processor
>>>>> models when compared with GMP mpn/x86_64/fat/fat.c: (the * star values are
>>>>> missing in MPIR)
>>>>> Broadwell:
>>>>> 0x3d=61
>>>>> 0x47=71 *
>>>>> 0x4f=79
>>>>> 0x56=86 *
>>>>> Skylake:
>>>>> 0x4e=78
>>>>> 0x55=85 *
>>>>> 0x5e=94
>>>>> Kabylake:
>>>>> 0x8e=142 *
>>>>> 0x9e=158 *
>>>>> There was a word of warning in the GMP source about some Haswell's not
>>>>> supporting BMI2, and so they treated those as Sandybridges.  I'm not sure
>>>>> how you want to handle this, but I wanted to make sure I passed the 
>>>>> warning
>>>>> on to you.
>>>>>
>>>>
>>>> Thanks, I will look into the models we are missing. We have no support
>>>> for Kaby Lake at this point. We are aware of the crippled Haswells and
>>>> handle those I believe.
>>>>
>>>>
>>>>>
>>>>> I ran the speed program, but I do not see how to "choose different
>>>>> assembly files".  Do I have to build different speed programs with
>>>>> different assembly files linked in?
>>>>
>>>>
>>>> It only uses the assembly files currently linked into MPIR. You have to
>>>> put different files in and rebuild.
>>>>
>>>>
>>>>>   Is this an option passed to "make speed"?  Do various gmp-mparam.h
>>>>> files need to be copied to a specific location before "make speed" to
>>>>> create a different speed binary?
>>>>
>>>>
>>>> gmp-mparam.h has no effect on speed.
>>>>
>>>>
>>>>> Once I'm past this step, I believe I can figure out the rest by
>>>>> writing a script to automate the data gathering.
>>>>>
>>>>> What sizes are of interest when running these tests? 1-100, 1-1000,
>>>>> 1-10000, etc?
>>>>
>>>>
>>>> Typically 1-100 or 1-1000 is of interest.
>>>>
>>>>
>>>>> Can a given test be faster with one assembly file at one size, but be
>>>>> faster with a different assembly file at a larger size?
>>>>
>>>>
>>>> Yes, sometimes a stall can slow down the processor from some size on.
>>>> Anything can happen. The only way to get it optimal is to wrote new
>>>> assembly for that particular CPU after analysing stalls and performance
>>>> counters.
>>>>
>>>>
>>>>> When I gather this data, would you like a copy of it?
>>>>
>>>>
>>>> No. I don't have time to do anything with it.
>>>>
>>>>
>>>>> Perhaps in a csv file?
>>>>>
>>>>> BTW, when I run the speed program as is, right now, it gives results
>>>>> similar to the following:
>>>>>
>>>>> $ ./speed -s 10-20 -t 5 mpz_add
>>>>> overhead 0.000000004 secs, precision 1000000 units of 8.33e-10 secs,
>>>>> CPU freq 1200.00 MHz
>>>>>               mpz_add
>>>>> 10        0.000000025
>>>>> 15        0.000000031
>>>>> 20        0.000000033
>>>>>
>>>>> $ ./speed -s 10-20 -t 5 mpn_sqrtrem
>>>>> overhead 0.000000004 secs, precision 1000000 units of 8.33e-10 secs,
>>>>> CPU freq 1200.00 MHz
>>>>>           mpn_sqrtrem
>>>>> 10        0.000000717
>>>>> 15        0.000000900
>>>>> 20        0.000001129
>>>>>
>>>>> Are there any specific options you would like me to use when running
>>>>> these speed tests and gathering results?
>>>>>
>>>>
>>>> No. But typically I use -t 1 because I want to be able to analyse all
>>>> the data.
>>>>
>>>> You might also find mpir_bench_two useful (see our website). Note that
>>>> you'll need to run speed multiple times, and keep an eye on the reported
>>>> CPU frequency. Timings vary a lot.
>>>>
>>>> Also, please only use these tools on Linux. Windows is not stable
>>>> enough to get meaningful timings. Good luck!
>>>>
>>>> Bill.
>>>>
>>>>
>>>>>
>>>>> -David C.
>>>>>
>>>>> On 2/20/2017 10:09 AM, 'Bill Hart' via mpir-devel wrote:
>>>>>
>>>>>> I have issued an alpha3 which supports your particular Broadwell
>>>>>> chip, which was
>>>>>> a Family we weren't aware of. Can you verify that it is now detected
>>>>>> correctly.
>>>>>>
>>>>>> As for optimising for Broadwell, if you are interested, we'd be happy
>>>>>> to have
>>>>>> the help. I've added details to the relevant ticket [1] to explain
>>>>>> what would
>>>>>> need to be done. But it's not for the faint hearted!
>>>>>>
>>>>>> The speed program mentioned that can be built by checking out MPIR
>>>>>> from GitHub,
>>>>>> configuring MPIR and then doing make speed. To run the speed program,
>>>>>> type
>>>>>> ./speed. It explains how to use itself. This is not something
>>>>>> automatic; there's
>>>>>> considerable work involved.
>>>>>>
>>>>>> Bill.
>>>>>>
>>>>>> [1] https://github.com/wbhart/mpir/issues/198
>>>>>>
>>>>>> On 18 February 2017 at 20:24, <[email protected]
>>>>>> <mailto:[email protected]>> wrote:
>>>>>>
>>>>>>     Hello Bill,
>>>>>>
>>>>>>     I have two identical Broadwell computers, except that one runs
>>>>>> Windows 7 Pro
>>>>>>     x64 and the other runs Linux x64 (based on CentOS 6.7).  The
>>>>>> processor in
>>>>>>     both is an Intel Xeon E5-2687W v4.  I did 3 different
>>>>>> configures/tunes on
>>>>>>     each system, in 3 different directories so there would be no cross
>>>>>>     contamination.  Configure originally chose k8 for both systems.
>>>>>> The
>>>>>>     commands I ran were:
>>>>>>     ===================
>>>>>>     On Windows:
>>>>>>     ./configure --enable-gmpcompat --disable-shared
>>>>>>     ./configure --enable-gmpcompat --disable-shared
>>>>>> --build=haswell-w64-mingw32
>>>>>>     ./configure --enable-gmpcompat --disable-shared
>>>>>> --build=broadwell-w64-mingw32
>>>>>>     make -j4
>>>>>>     make check
>>>>>>     cd tune
>>>>>>     make tune
>>>>>>
>>>>>>     Both make and make check completed successfully for all 3
>>>>>> builds.  However,
>>>>>>     all 3 tune programs ended up crashing.  I'm not sure why, but I'm
>>>>>> including
>>>>>>     the screen output in case you can see what the problem was.
>>>>>>
>>>>>>     ===================
>>>>>>     On Linux:
>>>>>>     ./configure --enable-gmpcompat --disable-shared
>>>>>>     ./configure --enable-gmpcompat --disable-shared
>>>>>>     --build=haswell-unknown-linux-gnu
>>>>>>     ./configure --enable-gmpcompat --disable-shared
>>>>>>     --build=broadwell-unknown-linux-gnu
>>>>>>     make -j4
>>>>>>     make check
>>>>>>     cd tune
>>>>>>     make tune
>>>>>>
>>>>>>     Both make and make check completed successfully for all 3
>>>>>> builds.  On Linux
>>>>>>     all 3 tune programs completed successfully.
>>>>>>     ===================
>>>>>>
>>>>>>     All together I'm including 13 text files, the 6 config.log files,
>>>>>> the 6 tune
>>>>>>     screen outputs, and the "cat /proc/cpuinfo" from my Linux
>>>>>> computer.  I'm
>>>>>>     putting them in a zip file, but if this doesn't make it to the
>>>>>> mailing list,
>>>>>>     I can resend with all 13 text files directly attached.
>>>>>>
>>>>>>     Also, I see that you mentioned you would like some tests run on
>>>>>> different
>>>>>>     assembly files to see which will run faster on Broadwell.  Could
>>>>>> you let me
>>>>>>     know what tests you would like me to run, and also how to run
>>>>>> these tests.
>>>>>>     I'd be happy to help if I can.  I would personally like to see
>>>>>> Broadwell
>>>>>>     supported in this release, but I know that will take a lot of
>>>>>> work.  Let me
>>>>>>     know if I can help or if there is any other information I can
>>>>>> provide.
>>>>>>
>>>>>>     -David C.
>>>>>>
>>>>>>     On 2/14/2017 4:16 AM, 'Bill Hart' via mpir-devel wrote:
>>>>>>
>>>>>>         It looks like you configured your broadwell as a generic
>>>>>> x86_64 instead
>>>>>>         of as a
>>>>>>         haswell (as per your patch). This means that it wasn't using
>>>>>> anything
>>>>>>         other than
>>>>>>         generic assembly for the build, and hence the tuning values
>>>>>> will be way off.
>>>>>>
>>>>>>         Perhaps you can force it to build as a haswell and then run
>>>>>> tune again.
>>>>>>
>>>>>>         On 14 February 2017 at 10:24, Isuru Fernando <
>>>>>> [email protected]
>>>>>>         <mailto:[email protected]>
>>>>>>         <mailto:[email protected] <mailto:[email protected]>>> wrote:
>>>>>>
>>>>>>              Attached are tuning values for nehalem, ivybridge,
>>>>>> broadwell and
>>>>>>         skylake.
>>>>>>              (Also cpuinfo for the broadwell one)
>>>>>>
>>>>>>              Isuru Fernado
>>>>>>
>>>>>>              On Tue, Feb 14, 2017 at 1:29 PM, 'Bill Hart' via
>>>>>> mpir-devel
>>>>>>              <[email protected] <mailto:
>>>>>> [email protected]>
>>>>>>         <mailto:[email protected]
>>>>>>         <mailto:[email protected]>>> wrote:
>>>>>>
>>>>>>                  Apparently if you have a very recent machine, yasm
>>>>>> may fail to
>>>>>>         build the
>>>>>>                  assembly files for your architecture. To get around
>>>>>> this,
>>>>>>         install the
>>>>>>                  latest yasm [1] and use MPIR's --with-system-yasm
>>>>>> option.
>>>>>>
>>>>>>                  If your system is recent and detects as core2 or k8
>>>>>> or simply
>>>>>>         x86_64 or
>>>>>>                  something else obviously out-of-date, when tuning,
>>>>>> please also
>>>>>>         send us a
>>>>>>                  copy of cat /proc/cpuinfo so we can add support for
>>>>>> your
>>>>>>         processor to MPIR.
>>>>>>
>>>>>>                  Bill.
>>>>>>
>>>>>>                  [1] http://yasm.tortall.net/
>>>>>>
>>>>>>                  On 13 February 2017 at 18:41, Bill Hart
>>>>>>         <[email protected] <mailto:goodwillhart@googlemai
>>>>>> l.com>
>>>>>>                  <mailto:[email protected]
>>>>>>
>>>>>>         <mailto:[email protected]>>> wrote:
>>>>>>
>>>>>>                      Hi all,
>>>>>>
>>>>>>                      MPIR has been modified recently, and new tuning
>>>>>> crossovers
>>>>>>         have been
>>>>>>                      added.
>>>>>>
>>>>>>                      If you have a machine that you want MPIR to run
>>>>>> fast on, we
>>>>>>         would
>>>>>>                      really appreciate help getting tuning values for
>>>>>> your
>>>>>>         machine. Here
>>>>>>                      is how.
>>>>>>
>>>>>>                      git clone https://github.com/wbhart/mpir
>>>>>>                      <https://github.com/wbhart/mpir
>>>>>>         <https://github.com/wbhart/mpir>>
>>>>>>                      cd mpir
>>>>>>                      ./configure --enable-gmpcompat
>>>>>>                      make -j4
>>>>>>                      make check
>>>>>>                      cd tune
>>>>>>                      make tune
>>>>>>
>>>>>>                      Please attach the tuning values that are printed
>>>>>> to this post.
>>>>>>                      Please ensure that the first line is not
>>>>>> missing, e.g.
>>>>>>
>>>>>>                          Parameters for ./mpn/x86_64/k8/k10/k102/gmp-m
>>>>>> param.h
>>>>>>
>>>>>>                      as this tells us what machine the values are for.
>>>>>>
>>>>>>                      If the tuning program crashes, or starts to take
>>>>>> too long,
>>>>>>         just send
>>>>>>                      us the values you have.
>>>>>>
>>>>>>                      Any help that people can provide is really
>>>>>> appreciated.
>>>>>>
>>>>>>                      Note that we DON'T require tuning values for the
>>>>>> following
>>>>>>         arches:
>>>>>>
>>>>>>                      mpn/x86_64/k8/k10/k102
>>>>>>                      mpn/x86_64/haswell
>>>>>>
>>>>>>                      If someone already attached values for your
>>>>>> arch, no need
>>>>>>         to supply
>>>>>>                      them again.
>>>>>>
>>>>>>                      Bill.
>>>>>>
>>>>>>
>>>>>>                  --
>>>>>>                  You received this message because you are subscribed
>>>>>> to the Google
>>>>>>                  Groups "mpir-devel" group.
>>>>>>                  To unsubscribe from this group and stop receiving
>>>>>> emails from
>>>>>>         it, send
>>>>>>                  an email to [email protected]
>>>>>>         <mailto:mpir-devel%[email protected]>
>>>>>>                  <mailto:[email protected]
>>>>>>         <mailto:mpir-devel%[email protected]>>.
>>>>>>                  To post to this group, send email to
>>>>>>         [email protected] <mailto:mpir-devel@googlegroup
>>>>>> s.com>
>>>>>>                  <mailto:[email protected]
>>>>>>         <mailto:[email protected]>>.
>>>>>>                  Visit this group at https://groups.google.com/grou
>>>>>> p/mpir-devel
>>>>>>         <https://groups.google.com/group/mpir-devel>
>>>>>>                  <https://groups.google.com/group/mpir-devel
>>>>>>         <https://groups.google.com/group/mpir-devel>>.
>>>>>>                  For more options, visit
>>>>>> https://groups.google.com/d/optout
>>>>>>         <https://groups.google.com/d/optout>
>>>>>>                  <https://groups.google.com/d/optout
>>>>>>         <https://groups.google.com/d/optout>>.
>>>>>>
>>>>>>
>>>>>>              --
>>>>>>              You received this message because you are subscribed to
>>>>>> the Google
>>>>>>         Groups
>>>>>>              "mpir-devel" group.
>>>>>>              To unsubscribe from this group and stop receiving emails
>>>>>> from it,
>>>>>>         send an
>>>>>>              email to [email protected]
>>>>>>         <mailto:mpir-devel%[email protected]>
>>>>>>              <mailto:[email protected]
>>>>>>         <mailto:mpir-devel%[email protected]>>.
>>>>>>              To post to this group, send email to
>>>>>> [email protected]
>>>>>>         <mailto:[email protected]>
>>>>>>              <mailto:[email protected]
>>>>>>         <mailto:[email protected]>>.
>>>>>>              Visit this group at https://groups.google.com/grou
>>>>>> p/mpir-devel
>>>>>>         <https://groups.google.com/group/mpir-devel>
>>>>>>              <https://groups.google.com/group/mpir-devel
>>>>>>         <https://groups.google.com/group/mpir-devel>>.
>>>>>>              For more options, visit https://groups.google.com/d/op
>>>>>> tout
>>>>>>         <https://groups.google.com/d/optout>
>>>>>>              <https://groups.google.com/d/optout
>>>>>>         <https://groups.google.com/d/optout>>.
>>>>>>
>>>>>>
>>>>>>         --
>>>>>>         You received this message because you are subscribed to the
>>>>>> Google Groups
>>>>>>         "mpir-devel" group.
>>>>>>         To unsubscribe from this group and stop receiving emails from
>>>>>> it, send
>>>>>>         an email
>>>>>>         to [email protected]
>>>>>>         <mailto:mpir-devel%[email protected]>
>>>>>>         <mailto:[email protected]
>>>>>>         <mailto:mpir-devel%[email protected]>>.
>>>>>>         To post to this group, send email to
>>>>>> [email protected]
>>>>>>         <mailto:[email protected]>
>>>>>>         <mailto:[email protected] <mailto:
>>>>>> [email protected]>>.
>>>>>>         Visit this group at https://groups.google.com/grou
>>>>>> p/mpir-devel
>>>>>>         <https://groups.google.com/group/mpir-devel>.
>>>>>>         For more options, visit https://groups.google.com/d/optout
>>>>>>         <https://groups.google.com/d/optout>.
>>>>>>
>>>>>>
>>>>>>     --
>>>>>>     You received this message because you are subscribed to the
>>>>>> Google Groups
>>>>>>     "mpir-devel" group.
>>>>>>     To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an
>>>>>>     email to [email protected]
>>>>>>     <mailto:mpir-devel%[email protected]>.
>>>>>>     To post to this group, send email to [email protected]
>>>>>>     <mailto:[email protected]>.
>>>>>>     Visit this group at https://groups.google.com/group/mpir-devel
>>>>>>     <https://groups.google.com/group/mpir-devel>.
>>>>>>     For more options, visit https://groups.google.com/d/optout
>>>>>>     <https://groups.google.com/d/optout>.
>>>>>>
>>>>>>
>>>>>> --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups
>>>>>> "mpir-devel" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an email
>>>>>> to [email protected]
>>>>>> <mailto:[email protected]>.
>>>>>> To post to this group, send email to [email protected]
>>>>>> <mailto:[email protected]>.
>>>>>> Visit this group at https://groups.google.com/group/mpir-devel.
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "mpir-devel" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to [email protected].
>>>>> To post to this group, send email to [email protected].
>>>>> Visit this group at https://groups.google.com/group/mpir-devel.
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>>
>>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"mpir-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/mpir-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to