Jump to content

Mpirun arguments

From Haidhi Wiki
Revision as of 10:50, 17 June 2026 by SanzSkuy (talk | contribs) (Created page with "Target ini menjalankan program <code>matmul</code> di beberapa laptop (x86 only) lewat jaringan lokal, menggunakan Open MPI dengan hostfile. == Perintah yang dijalankan == <pre> mpirun --prefix /home/haidhi/ompi4 \ --mca btl_tcp_if_include 192.168.100.0/24 \ --mca oob_tcp_if_include 192.168.100.0/24 \ --hostfile hostfile \ -np 2 \ build/matmul 2048 2048 2048 </pre> (Nilai default. Bisa di-override: <code>make run-host NP=4 M=1024 K=1...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Target ini menjalankan program matmul di beberapa laptop (x86 only) lewat jaringan lokal, menggunakan Open MPI dengan hostfile.

Perintah yang dijalankan

mpirun --prefix /home/haidhi/ompi4 \
       --mca btl_tcp_if_include 192.168.100.0/24 \
       --mca oob_tcp_if_include 192.168.100.0/24 \
       --hostfile hostfile \
       -np 2 \
       build/matmul 2048 2048 2048

(Nilai default. Bisa di-override: make run-host NP=4 M=1024 K=1024 N=1024)

Penjelasan tiap flag

--prefix /home/haidhi/ompi4

Memberitahu mpirun di mana instalasi Open MPI berada — di sini /home/haidhi/ompi4, bukan sistem default /usr.

Kenapa perlu: Saat mpirun di master meluncurkan proses di node lain lewat SSH, ia perlu tahu path mpirun, library, dan binary Open MPI yang harus digunakan di remote node. Tanpa --prefix, remote node akan mencoba mencari Open MPI di PATH default-nya, yang mungkin versi berbeda atau tidak ada sama sekali. Dengan ini, semua node dijamin pakai instalasi yang sama.

--mca btl_tcp_if_include 192.168.100.0/24

Membatasi BTL (Byte Transfer Layer) komponen TCP agar hanya menggunakan interface jaringan yang ada di subnet 192.168.100.0/24.

BTL adalah lapisan di Open MPI yang menangani transfer data antar proses. MPI mendukung beberapa BTL (TCP, shared memory, InfiniBand, dll). Khusus BTL TCP, flag ini menentukan interface mana yang boleh dipakai.

Kenapa perlu: Laptop biasanya punya lebih dari satu network interface — misalnya WiFi (wlan0), ethernet (eth0), loopback (lo), bahkan interface virtual dari Docker atau VPN. Tanpa pembatasan ini, Open MPI bisa salah memilih interface (misal WiFi lambat, atau VPN yang tidak terhubung ke node lain). Dengan menentukan subnet cluster, kita paksa semua transfer data MPI lewat interface yang benar.

--mca oob_tcp_if_include 192.168.100.0/24

Membatasi OOB (Out-of-Band) TCP agar hanya menggunakan interface di subnet 192.168.100.0/24.

OOB adalah kanal kontrol MPI — dipakai untuk koordinasi seperti handshake startup, sinkronisasi, dan pesan manajemen proses. Berbeda dari BTL yang menangani data, OOB menangani sinyal pengendali.

Kenapa perlu: Alasan yang sama dengan BTL — cegah OOB salah interface. Jika OOB pakai interface yang berbeda dari BTL, bisa terjadi situasi di mana kontrol berhasil tapi data transfer gagal, atau koneksi drop karena routing tidak konsisten. Keduanya harus di-pin ke subnet yang sama.

Perbedaan BTL vs OOB:

Komponen Fungsi Analogi
BTL TCP Transfer data MPI (MPI_Send, MPI_Bcast, dll) Truk pengangkut barang
OOB TCP Koordinasi dan kontrol proses MPI Dispatcher yang mengatur truk

--hostfile hostfile

Menentukan file yang berisi daftar node (hostname/IP) yang akan digunakan beserta jumlah slot (proses) per node.

Contoh isi file hostfile:

192.168.100.1 slots=2
192.168.100.2 slots=2

Kenapa perlu: Memberitahu mpirun node mana saja yang tersedia di cluster dan berapa proses maksimum yang boleh di-spawn di tiap node.

-np 2

Number of Processes — total jumlah proses MPI yang akan dijalankan.

Kenapa perlu: MPI bekerja dengan model SPMD (Single Program Multiple Data) — program yang sama dijalankan di NP proses secara paralel. Masing-masing proses mendapat rank unik (0, 1, ..., NP-1) dan mengerjakan bagian matriks yang berbeda. Semakin besar NP (selama ada node yang tersedia), semakin banyak baris matriks A yang dikerjakan paralel.

build/matmul 2048 2048 2048

Binary yang dijalankan beserta argumennya: ukuran matriks M×K dan K×N. Nilai ini diteruskan ke semua proses MPI sebagai argv.

Variabel yang bisa di-override

Variabel Default Keterangan
NP 2 Total proses MPI
M 2048 Baris matriks A / C
K 2048 Kolom A / baris B
N 2048 Kolom matriks B / C
OMPI_PREFIX /home/haidhi/ompi4 Path instalasi Open MPI
CLUSTER_NET 192.168.100.0/24 Subnet cluster
HOSTFILE hostfile Path ke hostfile

Contoh:

make run-host NP=4 M=1024 K=1024 N=1024