Poudriere: has to be built manually: Optimizes for the build machine. <- bei openblas

Morfio

Well-Known Member
Hallo zusammen,

einige Ports bei meinem Poudriere (science/avogadro science/kalzium x11/kde4 misc/kdeedu4 devel/py-game x11-toolkits/py-gtkglext) ist von obenblas abhängig. Beim Bauen mit Poudriere laufen die Ports aber wegen folgender Fehlermeldung nicht durch:

Code:
has to be built manually: Optimizes for the build machine

Wie kann ich das dennoch automatisch bauen, ohne jetzt das Makefile zu bearbeiten?

Viele Grüße

Morfio
 
Code:
.if ! ( ${PORT_OPTIONS:MDYNAMIC_ARCH} && ( ${ARCH} == "amd64" || ${ARCH} == "i386" ) )
MANUAL_PACKAGE_BUILD=   Optimizes for the build machine.
.endif

Wie ein Blick in den Makefile (math/openblas/Makefile) und Mk/bsd.port.mk verrät hängt dies von DYNAMIC_ARCH Option ab. Poudriere ist zwar für viele User praktisch, aber die Infrastruktur ist doch eher für Leute geschrieben, die im Zweifelsfall halt doch den Portstree lesen und patchen. In diesem Fall reicht allerdings eine Option.
 
Das Patchen an sich ist kein Problem, ich dachte nur, es gäbe vllt. in Poudriere eine Option "Mach das einfach". Testweise habe ich das letzte Woche gepatcht. Ich suchte nach einer eleganteren Lösung.
 
Irgendwo kann man beeinflussen, welche BLAS-Implementierung verwendet wird.
GotoBLAS (Vorgänger von OpenBLAS) gilt/galt als schnellste BLAS-Implementierung. Die hatte ich auch in "Zeiten" von Portupgrade verwendet.

Aktuell habe ich anscheinend die Referenzimplementierung (math/blas) installiert/gebaut.

Schließlich gibt es noch ATLAS, eine sich selbst tunende BLAS-Implementierung.
Da war allerdings (als ich mir das das letzte mal angeschaut habe) der Port ziemlich bgewöhnungsbedürftig:
Es gibt zwei Arten ATLAS zu bauen:
1.) der Buildprozess schaut nach was man für eine CPU hat, und schlägt die Größe der verschiedenen Cachelevels nach
2.) der Buildprozess ermittelt die Größe der verschiedenen Cachelevel und umschaltpunkte für loopunrolling etc. "manuell".
Der Port hat immer die Option 2. gewählt, auch wenn ein manueller Buildprozess 1. gewählt hätte und hat daher ziemlich lange zum bauen gebraucht (iirc sogar länger, als wenn man die Option 2. beim Bauen von Hand aus den ATLAS Sourcen wählt).

Aber jetzt zum eigentlichen Thema:
Ob man eine optimierte BLASImplementierung braucht hängt davon ab, wie oft man Vektor-, Vektor-Vektor, Matrix-Vektor und Matrix-Matrix-Operationen benötigt und wie "schnell" man die benötigt. Vermutlich reicht die Referenzimplementierung, wenn man nicht gerade in Richtung HPC, "Mathematik" oder vielleicht auch noch Statistiksoftware (wie R) experimentiert (oder nicht weiß, was BLAS ist;) ).
Aber das muß man selber entscheiden.

Bei den Optimierungen sollte man halt darauf achten, dass nicht mit CPU-Instruktionen gebaut wird, die nicht alle CPUs der verwendeten "Clients" versteht. Siehe dazu auch die Webseite von OpenBLAS
 
Zurück
Oben