From: Pjotr Prins <pjotr.public12@thebird.nl>
To: Ben Woodcroft <b.woodcroft@uq.edu.au>
Cc: guix-devel <guix-devel@gnu.org>
Subject: Re: Optionally using more advanced CPU features
Date: Sat, 26 Aug 2017 07:14:50 +0200 [thread overview]
Message-ID: <20170826051450.GA22234@thebird.nl> (raw)
In-Reply-To: <19eb4906-44d1-723b-94ba-9ab86dfbedf5@uq.edu.au>
On Sat, Aug 26, 2017 at 11:39:41AM +0800, Ben Woodcroft wrote:
> I was wondering how we should go about optionally building software for
> more advanced CPU features. Currently, we build software for the lowest
> common feature set among x86_64 CPUs. That’s good for portability, but
> not so good for performance.
>
> In many cases we can set the --with-arch flag when configuring GCC, so
> that packages built with that GCC are optimised for that architecture
> by default.
> We have discussed this in the past,
> ([1]https://lists.gnu.org/archive/html/guix-devel/2016-10/msg00005.html
> ) but as you say individual packages sometimes need individual
> attention.
> Anyway, to move forward I created a repo so that package recipes can be
> modified to use a GCC that has been optimised for a particular
> architecture. I put it out there so that it is more than just a patch
> on this ML, but I'd be happy to incorporate it into Guix proper if that
> is desired.
> [2]https://github.com/wwood/cpu-specific-guix
> For instance, to build DIAMOND optimised for sandybridge:
> GUILE_LOAD_PATH=/path/to/cpu-specific-guix:$GUILE_LOAD_PATH\
> guix build -e '(begin (use-modules (cpu-specific-guix) (gnu packages bioinform
> atics))\
> (cpu-specific-package diamond "sandybridge"))'
>
> HTH, ben
Pretty cool. This works for leave-packages. For libraries we'll need
to have something that goes deeper into the graph. Openblas/atlas/GSL
are prime examples that would benefit a wide range of applications.
I am working on GEMMA these days and I will target supercomputing
architectures. Having math libraries that target vectorization
optimizations for gcc and LLVM would be very useful. The current
deployment strategy is 'one-offs' on the GUIX_PACKAGE_PATH.
Just as a note, it makes no sense to optimize all Guix packages. In
fact I prefer we have the non-optimized by default since that is what
everyone is using and is (arguably) well tested. We only have the 1 in
a thousand library we want to specialize/optimize aggressively.
Pj.
next prev parent reply other threads:[~2017-08-26 5:15 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-21 12:23 Optionally using more advanced CPU features Ricardo Wurmus
2017-08-22 9:21 ` Ludovic Courtès
2017-08-23 13:59 ` Dave Love
2017-08-28 13:48 ` Ludovic Courtès
2017-09-01 10:46 ` Dave Love
2017-09-04 12:38 ` Ludovic Courtès
2017-09-07 15:51 ` Packaging BLIS Ludovic Courtès
2017-09-08 22:36 ` Dave Love
2017-09-11 7:12 ` Ludovic Courtès
2017-08-26 3:39 ` Optionally using more advanced CPU features Ben Woodcroft
2017-08-26 5:14 ` Pjotr Prins [this message]
2017-09-04 14:50 ` Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170826051450.GA22234@thebird.nl \
--to=pjotr.public12@thebird.nl \
--cc=b.woodcroft@uq.edu.au \
--cc=guix-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.