Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Software kompilieren

Da nicht jedes Programm vom HPC-Team optimiert werden kann, da es beispielsweise nur in Binär-Form vorliegt, reicht es, wenn man die Binär-Dateien in sein Homeverzeichnis kopiert. Da diese auf allen Rechenknoten unter demselben Pfad zur verfügung steht, kann man somit das Programm in seinen Job-Scripten verwenden.

...

Hinweis
Jobs ohne Angabe einer Architektur können auf der UV2000 oder den Ivybridge-Knoten starten oder auch gemischt bei parallelen Jobs. Es empfiehlt sich also eine Erkennung dafür in das Job-Script zu packen und abhängig vom System ein anderes Binary zu starten.

 

Eigenes Module-File anlegen

Es besteht die Möglichkeit eigene Module-Files anzulegen um weitere Software innerhalb eines Jobs zu laden. Dazu muss das Modulefile nach ~/.modules abgelegt werden. Am einfachsten ist es, wenn man folgendes Template kopiert und die Variablen am Anfang anpasst.

Codeblock
#%Module########
##
# Load dependencies
set reqs "hpc_basis"
source /software/modules/common/common.tcl

set softwareName "Test-Software"
set softwareVersion "1.0"
# installation base folder of software
set softwareInstallFolder "/software/$softwareName/$softwareVersion/${::env(ARCH)}"

set msg "Sets environment variables for $softwareName $softwareVersion"

# Can be modified
set bin_dir "$softwareInstallFolder/bin"
set includes "$softwareInstallFolder/include"
set libs "$softwareInstallFolder/lib"


# Should not be changed

proc ModulesHelp { } {
    global hpc_basis_version

    puts stderr "\t$msg"
}

module-whatis "$msg"

if { ! [ file isdirectory $softwareInstallFolder ] } {
    puts stderr "\n!!!ERROR!!!\n"
    puts stderr "$softwareName not available for architecture ${::env(ARCH)}!"
    puts stderr "$softwareInstallFolder does not exist"
    exit
}

if {[string compare $bin_dir ""] != 0} {
    prepend-path PATH $bin_dir
}

if {[string compare $libs ""] != 0} {
    prepend-path LIBRARY_PATH $libs
    prepend-path LD_LIBRARY_PATH $libs
}

if {[string compare $includes ""] != 0} {
    prepend-path INCLUDE $includes
    prepend-path C_INCLUDE_PATH $includes
    prepend-path CPLUS_INCLUDE_PATH $includes
    prepend-path INCLUDE_PATH $includes
    prepend-path LD_INCLUDE_PATH $includes
}

# Additional Paths
# prepend-path PATH $softwareInstallFolder/scripts


if { [ module-info mode load ] &&  ! [ catch {exec tty -s} ] } {
    puts stderr "\n  $softwareName ($softwareVersion)"
    puts stderr "  |--------------------------------------------------------------~o"
    if {[string compare $libs ""] != 0} {
        puts stderr "    binaries  : $bin_dir"
    }
    if {[string compare $libs ""] != 0} {
        puts stderr "    libs       : $libs"
    }
    if {[string compare $includes ""] != 0} {
        puts stderr "    includes  : $includes"
    }
}