Forschung – It

Forschung – It

Was Ist Gurobi?

Gurobi’s Website sagt, dass sie sind: der state-of-the-art-solver für lineare Programmierung (LP), quadratic und quadratically restricted programming stlb-bau (QP und QCP), und mixed-integrer programming (MILP, MIQP, und MIQCP)

Verwendung Im Wharton Hpcc

Das Problem

Standardmäßig setzen wir den Cluster so auf, dass alle Jobs nur auf einem Kern ausgeführt werden, und Gurobi „honert“ nicht alle normalen Wege, um Software darüber zu erzählen (primär OMP_NUM_THREADS Umweltvariable). Standardmäßig wird für einige Lösungen Gurobi versuchen, alle Koren auf der Box zu verwenden, so wird 16 Streifen starten… die alle auf einem Kern laufen, die viel schlimmer ausführen, als es sein könnte.

Die Lösung

Zum Glück gibt es eine einfache Lösung. Für Gurobi müssen Sie „Threads=1“ (in gurobi_cli) angeben, OR eine benutzerdefinierte gurobi.env (in der Kataloge, aus der Sie die Arbeit ausführen) mit „Threads 1“ erstellen. Das kannst du mit:

qrsh cp /usr/local/gurobi/linux64/bin/gurobi.env.

Diese Datei muss im Katalog sein, aus dem Sie die Arbeit ausführen.

So wäre es noch besser, OMP_NUM_THREADS Umweltveränderung zu verwenden, die automatisch in jedem Job eingestellt wird, um „Threads=“ in Ihrem Job-Script einzusetzen, etwas wie:

#$ -N gurobi #$ -j y gurobi_cl Threads=$OMP_NUM_THREADS /usr/local/gurobi/linux64/examples/data/coins.lp

OMP_NUM_THREADS ist standardmäßig auf 1 eingestellt, so dass es „die richtige Sache“ macht. Sie können mehr als einen mit dem oben genannten Job-Script verwenden, indem Sie

die Option ‘-pe openmp #’ für Ihre Job-Beitragsbefehl:

qsub -pe openmp 8 jobscript.sh

Dieser Job wird erlaubt, Multi-Threading (8 Koren) zu verwenden, weil Sie sie in Ihrem Qsub-Befehl “anfordert” haben.

Max Bedrohungen (Cores)

INTERAKTIVE MODE ( qrsh/qlogin ): Sie werden nicht mehr als 2 Streifen in interaktivem Modus verwenden können. Dies liegt an der „Batch“ Natur unseres Queuing-Systems und unserem Begriff der „richtigen Nutzung“.

BATCH MODE ( qsub ): Sie können bis zu 16 in einem Script verwenden (wenn ein System 16 verfügbar ist, was selten ist), oder 2 in interaktiv, zum Test. Unsere Kisten alle haben derzeit 16 Koren… Ich empfehle, dass Sie in der Regel nicht mehr als 8 verwenden, da es in unserer Umgebung ungewöhnlich ist, dass viele Koren auf einem einzigen Host verfügbar sind. Das sagt, manchmal ist die Verwendung gering, und Sie würden keine Probleme mit mehr haben! Fühlen Sie sich frei zum Experiment!

Matlab Eintritt

Um Gurobi-Optimierung in Ihrem MATLAB-Code zu verwenden, fügen Sie die folgenden Zeile in Ihrem MATLAB-Code hinzu, oben auf alle Gurobi-Anrufe:

addpath /usr/local/gurobi/linux64/matlab params.threads = 1

Danach werden Gurobi-Funktionen verfügbar sein:

Hilfe für Gurobi

Python Nutzt

Gurobi ist in Python einfach zu verwenden: Sie müssen nur die richtige Gurobi-Dokumentation in Ihre PYTHONPATH Umweltvariable hinzufügen. Abhängig von Ihrer bevorzugten Python-Version wird dies so gemacht:

Python 2.7

Export PYTHONPATH=/usr/local/gurobi/linux64/lib/python2.7:$PYTHONPATH

Mit Python 3.6

Export PYTHONPATH=/usr/local/gurobi/linux64/lib/python3.6_utf32:$PYTHONPATH

Das wird nur auf einem Computer-Node funktionieren, so dass, wenn Sie interaktiv arbeiten, müssen Sie zuerst qlogin, dann würden Sie kopieren/passt, dass auf der Befehllinie, oder legen Sie die Linie in Ihrem qsub.sh Job-Submission-Skripte, bevor (über) Ihre Python-Anrufe, wie in diesem Python 3.6 virtuelle Umgebung Beispiel:

#!/bin/bash #$ -N grbpy #$ -j y Quelle /opt/rh/rh-python36/mögliche Quelle ~/somevirtualenvdir/bin/aktivieren Export PYTHONPATH=/usr/local/gurobi/linux64/lib/python3.6_utf32:$PYTHONPATH python my-script.py

Offensichtlich ersetzen somevirtualenvdir mit dem virtualenv dir, den Sie bereits eingerichtet haben.

R Gebrauch

Gurobi ist leicht in R. Installieren Sie in Ihre persönlichen R-Bibliotheken mit:

R CMD INSTALL /usr/local/gurobi/linux64/R/gurobi_9.1-1_R_4.0.2.tar.gz

HINWEIS: Die Version wird gelegentlich aktualisiert, so dass die oben genannte Route auch ändern könnte. Lassen Sie uns wissen, wenn Sie bemerken, dass dieses Dokument ausgeschlossen ist.

Wenn Sie einen Fehler zu Erlaubnissen erhalten, sehen Sie unsere R-Seite für Details zu Installation von R-Paketen (Einstallieren Sie Ihre Umgebung).

Weiterlesen →

Weitere Details zu Gurobi finden Sie in Gurobi-Dokumentation. Für einen ausgezeichneten Python 3-Tutorial, mit Beispielcode usw. siehe http://www.gurobi.com/Resources/seminars-and-videos/python-III-webinar


Leave a Reply

Your email address will not be published.