#10226: Rewrite ATLAS spkg-install
-----------------------------+----------------------------------------------
    Reporter:  vbraun        |         Owner:  GeorgSWeber            
        Type:  enhancement   |        Status:  needs_review           
    Priority:  critical      |     Milestone:  sage-4.7.1             
   Component:  packages      |    Resolution:                         
    Keywords:  ATLAS spkg    |   Work_issues:                         
    Upstream:  N/A           |      Reviewer:  Dan Drake, David Kirkby
      Author:  Volker Braun  |        Merged:                         
Dependencies:                |  
-----------------------------+----------------------------------------------

Old description:

> I rewrote the ATLAS spkg-install to
>   * allow customization of architectural defaults via the new
> `SAGE_ATLAS_ARCH` environment variable.
>   * still build a reasonable library if the automatic tuning process
> fails to find accurate timings.
>   * `SAGE_ATLAS_LIB=path` now searches in `path/libatlas.so` instead of
> `path/lib/libatlas.so` so it works for people with atlas in `/lib64`,
> too.
>   * Threading is now enabled by default. Whats the point of trying to
> squeeze more performance out of modern processors if you run on one core
> only?
>
> By default, ATLAS will now try twice to get timings, if that fails build
> with `SAGE_ATLAS_ARCH=fast`, and if that fails with
> `SAGE_ATLAS_ARCH=base`.
>
> From the new `SPKG.txt`:
> {{{
> The package can be configured via two environment variables:
>
>  * SAGE_ATLAS_LIB=path
>    If this environment variable is set, path/libatlas.so is used
>    and ATLAS is not compiled.
>
>  * SAGE_ATLAS_ARCH=arch[,isaext1][,isaext2]...[,isaextN]
>    The given architectural default and instruction set extensions are
>    used instead of the empirical tuning. Available architectures are
>
>      POWER3, POWER4, POWER5, PPCG4, PPCG5, P5, P5MMX, PPRO, PII, PIII,
>      PM, CoreSolo, CoreDuo, Core2Solo, Core2, Corei7, P4, P4E,
>      Efficeon, K7, HAMMER, AMD64K10h, UNKNOWNx86, IA64Itan, IA64Itan2,
>      USI, USII, USIII, USIV, UnknownUS, MIPSR1xK, MIPSICE9
>
>    and instruction set extensions are
>
>      AltiVec, SSE3, SSE2, SSE1, 3DNow
>
>    In addition, you can also set
>
>     - SAGE_ATLAS_ARCH=fast picks defaults for a modern (2-3 year old)
>       CPU of your processor line, and
>
>     - SAGE_ATLAS_ARCH=base picks defaults that should work for a ~10
>       year old CPU.
>
>    For example,
>
>      SAGE_ATLAS_ARCH=Corei7,SSE3,SSE2,SSE1
>
>    would be appropriate for a Core i7 CPU.
> }}}
>
> I implemented the spkg-install script in python without relying on any
> external programs (except for make, of course). The configuration-
> detecting part is in the `configuration.py` module. For easier review I
> will attach the files to this ticket. The complete spkg is here:
>
> http://www.stp.dias.ie/~vbraun/Sage/spkg/atlas-3.8.3.p18.spkg

New description:

 I rewrote the ATLAS spkg-install to
   * allow customization of architectural defaults via the new
 `SAGE_ATLAS_ARCH` environment variable.
   * still build a reasonable library if the automatic tuning process fails
 to find accurate timings.
   * `SAGE_ATLAS_LIB=path` now searches in `path/libatlas.so` instead of
 `path/lib/libatlas.so` so it works for people with atlas in `/lib64`, too.
   * Threading is now enabled by default. Whats the point of trying to
 squeeze more performance out of modern processors if you run on one core
 only?

 By default, ATLAS will now try twice to get timings, if that fails build
 with `SAGE_ATLAS_ARCH=fast`, and if that fails with
 `SAGE_ATLAS_ARCH=base`.

 From the new `SPKG.txt`:
 {{{
 The package can be configured via two environment variables:

  * SAGE_ATLAS_LIB=path
    If this environment variable is set, path/libatlas.so is used
    and ATLAS is not compiled.

  * SAGE_ATLAS_ARCH=arch[,isaext1][,isaext2]...[,isaextN]
    The given architectural default and instruction set extensions are
    used instead of the empirical tuning. Available architectures are

      POWER3, POWER4, POWER5, PPCG4, PPCG5, P5, P5MMX, PPRO, PII, PIII,
      PM, CoreSolo, CoreDuo, Core2Solo, Core2, Corei7, P4, P4E,
      Efficeon, K7, HAMMER, AMD64K10h, UNKNOWNx86, IA64Itan, IA64Itan2,
      USI, USII, USIII, USIV, UnknownUS, MIPSR1xK, MIPSICE9

    and instruction set extensions are

      AltiVec, SSE3, SSE2, SSE1, 3DNow

    In addition, you can also set

     - SAGE_ATLAS_ARCH=fast picks defaults for a modern (2-3 year old)
       CPU of your processor line, and

     - SAGE_ATLAS_ARCH=base picks defaults that should work for a ~10
       year old CPU.

    For example,

      SAGE_ATLAS_ARCH=Corei7,SSE3,SSE2,SSE1

    would be appropriate for a Core i7 CPU.
 }}}

 I implemented the spkg-install script in python without relying on any
 external programs (except for make, of course). The configuration-
 detecting part is in the `configuration.py` module. For easier review I
 will attach the files to this ticket. The complete spkg is here:

 http://www.stp.dias.ie/~vbraun/Sage/spkg/atlas-3.8.4.spkg

--

Comment(by vbraun):

 New stable release ATLAS-3.8.4 is out! Spkg updated to reflect this.

 Now would be a good time for somebody to review this so that it can make
 its way into Sage-4.7.1 ...

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/10226#comment:72>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to