Dalam artikel saya sebelumnya untuk Opensource.com, saya memperkenalkan proyek OpenHPC, yang bertujuan untuk mempercepat inovasi dalam komputasi kinerja tinggi (HPC). Artikel ini melangkah lebih jauh dengan menggunakan kemampuan OpenHPC untuk membangun sistem HPC kecil. Untuk menyebutnya sistem HPC mungkin terdengar lebih besar dari itu, jadi mungkin lebih baik untuk mengatakan ini adalah sistem yang didasarkan pada Resep Bangunan Cluster yang diterbitkan oleh proyek OpenHPC.
Cluster yang dihasilkan terdiri dari dua sistem Raspberry Pi 3 yang bertindak sebagai node komputasi dan satu mesin virtual yang bertindak sebagai node master:
Node master saya menjalankan CentOS di x86_64 dan node komputasi saya menjalankan CentOS yang sedikit dimodifikasi di aarch64.
Beginilah tampilan pengaturannya di kehidupan nyata:
Untuk menyiapkan sistem saya seperti sistem HPC, saya mengikuti beberapa langkah dari panduan pemasangan Resep Bangunan Cluster OpenHPC untuk CentOS 7.4/aarch64 + Warewulf + Slurm (PDF). Resep ini mencakup instruksi penyediaan menggunakan Warewulf; karena saya menginstal tiga sistem secara manual, saya melewatkan bagian Warewulf dan membuat playbook Ansible untuk langkah-langkah yang saya ambil.
Wadah Linux
- Apa itu container Linux?
- Pengantar terminologi wadah
- Unduh:Containers Primer
- Operator Kubernetes:Mengotomatiskan platform orkestrasi container
- eBook:Pola Kubernetes untuk mendesain aplikasi cloud-native
- Apa itu Kubernetes?
Setelah cluster saya disiapkan oleh playbook Ansible, saya bisa mulai mengirimkan pekerjaan ke manajer sumber daya saya. Manajer sumber daya, Slurm dalam kasus saya, adalah contoh dalam cluster yang memutuskan di mana dan kapan pekerjaan saya dijalankan. Salah satu kemungkinan untuk memulai pekerjaan sederhana di cluster adalah:
[ohpc@centos01 ~]$ srun hostname
calvin
Jika saya membutuhkan lebih banyak sumber daya, saya dapat memberi tahu Slurm bahwa saya ingin menjalankan perintah saya pada delapan CPU:
[ohpc@centos01 ~]$ srun -n 8 hostname
hobbes
hobbes
hobbes
hobbes
calvin
calvin
calvin
calvin
Pada contoh pertama, Slurm menjalankan perintah yang ditentukan (hostname
) pada satu CPU, dan pada contoh kedua Slurm menjalankan perintah pada delapan CPU. Salah satu node komputasi saya bernama calvin
dan yang lainnya bernama hobbes
; yang dapat dilihat pada output dari perintah di atas. Setiap node komputasi adalah Raspberry Pi 3 dengan empat inti CPU.
Cara lain untuk mengirimkan pekerjaan ke cluster saya adalah dengan perintah sbatch
, yang dapat digunakan untuk mengeksekusi skrip dengan output yang ditulis ke file alih-alih terminal saya.
[ohpc@centos01 ~]$ cat script1.sh
#!/bin/sh
date
hostname
sleep 10
date
[ohpc@centos01 ~]$ sbatch script1.sh
Submitted batch job 101
Ini akan membuat file keluaran bernama slurm-101.out
dengan isi sebagai berikut:
Mon 11 Dec 16:42:31 UTC 2017
calvin
Mon 11 Dec 16:42:41 UTC 2017
Untuk mendemonstrasikan fungsionalitas dasar manajer sumber daya, alat baris perintah sederhana dan serial cocok—tetapi agak membosankan setelah melakukan semua pekerjaan untuk menyiapkan sistem mirip HPC.
Aplikasi yang lebih menarik adalah menjalankan pekerjaan paralel Open MPI pada semua CPU yang tersedia di cluster. Saya menggunakan aplikasi berbasis Game of Life, yang digunakan dalam video berjudul "Menjalankan Game of Life di berbagai arsitektur dengan Red Hat Enterprise Linux." Selain implementasi Game of Life berbasis MPI yang sebelumnya digunakan, versi yang sekarang berjalan di cluster saya mewarnai sel untuk setiap host yang terlibat secara berbeda. Skrip berikut memulai aplikasi secara interaktif dengan output grafis:
$ cat life.mpi
#!/bin/bash
module load gnu6 openmpi3
if [[ "$SLURM_PROCID" != "0" ]]; then
exit
fi
mpirun ./mpi_life -a -p -b
Saya memulai pekerjaan dengan perintah berikut, yang memberi tahu Slurm untuk mengalokasikan delapan CPU untuk pekerjaan itu:
$ srun -n 8 --x11 life.mpi
Untuk tujuan demonstrasi, pekerjaan memiliki antarmuka grafis yang menunjukkan hasil perhitungan saat ini:
Posisi sel darah merah dihitung pada salah satu node komputasi, dan sel hijau dihitung pada node komputasi lainnya. Saya juga dapat memberi tahu program Game of Life untuk mewarnai sel untuk setiap CPU yang digunakan (ada empat per node komputasi) secara berbeda, yang mengarah ke output berikut:
Berkat resep penginstalan dan paket perangkat lunak yang disediakan oleh OpenHPC, saya dapat menyiapkan dua node komputasi dan node master dalam konfigurasi tipe HPC. Saya dapat mengirimkan pekerjaan ke manajer sumber daya saya, dan saya dapat menggunakan perangkat lunak yang disediakan oleh OpenHPC untuk memulai aplikasi MPI menggunakan semua CPU Raspberry Pis saya.
Untuk mempelajari lebih lanjut tentang menggunakan OpenHPC untuk membangun cluster Raspberry Pi, harap hadiri pembicaraan Adrian Reber di DevConf.cz 2018, 26-28 Januari, di Brno, Republik Ceko, dan di CentOS Dojo 2018, pada 2 Februari, di Brussel.