Jan

18

Posted by : Florian Löffler | On : 18.01.2010

cuda_logoDa mir seid kurzem ein Laptop mit CUDA fähiger Grafikkarte zur Verfügung steht und in meiner TODO-Liste auch noch die Fortführung einer CUDA beschleunigten Variante von Enblend/Enfuse herumgammelt, habe ich mich nun einmal aufgemacht eine entsprechende Entwicklungsumgebung einzurichten.

0. Einkaufsliste

  • NVIDIA Treiber mit CUDA Support
  • NVIDIA CUDA Toolkit (Runtime Environment)
  • NVIDIA CUDA SDK (Development Kit)
1. Treiber
Obwohl momentan CUDA 2.3 schon released ist und auch CUDA 3.0 schon als Beta in den Startlöchern steht, habe ich mich für die ältere Version 2.2 entschieden.
Für die neue 2.3er Version müsste man nämlich den “NVIDIA Driver 190.18 Beta for Linux” installieren. Für die 2.2er Version reicht der “NVIDIA Driver for Linux 185.18.14″. Diesen bringt Ubuntu 9.10 (karmic) schon von Haus aus mit und erspart so unnötiges Treibergefrikel.
Für CUDA 2.2 muss also kein extra Treiber installiert werden. Der neueste Ubuntu-eigene Treiber genügt.
2. CUDA Toolkit
Das CUDA Toolkit habe ich per sudo in das standardmäßig vorgegebene /usr/local/cuda Verzeichnis installiert:

flo@acer ~ $ sudo sh cudatoolkit_2.2_linux_64_ubuntu8.10.run
Verifying archive integrity... All good.
Uncompressing NVIDIA CUDA.............................................
Enter install path (default /usr/local/cuda, '/cuda' will be appended):
„lib“ -> „/usr/local/cuda/lib“
„lib/libcufft.so.2.2“ -> „/usr/local/cuda/lib/libcufft.so.2.2“
„lib/libcufft.so.2“ -> „/usr/local/cuda/lib/libcufft.so.2“
...
„bin/ptxvars.cu“ -> „/usr/local/cuda/bin/ptxvars.cu“
„bin/cudafe“ -> „/usr/local/cuda/bin/cudafe“

========================================

* Please make sure your PATH includes /usr/local/cuda/bin
* Please make sure your LD_LIBRARY_PATH includes /usr/local/cuda/lib
*   or add /usr/local/cuda/lib to /etc/ld.so.conf and run ldconfig as root

* Please read the release notes in /usr/local/cuda/doc/

* To uninstall CUDA, delete /usr/local/cuda
* Installation Complete
3. CUDA SDK
Das CUDA SDK wird fast genauso installiert. Allerdings habe ich das SDK statt, wie vorgeschlagen ins HOME, unter /opt installiert. Evtl. könnte man das SDK auch gleich zum Toolkit unter /usr/local/cuda installieren, um alles auf einem “Haufen” zu haben. Die Pfade wären in den folgenden Schritten dann entsprechend anzupassen.

flo@acer ~ $ sudo sh cudasdk_2.21_linux.run
Verifying archive integrity... All good.
Uncompressing NVIDIA CUDA SDK.............................................
Enter install path (default ~/NVIDIA_CUDA_SDK): /opt/cuda/sdk

Could not locate CUDA.  Enter the full path to CUDA.
If you do not know the path, accept the default and then
modify the CUDA_INSTALL_PATH variable in
/opt/cuda/sdk/common/common.mk.

Enter CUDA install path (default /usr/local/cuda):
„sdk/Makefile“ -> „/opt/cuda/sdk/Makefile“
„sdk/ReleaseNotes.html“ -> „/opt/cuda/sdk/ReleaseNotes.html“
...
„sdk/tools“ -> „/opt/cuda/sdk/tools“
„sdk/tools/CUDA_Occupancy_calculator.xls“ -> „/opt/cuda/sdk/tools/CUDA_Occupancy_calculator.xls“

========================================

Configuring SDK Makefile (/opt/cuda/sdk/common/common.mk)...

========================================

* Please make sure your PATH includes /usr/local/cuda/bin
* Please make sure your LD_LIBRARY_PATH includes /usr/local/cuda/lib

* To uninstall the NVIDIA CUDA SDK, please delete /opt/cuda/sdk
* Installation Complete
4. System einrichten
a) LD_LIBRARY_PATH für CUDA libs setzen
Um die CUDA Libraries zu nutzen müssen diese in den Library Suchpfad aufgenommen werden und das geht so:

flo@acer ~ $ cat /etc/ld.so.conf.d/cuda.conf
/usr/local/cuda/lib/
flo@acer ~ $ sudo ldconfig

b) CUDA BIN Verzeichnis zum PATH hinzufügen
Der CUDA Compiler nvcc muss im PATH gefunden werden. Eine Möglichkeit das zu erreichen ist den Pfad in der Bash Konfiguration zu erweitern:

flo@acer ~ $ cat /etc/bash.bashrc
...
PATH=$PATH:/usr/local/cuda/bin

Sobald eine neue Shell geöffnet wird, wird der Pfad nun entsprechend angepasst.

c) Compiler-Flags für GCC 4.4/Ubuntu 9.10 anpassen
Als letztes muss nun noch ein kleiner Eingriff in die CUDA Compilerflags erfolgen, um CUDA mit dem GCC 4.4 (standard bei Ubuntu 9.10) nutzen zu können. Konkret muss das Flag “-O2″ entfernt werden und das geht so:

flo@acer ~ $ sudo cp /opt/cuda/sdk/common/common.mk /opt/cuda/sdk/common/common.mk.org
flo@acer ~ $ sudo sed -i 's/COMMONFLAGS += -O2/#&/' /opt/cuda/sdk/common/common.mk

d) Freuen und evtl. mit einem der mitgelieferten Beispiele gleich Testen ;)

Quellen

Jan

16

Posted by : Florian Löffler | On : 16.01.2010

eclipse-iconSeid einiger Zeit nutze ich nun die Integration des Bugzilla Bugtrackers in Eclipse mittels Mylyn. Soweit funktioniert das auch sehr gut. Allerdings würde ich gerne auch Bugs einiger Projekte verwalten, für deren Bugtracker es keinen Mylyn Connector gibt.

Das Problem
Konkret würde ich es gerne schaffen den BerliOS Bugtracker in Mylyn zu integrieren. Dieser verfügt meines Wissens nach aber über keine Schnittstelle für externe Anwendungen – kann also nur über die Weboberfläche bedient werden. Soweit so schlecht.
Die (Teil)Lösung
Meine Google Recherchen ergaben, dass BerliOS wohl eine sehr ähnliche Bugtracker Software wie Sourceforge einsetzt. Außerdem fand ich einige Seiten die von einer erfolgreichen Integration des WTP-InstallationSourceforge Bugtrackers in Mylyn mittels eines generischen Web Template Connectors sprachen.
Allerdings ist dieser in der Standardinstallation nicht enthalten und auch in den standard Update Sites nicht (mehr) verfügbar. Nach einiger Sucherei fand ich heraus das irgendwann das Projekt in die Incubator Update Site von Mylyn verschoben wurde:

“The generic web repository connector is NOT part of the default Mylyn install. You can install it from the incubator update site. See Mylyn download page for more details.”



Diese war gar nicht so leicht herauszufinden, deshalb erspare ich euch das Suchen. Die Adresse lautet wie folgt:
Mylyn incubator update site - http://download.eclipse.org/tools/mylyn/update/incubator/

Sobald diese in Eclipse hinzugefügt wurde kann man die WTP aka Generic Web Templates Connector aka “Mylyn Connector: Web Templates (Advanced)” auswählen und installieren.

Update (04.05.2010)
Ebenso nötig sind die Update Sites
Mylyn - http://download.eclipse.org/tools/mylyn/update/e3.4
und
Mylyn Extras - http://download.eclipse.org/tools/mylyn/update/extras
um entsprechende Abhängigkeiten auflösen zu können.
Falls bereits eine Version von Mylyn installiert war sollte vor dem Installieren des WTP Plugin erst noch ein Update gemacht werden.
Neues Problem
Nachdem ich man es nun geschafft hat den WTP Connector zu installieren muss dieser noch für die Weboberfläche des BerliOS Bugtrackers konfiguriert werden. Ausgehend von der Sourceforge Konfiguration, welche mitgeliefert wird, habe ich schon begonnen eine Konfiguration für BerliOS zu erstellen. Bislang allerding mit eher mäßigem Erfolg.
Einloggen scheint schon zu klappen, allerdings werden noch keine Bugs importiert. Sobald das letzte Puzzle-Teilchen auch noch gefunden ist werde ich die Lösung natürlich wie immer mit allen teilen die’s interessiert ;)

Nov

17

Posted by : Florian Löffler | On : 17.11.2009

simplesamlphp-sLetztens musste ich SimpleSAMLphp als SP/IdP für mein lokales SSO Entwicklungssystem aufsetzen. Allerdings wollte der SSO Vorgang nicht recht funktionieren.
Nach einigem Stochern in den Logs bin ich auf folgendes gestoßen:

flo@acer ~ $ tail -f /var/log/apache2/error.log
...
[Sun Nov 15 15:41:52 2009] [error] [client 127.0.0.1] ALERT - configured GET variable value length limit exceeded - dropped variable 'SAMLRequest' (attacker '127.0.0.1', file '/var/www/simplesaml/saml2/idp/SSOService.php'), referer: http://sp-ssphp.localhost/simplesaml/saml2/sp/idpdisco.php?entityID=http%3A%2F%2Fsp-ssphp.localhost%2Fsimplesaml%2Fsaml2%2Fsp%2Fmetadata.php&return=http%3A%2F%2Fsp-ssphp.localhost%2Fsimplesaml%2Fsaml2%2Fsp%2FinitSSO.php%3FRelayState%3Dhttp%253A%252F%252Fsp-ssphp.localhost%252Fsimplesaml%252Fexample-simple%252Fsaml2-example.php&returnIDParam=idpentityid

Die Logmeldung weißt auf einen Verstoß gegen die Suhosin Richtlinen für die maximale Parameterelänge hin. Da die SAML2 Nachricht “vorneherum” via GET Variable übertragen wird ergibt sich ein recht ansehnliche Parameterlänge, welche von Suhosin als Angriff gewertet und geblockt wird.

Um das Problem zu beheben muss einfach die maximale Parameterlänge in der /etc/php5/conf.d/suhosin.ini erhöht werden. Eine Erhöhung von 512 auf 1024 hat in meinem Fall ausgereicht:

flo@acer ~ $ cat /etc/php5/conf.d/suhosin.ini
...
;suhosin.get.max_value_length = 512
suhosin.get.max_value_length = 1024
...

Viel Spass!

Nachtrag
Folgendes muss auch noch angepasst werden:

flo@acer ~ $ cat /etc/php5/conf.d/suhosin.ini
...
;suhosin.cookie.max_name_length = 64
suhosin.cookie.max_name_length = 128
...

Nov

16

Posted by : Florian Löffler | On : 16.11.2009

logoStandardmäßig benutzt Ubuntu den Nano Editor. Dieser ist für eingefleischte Vim User aber natürlich keine geeignete Alternative.


Zum Glück lässt sich der System Editor leicht wechseln:

flo@acer ~ $ sudo update-alternatives --config editor
Es gibt 4 Auswahlmöglichkeiten für die Alternative editor (welche /usr/bin/editor bereitstellen).

  Auswahl      Pfad                Priorität Status
------------------------------------------------------------
* 0            /bin/nano            40        Auto-Modus
  1            /bin/ed             -100       manueller Modus
  2            /bin/nano            40        manueller Modus
  3            /usr/bin/vim.basic   30        manueller Modus
  4            /usr/bin/vim.tiny    10        manueller Modus

Drücken Sie die Eingabetaste, um die aktuelle Wahl[*] beizubehalten,
oder geben Sie die Auswahlnummer ein: 3
update-alternatives: Verwende /usr/bin/vim.basic, um /usr/bin/editor (editor) in manueller Modus bereitzustellen.

Anmerkung dazu:
Der “echte” Vim verbirgt sich unter der Option 3 /usr/bin/vim.basic und muss ggf. erst durch ein

flo@acer ~ $ sudo apt-get install vim

installiert werden, da Ubuntu nur den abgespeckten vim-tiny mibringt.

Okt

30

Posted by : Florian Löffler | On : 30.10.2009

gwclient-iconDa ich kürzlich auf Ubuntu 9.10 aka karmic koala in der amd64 Variante umgestiegen bin ergaben sich leider wieder mal einige Probleme mit Novells Groupwise.

Hier eine kurze Zusammenfassung wie ich’s zum laufen bewegt hab:

1. Vorbereitungen
Herunterladen und entpacken sind identisch zu meiner GW unter Gentoo Anleitung

2. JRE ersetzen
Das mitgelieferte JRE ist nicht brauchbar, deshalb müssen wir es ersetzen. Dazu installieren wir uns zunächst ein 32Bit JRE, wie zum Beispiel ia32-sun-java6-bin und führen die eigentliche Ersetzung mittels Symlink durch.

flo@acer ~ $ sudo apt-get install ia32-sun-java6-bin
flo@acer ~ $ cd /opt/novell/groupwise/client/
flo@acer /opt/novell/groupwise/client $ sudo mv jre old_jre
flo@acer /opt/novell/groupwise/client $ sudo ln -s /usr/lib/jvm/ia32-java-6-sun-1.6.0.15/jre

3. libstdc++5 installieren
Karmic bietet leider kein Packet für die libstdc++5 Library, welche Groupwise allerdings benötigt. Ein Symlink auf die aktuellere libstdc++6 quittiert Groupwise wie folgt:

flo@acer ~ $ groupwise
/opt/novell/groupwise/client/bin/groupwise-bin: /usr/lib32/libstdc++.so.5: version `GLIBCPP_3.2' not found (required by /opt/novell/groupwise/client/bin/groupwise-bin)
/opt/novell/groupwise/client/bin/groupwise-bin: /usr/lib32/libstdc++.so.5: version `CXXABI_1.2' not found (required by /opt/novell/groupwise/client/bin/groupwise-bin)

Also muss das Orginal installiert werden. Wer es genau nimmt kann beide Varianten – 64Bit und 32Bit – installieren. Benötigt wird von Groupwise lediglich die 32Bit Version.
Download Debian libstdc++5 Package
oder

flo@acer ~/Downloads $ mkdir libstdc++5 && cd libstdc++5
flo@acer ~/Downloads/libstdc++5 $ wget http://ftp.us.debian.org/debian/pool/main/g/gcc-3.3/libstdc++5_3.3.6-18_amd64.deb
flo@acer ~/Downloads/libstdc++5 $ wget http://ftp.us.debian.org/debian/pool/main/g/gcc-3.3/libstdc++5_3.3.6-18_i386.deb

Die 64Bit Version kann man einfach installieren, bei der 32Bit Version habe ich die Installation lieber manuell durchgeführt.

flo@acer ~/Downloads/libstdc++5 $ sudo gdebi libstdc++5_3.3.6-18_amd64.deb
flo@acer ~/Downloads/libstdc++5 $ file-roller --extract-to=./libstdc++5_3.3.6-18_i386 libstdc++5_3.3.6-18_i386.deb
flo@acer ~/Downloads/libstdc++5 $ cd libstdc++5_3.3.6-18_i386
flo@acer ~/Downloads/libstdc++5/libstdc++5_3.3.6-18_i386 $ tar -xvzf data.tar.gz
flo@acer ~/Downloads/libstdc++5/libstdc++5_3.3.6-18_i386 $ sudo cp usr/lib/* /usr/lib32/

4 . Quellen und Schluss

So das sollte es gewesen sein. Have Fun!

Dez

30

Posted by : Florian Löffler | On : 30.12.2007

Wenn man große Dateien über relativ langsame Verbindungen übertragen muss und dafür ssh-copy alias scp verwendet steht man bei einem Verbindungsabbruch bei 93% erstmal ziehmlich doof da.
Scp unterstützt nämlich nicht das Fortsetzen eines nur teilweise beendeten Kopiervorgangs. Eigentlich müsste man wieder von vorne anfangen. Hat man aber rsync auf beiden Rechnern installiert so kann man den abgebrochenen Kopiervorgang relativ komfortabel doch noch zuende bringen und das geht so:

acer ~ # rsync —P ——bwlimit=45 ——rsh=ssh username@host:/tmp/test.tst .
test.tst
   366544896 100%   44.67kB/s    2:13:32 (xfer#1, to-check=0/1)

sent 6036 bytes  received 365605729 bytes  45613.10 bytes/sec
total size is 366544896  speedup is 1.00

Das Ganze funktioniert folgendermaßen:

  • der lokale rsync client baut eine ssh Verbindung zum remote server auf und startet dort selbständig einen rsync deamon, der jedoch nur Verbindungen von localhost annimmt
  • per ssh-tunnel verbindet sich der lokale rsync client dann zum rsync deamon auf dem remote server
  • –P ist gleichbedeutend mit ––partial −−progress – was nichts anderes heißt als das teilweise übertragene Dateien erhalten bleiben und der Fortschritt der Übertragung angezeigt wird
  • −−bwlimit KBYTE/S ermöglicht die Drosselung der Übertragungsgeschwindigkeit, Angabe in kByte/s

Have fun ;)

Dez

13

Posted by : Florian Löffler | On : 13.12.2007

Da in meinem Home Server ja seit kurzem ein Geode mit funktionierendem Frequency Scaling steckt wäre es schon ganz nett immer bescheid zu wissen wie schnell die CPU gerade taktet – am besten auf der Kommandozeile.
Meistens nutze ich screen, um meine Arbeitssitzung auch nach dem ausloggen (per ssh) wieder fortsetzen zu können und da würde sich eine Anzeige in der Screen-Statusleiste anbieten. Dazu habe ich ein kleines Script geschrieben, um mir die aktuelle CPU-Geschwindigkeit aus cat /proc/cpuinfo herauszuparsen und dann meine screenrc für die Ausgabe modifiziert.

Continue Reading

Sep

04

Posted by : Florian Löffler | On : 04.09.2006


Unicode bzw. UTF-8 als einer seiner Vertreter ist in vieler Hinsicht einfacher zu handhaben als die Vielzahl länderspezifischer Zeichensätze. Wie der Name schon vermuten lässt kann man mit Unicode nahezu jedes beliebige Zeichen darstellen und so sollten kaputte Umlaute und ähnliche Probleme endlich der Vergangenheit angehören.

Erreicht wird das durch Vergrößerung des Speicherbereichs für ein Zeichen. Bei alten Zeichsätzen belegt ein Zeichen normalerweise 8 Bit und so kann ein Zeichensatz 2^8=256 Zeichen enthalten. Unicodezeichen belegen 16 Bit und so kann der neue Zeichsatz bis zu 2^16=65536 Zeichen enthalten. Sollte das einmal nicht mehr ausreichen, so ist der neue Standard auch auf noch größere Zeichenlängen erweiterbar.

Ein System auf UTF-8 umzustellen ist jedoch bisweilen noch etwas umständlich, da jedes Programm einzeln für den neuen Zeichensatz konfiguriert werden muss.

Continue Reading