CP2K_Benchmark-Leistungsbenchmark-Datensatz
Date
Publish URL
Paper URL
License
GPL
Der CP2K-Benchmark-Datensatz ist eine Reihe von Leistungstest- und Validierungseingaben, die speziell für High-Performance-Computing-Umgebungen (HPC) entwickelt wurden. Dieser Datensatz, der aus der Open-Source-First-Principles-Simulationssoftware CP2K stammt, wird verwendet, um die Leistung von Quantenchemie- und Molekulardynamikberechnungen unter verschiedenen Hardwareplattformen, Parallelisierungsstrategien (MPI/OpenMP) und Kompilierungsoptimierungseinstellungen zu bewerten.
Im Gegensatz zu wissenschaftlichen Versuchsdaten wird dieser Datensatz hauptsächlich zur Leistungsbewertung von Hochleistungsrechnern (Laufgeschwindigkeit, parallele Effizienz, Skalierbarkeit usw.) verwendet. Er wird vom offiziellen CP2K-Team gepflegt. Die Daten und Eingabedateien befinden sich im Verzeichnis „benchmarks/“ des Quellcodes.
Die relevanten Papierergebnisse sindCP2K: Atomsimulationen von Festkörpersystemen“, herausgegeben 2013 von der Eidgenössischen Technischen Hochschule Zürich, der Universität Zürich, der Universität Basel und weiteren Institutionen.
Datensatzstruktur
Der Datensatz befindet sich im Verzeichnis „benchmarks/“ des CP2K-Quellcode-Repositorys, das mehrere Unterverzeichnisse und Eingabedateien enthält:
benchmarks/
├── Fayalite-FIST/ # FIST 模块基准,Fayalite 体系
├── QS/ # Quickstep 模块基准(DFT/MD)
├── QS_DM_LS/ # 线性标度 DFT 基准
├── QS_HFX/ # 混合泛函 HFX 基准
├── QS_diag/ # 对角化算法基准
├── QS_mp2_rpa/ # MP2 / RPA 高精度基准
├── QS_ot_ls/ # 轨道变换线性标度 DFT 基准
├── QS_pao_ml_tio2/ # PAO / ML 势 TiO₂ 基准
├── QS_rubri/ # Rubredoxin 蛋白质基准
├── QS_single_node/ # 单节点 Quickstep 基准
├── QS_stmv/ # STMV 病毒体系基准
├── README.md # 各基准说明文档
Jedes Unterverzeichnis enthält:
- Architekturdateien (wie .xyz, .psf, .pdb)
- CP2K-Eingabeskript (.inp)
- Referenzenergieergebnisse und Ausgabevorlagen
- Ausführen und Aufzeichnen von Skripten
Datensatzinhalt
Der Datensatz enthält mehrere standardisierte Benchmark-Probleme, von denen jedes ein typisches wissenschaftliches Rechenszenario darstellt und verschiedene Berechnungsarten von der klassischen Molekulardynamik bis zur ab initio elektronischen Struktur abdeckt.
- H₂O-64
- Typ: DFT + Molekulardynamik
- System: 64 Wassermoleküle (192 Atome/512 Elektronen)
- Zweck: Testen der Leistung und Skalierbarkeit von Standardsimulationen der Quantenchemie auf mittelgroßen Systemen.
- Fayalite-FIST
- Typ: Klassische Molekulardynamik (FIST-Modul)
- System: Fayalit-Kristall (Fe₂SiO₄-Superzelle, ca. 28.000 Atome)
- Zweck: Bewertung der Leistung klassischer Kraftfeldberechnungen und Algorithmen zur Summierung elektrischer Felder mit großer Reichweite in großen Systemen.
- LiH-HFX
- Typ: Hybrid-DFT (HFX-Einzelpunktberechnung)
- System: LiH-Kristall (216 Atome/432 Elektronen)
- Zweck: Testen der Last und Kommunikationseffizienz von hybriden Austauschfunktionalen unter Multithread-Parallelität.
- H₂O-DFT-LS
- Typ: Lineare Skalierung DFT
- System: 2048 Wassermoleküle (6144 Atome)
- Zweck: Bewertung der Skalierbarkeit und des Speicherbedarfs linearer Skalierungsalgorithmen bei massiver Parallelität.
- H₂O-64-RI-MP2
- Typ: MP2-Methode + RI-Näherung
- System: Wie H₂O-64
- Zweck: Testen der Leistung und des Rechenaufwands von Ab-initio-Methoden höherer Ordnung auf HPC.
Ausführen von Benchmarks
Bevor Sie einige Benchmarks ausführen, müssen Sie möglicherweise einen Vorverarbeitungsschritt durchführen, um die erforderlichen Eingabedateien (z. B. Wellenfunktionsdateien) zu generieren.
Diese Vorbereitungen sind in der Datei README.md im entsprechenden Benchmark-Unterverzeichnis detailliert beschrieben. Es wird empfohlen, die entsprechenden Anweisungen vor Beginn des Tests zu lesen.
Benchmarks in Datasets werden typischerweise im hybriden Parallelmodus ausgeführt, wobei sowohl MPI als auch OpenMP für die parallele Berechnung verwendet werden. Das folgende Beispiel zeigt, wie jedem MPI-Prozess zwei Threads zugewiesen werden, um einen Benchmark auszuführen:
export OMP_NUM_THREADS=2
parallel_launcher launcher_options path_to_cp2k.psmp -i inputfile.inp -o logfile.log
In:
- parallel_launcher ist mpirun, mpiexec oder eine Variante wie aprun auf Cray-Systemen oder srun bei Verwendung der Slurm-Jobplanung.
- launcher_options gibt die Anzahl der Knoten, MPI-Prozesse, Aufgaben pro Knoten und Threads pro Aufgabe für die parallele Ausführung an (sollte dem Wert von OMP_NUM_THREADS entsprechen). Wenn die Konfiguration für die parallele Ausführung automatisch von der Jobumgebung festgelegt wird, müssen Sie sie nicht manuell angeben.
Benchmark-Ergebnisse abrufen
Nach dem Ausführen des Benchmarks können Benutzer die tatsächliche Laufzeit (Walltime) von CP2K ermitteln, indem sie die internen Zeitinformationen in der Protokolldatei ausgeben.
Alle vom Datensatz bereitgestellten Benchmarks zeichnen diese Zeitinformationen in Protokolldateien auf, sodass Benutzer die Leistung auf unterschiedlicher Hardware oder bei parallelen Konfigurationen leichter vergleichen können.
Im Folgenden finden Sie ein Beispiel, wie Sie es erhalten:
grep "CP2K " *.log
Darüber hinaus sind am Ende der Protokolldatei mehrere Leistungsstatistiken enthalten:
- DBCSR-STATISTIKEN: Zeigt die Rechen- und Kommunikationsleistungsstatistiken des DBCSR-Moduls an. Die ersten Zeilen enthalten die Anzahl der Gleitkommaoperationen (FLOPs) für verschiedene kleine Matrixblockgrößen und die Verteilung dieser Berechnungen auf BLAS, SMM (Small Matrix Multiplier) und GPU (ACC).
- DBCSR-NACHRICHTENÜBERMITTLUNGSLEISTUNG: Zeigt Statistiken zur MPI-Aufrufleistung im DBCSR-Modul an.
- LEISTUNG DER NACHRICHTENÜBERMITTLUNG: Zeigt Statistiken zur MPI-Kommunikationsleistung für andere Teile von CP2K an.
- ZEITPLAN: Listet die Anrufzeit und die Anzahl der Anrufe jeder Funktion auf.
Zeichnung
Das Projekt bietet auch Python-Skripte zum Generieren von Skalierungsdiagrammen zur Visualisierung des Datensatzes, die im folgenden Verzeichnis zu finden sind:
cp2k/tools/benchmark_plots/Build AI with AI
From idea to launch — accelerate your AI development with free AI co-coding, out-of-the-box environment and best price of GPUs.