Hochdurchsatz-Computing (HTC)

Bitte beachten Sie, dass sich diese Funktion derzeit in der Betaphase befindet und nicht standardmäßig aktiviert ist. Wenden Sie sich an den Solution Architect oder Account Executive Ihres Unternehmens, um den Zugriff zu aktivieren.

Übersicht

Neu skalieren Hochdurchsatz-Computing (HTC) ist ein API-basiertes Rescale-Produkt zum Ausführen einer großen Anzahl (z. B. Hunderte bis Millionen) gleichzeitiger kleiner und entkoppelter Jobs (z. B. einstellige Kerne bis einstellige Instanzen und kein MPI mit mehreren Knoten).

Hochleistungsrechnen (HPC) verwendet Cluster zur Lösung komplexer Rechenaufgaben. Große Aufgaben werden in Teilaufgaben aufgeteilt und parallel auf einem Mehrknoten- GruppeEine HPC Gruppe ist eine Menge homogener, miteinander verbundener Maschinen (Knoten). Jeder Knoten führt eine Kopie eines vorinstallierten Programms aus, das Daten verarbeitet, die einen Teil einer Aufgabe darstellen. Um eine globale Lösung zu erreichen, müssen die Knoten in einem HPC-Cluster miteinander kommunizieren und sich daher in der Nähe befinden (gleiche Rechenzentrum., dasselbe Rack). HPC-Berechnungen sind eng gekoppelt und schlagen fehl, wenn einzelne Knoten ausfallen.

Ziel von HPC ist es, die Zeit bis zum Ergebnis einer einzelnen Berechnung zu verkürzen und die Anzahl der Operationen pro Sekunde zu maximieren. Die Lebensdauer eines On-Demand-Cloud-HPC-Clusters ist so kurz wie möglich.

Screenshot 2023 08 28 um 4.17.46 Uhr

Hochdurchsatz-Computing (HTC) verwendet mehrere Knoten über lange Zeiträume, um mehrere Rechenaufgaben zu lösen. Jeder Job führt ein Programm aus, das in einem Container Image in einer Registry gespeichert. Ähnlich wie bei HPC wird die Rechenarbeit in viele Jobs aufgeteilt. Im Gegensatz zu HPC werden HTC-Jobs für einen einzelnen Benutzer Pensum kann leicht in der Größenordnung von 1,000 bis 10,000 s liegen.

Organisation der Berechnung in HTC

HTC-Jobs sind in einer hierarchischen Struktur organisiert, innerhalb einer Arbeitsplatz Bei Verwendung von HTC ist die Hierarchie im folgenden Diagramm dargestellt und sieht wie folgt aus:

Projekt: Ein Arbeitsbereich kann ein oder mehrere Projekte enthalten. Projekte sind zwar keine Voraussetzung, aber im Allgemeinen mittelfristige Entitäten zur Organisation verschiedener Instanzen der Arbeitslasten eines oder mehrerer Benutzer.

Aufgabe: Ein Projekt kann eine oder mehrere Aufgaben enthalten. Eine Aufgabe ist im Allgemeinen flüchtig und umfasst einen „Durchlauf“ der Arbeitslast eines Benutzers.

Job: Eine Aufgabe enthält mehrere Jobs. Der Job ist die grundlegende Arbeitseinheit. Jobs sind voneinander unabhängig.

Das Ziel von HTC besteht darin, die Anzahl der abgeschlossenen Aufträge pro Woche oder Monat zu maximieren, anstatt die Zeit zu optimieren, die ein einzelner Auftrag in Anspruch nimmt. Dies ist der „Durchsatz“-Aspekt von HTC.

Screenshot 2023 08 28 um 4.12.20 Uhr

Organisation von Daten in HTC

Jedes Projekt verfügt über einen gemeinsam genutzten Speicher, auf den alle Aufgaben zugreifen können. Jeder Aufgabe ist außerdem ein eigener Speicher zugewiesen. Jobs innerhalb einer Aufgabe können nur auf Daten im Speicher dieser Aufgabe zugreifen, nicht auf Speicher anderer Aufgaben. Ebenso können Jobs innerhalb eines Projekts nur auf gemeinsam genutzte Daten des Projekts zugreifen, in dem sich die Aufgabe befindet.

Im Allgemeinen verwenden Benutzer den Projektspeicher für Eingabedateien, die für eine Aufgabe gemeinsam genutzt werden. Der Aufgabenspeicher wird im Allgemeinen für aufgabenspezifische Eingabedateien und Ausgabedateien der Jobs in dieser Aufgabe verwendet.

Sowohl die Projekt- als auch die Aufgabenspeicherung werden derzeit unterstützt durch Objektspeicher. Über die HTC-API wird Objektspeicherung bei mehreren Cloud-Anbietern und in mehreren Regionen bereitgestellt, sodass Daten in der Nähe des Computers, der sie verbraucht und produziert, gemeinsam gespeichert werden können.

Die Rescale HTC API

Das folgende Diagramm stellt alle Ressourcen dar, die von der Rescale HTC API bereitgestellt werden. In den folgenden Abschnitten werden diese detaillierter beschrieben. Die vollständige Beta-HTC-API-Dokumentation finden Sie werden auf dieser Seite erläutert.

Zugriff auf die HTC-API

Der Zugriff auf die HTC-API muss zunächst in einem bestimmten Rescale-Arbeitsbereich von einem Rescale-Lösungsarchitekten aktiviert werden. Sobald der Zugriff gewährt wurde, muss ein Rescale-API-Schlüssel zur Authentifizierung verwendet werden. Informationen zum Generieren oder Zugreifen auf einen API-Schlüssel finden Sie hier. in Ihrem HTC-fähigen Arbeitsbereich.

Authentifizierung mit der HTC-API

Dieser Rescale-API-Schlüssel dient dem Zugriff auf HTC-APIs auf der Rescale-Plattform über die öffentliche Rescale-API. Mit diesem Schlüssel können Sie dann ein HTC-API-Benutzer-Bearer-Token generieren. Dieses Bearer-Token dient dem Zugriff auf die restlichen HTC-APIs. Sie geben den Rescale-API-Schlüssel im Autorisierungsheader einer HTTPS-Anfrage wie folgt an, um ein Bearer-Token über die /auth/token/ Endpunkt:

curl -H „Autorisierung: Token ” https://htc.rescale.com/api/v1/auth/token 

In der Nutzlast wird ein temporärer Tokenwert bereitgestellt. Dieser Token wird für alle nachfolgenden HTC-API-Zugriffe verwendet. Jeder Token läuft 6 Stunden nach der Ausgabe ab. Daher müssen nach Ablauf neue Token mit dem Rescale-API-Schlüssel abgerufen werden.

Um das Bearer-Token zur Authentifizierung von HTC-API-Aufrufen zu verwenden, geben Sie es im Header an:

curl -H „Autorisierung: Inhaber ” https://htc.rescale.com/api/v1/htc/…

Projekte verwalten

HTC-Projekte dienen der Verwaltung von Rechenleistung und Daten über mehrere Workloads hinweg. Projekte können erstellt, mit neuen verfügbaren Regionen und Limits aktualisiert und Dateien im Projektspeicher empfangen werden. Die verschiedenen projektbezogenen API-Endpunkte sind dokumentiert. werden auf dieser Seite erläutert.

Projekte werden von Arbeitsbereichsadministratoren erstellt und können im Allgemeinen nicht von HTC-Benutzern mit Administratorzugriff verwaltet werden.

Projektcontainer-Registrierungen

Jedes Projekt hat seine eigene Container Registrierung. Auf die Bilder in der Projektcontainerregistrierung greifen alle HTC-Jobs zu, die in Aufgaben dieses Projekts ausgeführt werden. Die Containerregistrierung ist praktisch der für dieses Projekt verfügbare Anwendungskatalog.

Ein Projekt kann mehrere Repositorys haben, wobei jedes Repository mehrere Container-Images enthalten kann, sofern diese über eindeutige Tags verfügen. Jobs geben den Repository-Namen und alle gewünschten Image-Tags in der Definition an, um festzulegen, welcher Container für einen Job ausgeführt werden soll.

Derzeit ist es nicht möglich, Container-Images in Registern projektübergreifend zu teilen.

Aufgaben verwalten

Eine HTC-Aufgabe enthält im Allgemeinen die Arbeitslast eines einzelnen Benutzers. Jeder Benutzer innerhalb eines Arbeitsbereichs kann Aufgaben in einem bestimmten Projekt erstellen, wie dokumentiert werden auf dieser Seite erläutert.

Auftragsübermittlung und -verwaltung

HTC-Jobs werden in „Batches“ an eine Aufgabe übermittelt, indem diese API-EndpunktJeder Job-Batch besteht aus den folgenden übergeordneten Komponenten:

Jobname: Der von diesem Auftragsstapel gemeinsam genutzte Name
BatchSize: Die Anzahl der Jobs in diesem Batch. Alle Jobs in einem Batch verwenden dieselbe Jobdefinition
htcJobDefinition: Alle Parameter, die für mehrere Jobs in diesem Stapel gemeinsam genutzt werden, bestehen aus Folgendem:
Bildname: Das zu verwendende Container-Image. Dies kann auch ein Tag für ein bestimmtes Container-Image-Repository enthalten.
maxVcpus: Die maximale Anzahl an vCPUs, die voraussichtlich von jedem Job verwendet werden 
maxMemory: Die maximale Anzahl an MiB DRAM-Speicher, die jeder Job nutzen kann
maxDiskGiB: Die maximale Anzahl an GiB an temporärem Speicherplatz, die jeder Job nutzen kann
Befehle: Der Befehl, der ausgeführt werden soll, wenn der Container ausgeführt wird
execTimeoutSeconds: Die maximale Anzahl von Sekunden, die ein Container ausgeführt werden darf, bevor er zwangsweise beendet wird
ArchitekturDie für die Ausführung des Jobs verwendete CPU-Architektur; aktuell stehen X86 oder AARCH64 zur Verfügung.
Prioritätsliste: Ob die Jobs als On-Demand-Priorität oder On-Demand-Economy ausgeführt werden sollen