Bagian 1. MPI - Pengenalan dan Program Pertama

Pengantar. Mengapa semua ini?

Rangkaian artikel ini akan berfokus pada pemrograman paralel .





  • Bagian 1. MPI - Pendahuluan dan program pertama.





  • Bagian 2. MPI - Belajar memantau proses.






Untuk bertempur. pengantar

Seringkali, algoritma yang paling kompleks membutuhkan sejumlah besar sumber daya komputasi dalam tugas-tugas nyata, ketika seorang programmer menulis kode dalam pemahaman standarnya tentang pemrograman prosedural atau berorientasi objek (OOP) , kemudian untuk tugas-tugas algoritmik yang sangat menuntut yang bekerja dengan jumlah besar. data dan meminimalkan waktu pelaksanaan tugas, perlu dilakukan optimasi.



Pada dasarnya, 2 jenis pengoptimalan digunakan, atau campurannya: vektorisasi dan paralelisasi

komputasi. Bagaimana mereka berbeda?





Perhitungan dilakukan pada prosesor, prosesor menggunakan "penyimpanan" data khusus yang disebut register. Register prosesor secara langsung terhubung ke elemen logis dan memerlukan lebih sedikit waktu untuk melakukan operasi pada data daripada data dari RAM, dan terlebih lagi pada hard disk, karena untuk yang terakhir, transfer data membutuhkan sebagian besar waktu. Juga dalam prosesor ada area memori yang disebut Cache, ini menyimpan nilai-nilai yang saat ini terlibat dalam penghitungan atau akan berpartisipasi di dalamnya dalam waktu dekat, yaitu data yang paling penting.





Tugas mengoptimalkan algoritme adalah membangun urutan operasi dengan benar dan menempatkan data secara optimal di Cache, meminimalkan jumlah kemungkinan transfer data dari memori.





? - . ++: AVX , 256 , float32 . , 2 (256 / 32) = 8 float32 . , , , 8 , . : , .





, , , .. , .





, MPI.

MPI - Message Passing Interface ( ). , , - - . , .





: MIMD(Multiple Instruction Multiple Data - , ) SPMD(Single Program Multiple Data - , ).





, , . MIMD - , SPMD. MPI , ( , ) SPMD.





MPI - , . . Ubuntu Budgie 20.04 LTS .





:





[user-name]$ sudo apt-get update
[user-name]$ sudo apt-get install gcc
[user-name]$ sudo apt-get install mpich
      
      



, GCC, , C\++&MPI .





.

MPI- - , . N , . MPI MPI_[Name], .





:



- . ++/ MPI_Comm. , , , . MPI_COMM_WORLD. MPI_COMM_SELF, MPI_COMM_NULL, .



- , . , -, , , .



- 0 32767( . MPI_TAG_UB).





, MPI. MPI :





int MPI_Init(int *argc, char ***argv);
int MPI_Finalize(void);
      
      



, , , MPI_Init, , . .





++ MPI.





#include <stdio.h>
#include "mpi.h"

int main(int argc, char **argv)
{
  printf("Before MPI_INIT\n");
  MPI_Init(&argc, &argv);
  printf("Parallel sect\n");
  MPI_Finalize();
  printf("After MPI_FINALIZE\n");
  return 0;
}
      
      



*.cpp, ( main.cpp):





[user-name]$ mpic++ main.cpp -o main
[user-name]$ mpiexec -n 2 ./main 
      
      



MPI-, . , -n 2 , ? , 2 .





. "Before ..." "After ..." , MPI Init-Finalize.






Dalam artikel singkat ini, dengan menggunakan program paling sederhana sebagai contoh, kita belajar bagaimana menjalankan file C ++ dengan kode MPI dan menemukan jenis hewan MPI dan apa yang dimakannya. Dalam tutorial lebih lanjut, kita akan melihat program yang lebih berguna dan akhirnya beralih ke komunikasi antar proses.








All Articles