Hi,


On 21/08/17 22:23, Ricardo Wurmus wrote:
Hi Guix,

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, (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.
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 bioinformatics))\
  (cpu-specific-package diamond "sandybridge"))'


HTH, ben