UB Logo

HPC FMIPA UB

Best Practices Penggunaan HPC

Penggunaan High Performance Computing (HPC) secara efisien memerlukan pemahaman tentang praktik terbaik dan teknik optimalisasi. Berikut adalah panduan tentang best practices dalam menggunakan sistem HPC FMIPA UB untuk meningkatkan produktivitas dan efisiensi komputasi Anda.

1. Optimasi Penggunaan Memori

Pengelolaan memori yang baik sangat penting untuk efisiensi program HPC:

  • Gunakan alokasi memori secara dinamis hanya saat diperlukan
  • Hindari memory leaks dengan memastikan semua memori yang dialokasikan dibebaskan kembali
  • Gunakan memori shared dan private secara efisien dalam pemrograman paralel
  • Optimalkan cache dengan mengatur tata letak data dalam memori

2. Efisiensi Pemrograman Paralel

Dalam sistem HPC, efisiensi paralel sangat menentukan performa keseluruhan:

  • Gunakan load balancing untuk membagi kerja secara merata
  • Minimalkan komunikasi antar proses untuk mengurangi overhead
  • Gunakan pendekatan data parallelism jika sesuai
  • Optimalkan algoritma untuk meminimalkan bottleneck paralel

3. Manajemen Penyimpanan dan I/O

I/O sering menjadi bottleneck dalam komputasi kinerja tinggi:

  • Gunakan buffer besar untuk membaca/menulis file besar
  • Minimalkan frekuensi operasi I/O dengan mengumpulkan data sebelum menulis
  • Gunakan sistem file paralel seperti Lustre atau GPFS jika tersedia
  • Rencanakan struktur direktori untuk meminimalkan konflik dan meningkatkan kecepatan akses

4. Strategi Job Submission

Pemilihan parameter job submission secara tepat akan meningkatkan efisiensi sistem:

# Contoh job script dengan parameter optimal
#!/bin/bash
#PBS -N nama_job_kita
#PBS -l walltime=01:00:00
#PBS -l nodes=1:ppn=8
#PBS -l mem=16gb
#PBS -q batch

cd $PBS_O_WORKDIR
module load namapaketsoftware/versi
mpirun -np 8 nama_program
  • Tentukan walltime secara realistis (tidak terlalu panjang atau pendek)
  • Pilih jumlah core dan memori sesuai kebutuhan aplikasi
  • Gunakan queue yang sesuai dengan durasi job Anda
  • Hindari over-allocation resource untuk memberi ruang pada job lain

5. Pemantauan dan Debugging

Pemantauan yang baik membantu mendeteksi dan memperbaiki masalah lebih cepat:

  • Gunakan perintah qstat untuk memonitor status job
  • Periksa file log secara berkala untuk mendeteksi error atau bottleneck
  • Gunakan tools profiling seperti perf atau gprof untuk analisis performa
  • Gunakan tools debugging seperti gdb untuk aplikasi serial atau TotalView untuk aplikasi paralel

6. Keamanan dan Backup Data

Menjaga keamanan dan integritas data sangat penting dalam proyek jangka panjang:

  • Gunakan kunci SSH untuk otentikasi alih-alih password
  • Gunakan rsync dengan opsi --progress untuk transfer file besar
  • Buat backup rutin untuk data penting di lokasi terpisah
  • Hindari menyimpan data sensitif dalam file konfigurasi atau script

7. Optimasi Kode

Optimasi kode sumber dapat meningkatkan performa secara signifikan:

  • Gunakan compiler flags yang optimal untuk arsitektur target
  • Gunakan vectorisasi SIMD bila memungkinkan
  • Hindari branching kondisional yang berlebihan dalam loop kritis
  • Gunakan libraries numerik yang sudah dioptimasi (seperti BLAS, LAPACK, MKL)

8. Praktik Terbaik Tambahan

Berikut beberapa tips tambahan yang akan meningkatkan pengalaman Anda di HPC:

  • Uji program Anda di sistem lokal terlebih dahulu sebelum di-submit ke cluster
  • Gunakan script shell untuk mengotomatiskan proses setup dan eksekusi
  • Jaga dokumentasi eksperimen dan parameter job untuk reproduktifitas
  • Gunakan environment modules untuk mengelola software dan dependensinya
  • Pantau penggunaan resource untuk mengidentifikasi bottleneck