ابرآراز | ArazCloud

کاربردهای محاسبات با عملکرد بالا (HPC) بر روی سرورهای ابری

محاسبات با عملکرد بالا (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 و منابع سرورهای ابری، شما می‌توانید کارهای پیچیده و محاسباتی را به صورت توزیع‌شده و موازی انجام دهید و از انعطاف‌پذیری و قدرت محاسباتی بالای سرورهای ابری بهره‌مند شوید.