محاسبات با عملکرد بالا (HPC) یک روش محاسباتی است که در آن توان پردازشی چندین سرور و پردازنده برای انجام کارهای سنگین و پیچیده به کار گرفته میشود. با استفاده از سرورهای ابری، امکان بهرهمندی از محاسبات با عملکرد بالا به راحتی فراهم شده و نیازی به زیرساختهای محلی پرهزینه نیست. در این مستندات، به نحوه پیادهسازی و اجرای HPC بر روی سرورهای ابری پرداخته شده است.
الزامات
- دسترسی به سرورهای ابری با دسترسی ریشه (Root Access)
- سیستمعامل لینوکس (ترجیحاً اوبونتو ۲۰.۰۴ یا بالاتر)
- آشنایی با خط فرمان لینوکس
- دانش اولیه از HPC و سیستمهای توزیعشده
۱. مقدمهای بر HPC و سرورهای ابری
محاسبات با عملکرد بالا (HPC) به معنای اجرای کارهای پیچیده محاسباتی است که نیاز به توان پردازشی زیادی دارند. در این نوع از محاسبات، از چندین سرور یا پردازنده به صورت موازی استفاده میشود تا محاسبات سریعتر و مؤثرتر انجام شوند. با استفاده از سرورهای ابری، میتوانید این محاسبات را بدون نیاز به سرورهای فیزیکی پرهزینه پیادهسازی کنید و منابع را به صورت دینامیک و بر حسب نیاز مقیاسدهی کنید.
۲. نصب و پیکربندی ابزارهای HPC
برای پیادهسازی HPC بر روی سرورهای ابری، باید نرمافزارها و ابزارهای مناسب را نصب و پیکربندی کنید. یکی از معروفترین ابزارها برای مدیریت پردازشهای موازی در HPC، OpenMPI است. OpenMPI یک کتابخانه متنباز است که به شما اجازه میدهد پردازشهای موازی و توزیعشده را مدیریت کنید.
مرحله ۱: نصب OpenMPI
ابتدا باید OpenMPI را بر روی سرورهای ابری نصب کنید. در اینجا از توزیع اوبونتو استفاده میشود:
sudo apt-get update
sudo apt-get install -y openmpi-bin openmpi-common libopenmpi-dev
پس از نصب، با استفاده از دستور زیر میتوانید صحت نصب را بررسی کنید:
mpirun --version
مرحله ۲: تنظیم SSH برای ارتباط بین نودهای HPC
برای اجرای برنامههای HPC در چندین سرور، باید از پروتکل SSH برای اتصال بین سرورها استفاده کنید. برای این کار، باید از کلیدهای SSH بدون رمز عبور استفاده شود. ابتدا کلید SSH را تولید کنید:
ssh-keygen -t rsa
سپس کلید عمومی را بر روی سایر نودها کپی کنید:
ssh-copy-id user@node2
با این کار، اتصال بدون نیاز به وارد کردن رمز عبور بین سرورهای شما برقرار خواهد شد.
۳. اجرای برنامههای HPC
برای اجرای یک برنامه موازی با استفاده از OpenMPI، میتوانید از دستورات زیر استفاده کنید.
مرحله ۱: ایجاد یک برنامه MPI ساده
یک فایل ساده به زبان C ایجاد کنید که به صورت موازی اجرا شود. به عنوان مثال، فایل زیر را به نام mpi_hello.c
ذخیره کنید:
#include <mpi.h>
#include <stdio.h>
int main(int argc, char** argv) {
MPI_Init(NULL, NULL);
int world_size;
MPI_Comm_size(MPI_COMM_WORLD, &world_size);
int world_rank;
MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
printf("Hello from processor %d out of %d processors\n", world_rank, world_size);
MPI_Finalize();
return 0;
}
مرحله ۲: کامپایل برنامه
برای کامپایل این برنامه با استفاده از کامپایلر mpicc
(که همراه با OpenMPI نصب میشود)، دستور زیر را اجرا کنید:
mpicc mpi_hello.c -o mpi_hello
مرحله ۳: اجرای برنامه به صورت موازی
برای اجرای این برنامه به صورت موازی روی چندین پردازنده یا نود، از دستور mpirun
استفاده کنید:
mpirun -np 4 ./mpi_hello
این دستور برنامه شما را بر روی ۴ پردازنده اجرا میکند.
مرحله ۴: اجرای برنامه در چندین نود
برای اجرای برنامه بر روی چندین نود در شبکه HPC خود، باید فایل hosts
را تنظیم کنید که شامل آدرس IP یا نام نودهای مختلف باشد. ابتدا فایل hosts
را به شکل زیر ایجاد کنید:
node1
node2
node3
سپس برنامه را با استفاده از این فایل اجرا کنید:
mpirun -np 4 --hostfile hosts ./mpi_hello
این دستور برنامه را در ۴ پردازنده بر روی نودهای مشخص شده در فایل hosts
اجرا میکند.
۴. مدیریت منابع در HPC
مرحله ۱: استفاده از Slurm برای مدیریت منابع
Slurm یک سیستم مدیریت منابع متنباز است که برای اجرای کارهای HPC در خوشههای سروری استفاده میشود. برای نصب Slurm، دستورات زیر را اجرا کنید:
sudo apt-get install -y slurm-wlm
پس از نصب، فایلهای پیکربندی Slurm را تنظیم کنید و سرویس را راهاندازی کنید:
sudo systemctl start slurmd
sudo systemctl enable slurmd
مرحله ۲: اجرای کارها با استفاده از Slurm
برای اجرای کارها با استفاده از Slurm، میتوانید از دستور sbatch
استفاده کنید. به عنوان مثال، یک اسکریپت ساده به نام job.sh
برای اجرای برنامه mpi_hello
ایجاد کنید:
#!/bin/bash
#SBATCH --nodes=2
#SBATCH --ntasks=4
mpirun ./mpi_hello
سپس، با استفاده از Slurm این کار را اجرا کنید:
sbatch job.sh
۵. بهینهسازی عملکرد HPC در سرورهای ابری
مرحله ۱: استفاده از منابع ذخیرهسازی سریع
برای بهبود عملکرد در HPC، استفاده از منابع ذخیرهسازی سریع مانند SSDها و NVMeها توصیه میشود. میتوانید دیسکهای SSD را به سرورهای خود اضافه کنید و از آنها به عنوان فضای ذخیرهسازی برای پردازشهای سنگین استفاده کنید.
مرحله ۲: مقیاسگذاری خودکار
در سرورهای ابری، میتوانید نودهای خود را بر حسب نیاز مقیاسدهی کنید. با استفاده از اسکریپتهای خودکار یا ابزارهای مدیریت ابری، میتوانید بر اساس بار کاری، نودهای جدید اضافه کنید و منابع را بهینه کنید.
نتیجهگیری
در این مستندات، به نحوه پیادهسازی و اجرای HPC بر روی سرورهای ابری پرداخته شد. با استفاده از OpenMPI، Slurm و منابع سرورهای ابری، شما میتوانید کارهای پیچیده و محاسباتی را به صورت توزیعشده و موازی انجام دهید و از انعطافپذیری و قدرت محاسباتی بالای سرورهای ابری بهرهمند شوید.