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 <goodwillh...@googlemail.com> 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 <goodwillh...@googlemail.com>
> 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 <goodwillh...@googlemail.com>
>> wrote:
>>
>>>
>>>
>>> On 21 February 2017 at 00:35, <wrai...@morpheus.net> 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, <wrai...@morpheus.net
>>>>> <mailto:wrai...@morpheus.net>> 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 <isu...@gmail.com
>>>>>         <mailto:isu...@gmail.com>
>>>>>         <mailto:isu...@gmail.com <mailto:isu...@gmail.com>>> 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
>>>>>              <mpir-devel@googlegroups.com <mailto:
>>>>> mpir-devel@googlegroups.com>
>>>>>         <mailto:mpir-devel@googlegroups.com
>>>>>         <mailto:mpir-devel@googlegroups.com>>> 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
>>>>>         <goodwillh...@googlemail.com <mailto:goodwillhart@googlemai
>>>>> l.com>
>>>>>                  <mailto:goodwillh...@googlemail.com
>>>>>
>>>>>         <mailto:goodwillh...@googlemail.com>>> 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 mpir-devel+unsubscr...@googlegroups.com
>>>>>         <mailto:mpir-devel%2bunsubscr...@googlegroups.com>
>>>>>                  <mailto:mpir-devel+unsubscr...@googlegroups.com
>>>>>         <mailto:mpir-devel%2bunsubscr...@googlegroups.com>>.
>>>>>                  To post to this group, send email to
>>>>>         mpir-devel@googlegroups.com <mailto:mpir-devel@googlegroup
>>>>> s.com>
>>>>>                  <mailto:mpir-devel@googlegroups.com
>>>>>         <mailto:mpir-devel@googlegroups.com>>.
>>>>>                  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 mpir-devel+unsubscr...@googlegroups.com
>>>>>         <mailto:mpir-devel%2bunsubscr...@googlegroups.com>
>>>>>              <mailto:mpir-devel+unsubscr...@googlegroups.com
>>>>>         <mailto:mpir-devel%2bunsubscr...@googlegroups.com>>.
>>>>>              To post to this group, send email to
>>>>> mpir-devel@googlegroups.com
>>>>>         <mailto:mpir-devel@googlegroups.com>
>>>>>              <mailto:mpir-devel@googlegroups.com
>>>>>         <mailto:mpir-devel@googlegroups.com>>.
>>>>>              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 mpir-devel+unsubscr...@googlegroups.com
>>>>>         <mailto:mpir-devel%2bunsubscr...@googlegroups.com>
>>>>>         <mailto:mpir-devel+unsubscr...@googlegroups.com
>>>>>         <mailto:mpir-devel%2bunsubscr...@googlegroups.com>>.
>>>>>         To post to this group, send email to
>>>>> mpir-devel@googlegroups.com
>>>>>         <mailto:mpir-devel@googlegroups.com>
>>>>>         <mailto:mpir-devel@googlegroups.com <mailto:
>>>>> mpir-devel@googlegroups.com>>.
>>>>>         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 mpir-devel+unsubscr...@googlegroups.com
>>>>>     <mailto:mpir-devel%2bunsubscr...@googlegroups.com>.
>>>>>     To post to this group, send email to mpir-devel@googlegroups.com
>>>>>     <mailto:mpir-devel@googlegroups.com>.
>>>>>     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 mpir-devel+unsubscr...@googlegroups.com
>>>>> <mailto:mpir-devel+unsubscr...@googlegroups.com>.
>>>>> To post to this group, send email to mpir-devel@googlegroups.com
>>>>> <mailto:mpir-devel@googlegroups.com>.
>>>>> 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 mpir-devel+unsubscr...@googlegroups.com.
>>>> To post to this group, send email to mpir-devel@googlegroups.com.
>>>> 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 mpir-devel+unsubscr...@googlegroups.com.
To post to this group, send email to mpir-devel@googlegroups.com.
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