Freigeben über


Erfassung von Azure HPC-Cachedaten – Methode für paralleles Kopieren von Skripts

Dieser Artikel enthält Anweisungen zum Erstellen des parallelcp Skripts und zum Verschieben von Daten in einen BLOB-Speichercontainer zur Verwendung mit Azure HPC Cache.

Weitere Informationen zum Verschieben von Daten in Blob Storage für Ihren Azure HPC-Cache finden Sie unter "Verschieben von Daten in Azure Blob Storage".

Erstellen des Parallelcp-Skripts

Das folgende Skript fügt die ausführbare Datei parallelcphinzu. (Dieses Skript ist für Ubuntu konzipiert. Wenn Sie eine andere Verteilung verwenden, müssen Sie separat installieren parallel .)

sudo touch /usr/bin/parallelcp && sudo chmod 755 /usr/bin/parallelcp && sudo sh -c "/bin/cat >/usr/bin/parallelcp" <<EOM
#!/bin/bash

display_usage() {
    echo -e "\nUsage: \$0 SOURCE_DIR DEST_DIR\n"
}

if [  \$# -le 1 ] ; then
    display_usage
    exit 1
fi

if [[ ( \$# == "--help") ||  \$# == "-h" ]] ; then
    display_usage
    exit 0
fi

SOURCE_DIR="\$1"
DEST_DIR="\$2"

if [ ! -d "\$SOURCE_DIR" ] ; then
    echo "Source directory \$SOURCE_DIR does not exist, or is not a directory"
    display_usage
    exit 2
fi

if [ ! -d "\$DEST_DIR" ] && ! mkdir -p \$DEST_DIR ; then
    echo "Destination directory \$DEST_DIR does not exist, or is not a directory"
    display_usage
    exit 2
fi

if [ ! -w "\$DEST_DIR" ] ; then
    echo "Destination directory \$DEST_DIR is not writeable, or is not a directory"
    display_usage
    exit 3
fi

if ! which parallel > /dev/null ; then
    sudo apt-get update && sudo apt install -y parallel
fi

DIRJOBS=225
JOBS=225
find \$SOURCE_DIR -mindepth 1 -type d -print0 | sed -z "s/\$SOURCE_DIR\///" | parallel --will-cite -j\$DIRJOBS -0 "mkdir -p \$DEST_DIR/{}"
find \$SOURCE_DIR -mindepth 1 ! -type d -print0 | sed -z "s/\$SOURCE_DIR\///" | parallel --will-cite -j\$JOBS -0 "cp -P \$SOURCE_DIR/{} \$DEST_DIR/{}"
EOM

Beispiel für parallele Kopie

In diesem Beispiel verwendet das parallele Kopierskript die Quelldateien aus dem Azure HPC-Cache, um glibc zu kompilieren.

Die Quelldateien werden im Bereitstellungspunkt des Azure HPC-Caches zwischengespeichert, und die Objektdateien werden auf der lokalen Festplatte gespeichert.

In diesem Beispiel wird das Skript zum parallelen Kopieren mit der Option -j und make zur Parallelisierung verwendet.

sudo apt-get update
sudo apt install -y gcc bison gcc binutils make parallel
cd
wget https://mirrors.kernel.org/gnu/libc/glibc-2.27.tar.bz2
tar jxf glibc-2.27.tar.bz2
ln -s /nfs/cache1 hpccache
time parallelcp glibc-2.27 avere/glibc-2.27
cd
mkdir obj
mkdir usr
cd obj
/home/azureuser/avere/glibc-2.27/configure --prefix=/home/azureuser/usr
time make -j