Teburin Abubuwan Ciki
1 Gabatarwa
Shirye-shiryen haɗin kai da aka tsara don tsarin kwamfutoci masu yawan fayiloli (MPCS) suna gabatar da manyan kalubale a cikin tabbatarwa da tabbacin daidaito. Tsarin Watsa Saƙo (MPI) yana aiki a matsayin ɗaya daga cikin mafi yawan ƙa'idodin da aka karɓa don haɓaka aikace-aikacen haɗin kai. Wannan takarda ta gabatar da sabon tsarin lissafi wanda aka tsara musamman don tabbatar da shirye-shiryen MPI, yana magance babban gibi a cikin hanyoyin tabbatarwa na yanzu waɗanda galibi suna buƙatar iyakance adadin ayyuka.
Hanyar da aka gabatar ta bambanta kanta ta hanyar goyan bayan shirye-shiryen MPI masu iya samar da adadin ayyuka na sabani, suna cin nasara akan iyakoki da ke cikin kayan aiki kamar ParTypes [1] waɗanda ke fama da karɓar wildcard da sauran rikitattun tsarin hanyoyin sadarwa. Algorithm ɗin ninka matrix yana aiki a matsayin babban nazarin lamari, yana nuna aikace-aikacen tsarin.
Muhimman Fahimta
- Sabon tsarin lissafi don tabbatar da ayyuka marasa iyaka
- Yana magance iyakoki a cikin kayan aiki na yanzu kamar ParTypes
- An nuna aikace-aikacen aiki ta hanyar ninka matrix
- Yana goyan bayan karɓar wildcard da rikitattun tsarin hanyoyin sadarwa
2 Muhimman Abubuwa na MPI
2.1 Shirye-shiryen MPI
Shirye-shiryen MPI shirye-shiryen C ne waɗanda aka ƙara tare da ayyuka, nau'ikan, da ƙa'idodin MPI. Aiwatarwa akan MPCS ya haɗa da samar da ayyukan lissafi a kowane kulli, suna aiki tare yayin musayar bayanai ta hanyar watsa saƙo. Kowane tsari yana karɓar matsayi na musamman daga saitin {0,...,m-1}, inda m ke wakiltar jimillar adadin ayyuka. Tsarin da ke da matsayi 0 an keɓe shi azaman tushen tsari.
Muhimman ayyukan MPI sun haɗa da:
- MPI_Comm_rank: Yana ƙayyade matsayin tsarin kira
- MPI_Comm_size: Yana gano jimillar adadin ayyuka
2.2 Ayyukan Watsa Saƙo
MPI yana goyan bayan manyan nau'ikan watsa saƙo guda biyu:
2.2.1 Watsa Saƙo Biyu-Biyu (PMP)
Ya haɗa da sadarwa kai tsakanin ayyuka biyu: mai aikawa da mai karɓa. Manyan ayyuka sun haɗa da:
MPI_Send(void* p, int n, MPI_Datatype τ, int r, int l, MPI_Comm MPI_COMM_WORLD);
MPI_Recv(void* p, int n, MPI_Datatype τ, int MPI_ANY_SOURCE, int MPI_ANY_TAG,
MPI_Comm MPI_COMM_WORLD, MPI_Status* q);
2.2.2 Watsa Saƙon Watsa Shiri (BMP)
Ya haɗa da duk ayyuka a cikin mai sadarwa, tare da tushen tsari yana aika saƙonni zuwa duk sauran ayyuka.
3 Tsarin Lissafi don Tabbatarwar MPI
Tsarin lissafi da aka gabatar yana tsara halayen shirin MPI ta amfani da algebra na tsari da dabaru na ɗan lokaci. Tsarin tabbatarwa na ainihin yana amfani da ƙayyadaddun tsari mai zuwa:
Bari $P = \{P_0, P_1, ..., P_{m-1}\}$ ya wakilci saitin ayyuka, inda kowane $P_i$ ke nufin tsari tare da matsayi $i$. Halin sadarwa ana iya ƙirƙira shi azaman tsarin canji mai lakabi $\mathcal{M} = (S, S_0, L, T)$, inda:
- $S$: Saitin jahohin duniya
- $S_0 \subseteq S$: Jihohin farko
- $L$: Saitin lakabi da ke wakiltar ayyukan MPI
- $T \subseteq S \times L \times S$: Alakar canji
Hanyar tabbatarwa tana tabbatar da kaddarorin aminci $\phi$ suna riƙe don duk aiwatarwa: $\mathcal{M} \models \forall\square\phi$, inda $\square$ ke wakiltar ma'aikacin lokaci "koyaushe".
4 Nazarin Lamarin Ninka Matrix
Algorithm ɗin ninka matrix yana nuna aikace-aikacen aiki na tsarin tabbatarwa. Algorithm ɗin yana rarraba toshe matrix a cikin ayyuka kuma yana amfani da ayyukan sadarwa gama gari.
// Sauƙaƙaƙƙen Pseudocode na Ninka Matrix na MPI
void matrix_multiply_mpi(int rank, int nprocs) {
int block_size = N / sqrt(nprocs);
// Rarraba toshe matrix
if (rank == 0) {
MPI_Scatter(A, block_size*block_size, MPI_DOUBLE,
local_A, block_size*block_size, MPI_DOUBLE, 0, MPI_COMM_WORLD);
MPI_Scatter(B, block_size*block_size, MPI_DOUBLE,
local_B, block_size*block_size, MPI_DOUBLE, 0, MPI_COMM_WORLD);
}
// Lissafi na gida
matrix_multiply(local_A, local_B, local_C, block_size);
// Tattara sakamako
MPI_Gather(local_C, block_size*block_size, MPI_DOUBLE,
C, block_size*block_size, MPI_DOUBLE, 0, MPI_COMM_WORLD);
}
5 Sakamakon Gwaji
An gwada hanyar tabbatarwa akan algorithm ɗin ninka matrix tare da bambance-bambancen adadin ayyuka. Tsarin ya yi nasarar tabbatar da kaddarorin daidaito ciki har da:
'Yancin Matattu
An tabbatar don duk saitunan tsari
Daidaituwar Bayanai
An tabbata a cikin rarraba toshe matrix
Daidaiton Sakamako
Daidaituwar lissafi tare da algorithm na jeri
Tsarin tabbatarwa ya nuna iyawar ma'auni, yana gudanar da saitunan daga ayyuka 4 zuwa 256 ba tare da buƙatar ƙayyadaddun iyaka akan adadin tsari ba.
6 Binciken Fasaha
Tsarin lissafi da Mironov ya gabatar yana wakiltar ci gaba mai mahimmanci a cikin tabbatar da shirin MPI, musamman a cikin ikonsa na sarrafa adadin ayyuka marasa iyaka. Hanyoyin al'ada kamar aiwatar da alama [3-5] da duba samfuri [6-10] galibi suna buƙatar ƙayyadaddun iyaka akan adadin ayyuka, suna iyakance aikace-aikacensu zuwa aikace-aikacen ma'auni na duniya na gaske.
Idan aka kwatanta da hanyar ParTypes [1], wanda ke buƙatar ƙa'idodin sadarwa da aka ƙayyade mai amfani kuma ya kasa tare da karɓar wildcard, tsarin Mironov yana ba da sassauci mafi girma. Wannan iyawa yana da mahimmanci ga algorithms kamar ninka matrix waɗanda ke amfani da rikitattun tsarin hanyoyin sadarwa. Hanyar ta yi daidai da yanayin binciken ƙayyadaddun tsari, kama da ci gaban kayan aiki kamar SPIN [7] da TLA+ [8], amma an keɓance su musamman don ma'anar MPI.
Hanyar tabbatarwa tana amfani da ƙa'idodin lissafi na tsari mai kama da CSP [9] da π-calculus [10], an daidaita su don takamaiman tsarin hanyoyin sadarwa na MPI. Tushen lissafi yana tabbatar da cewa ana iya tabbatar da ƙa'idodin aminci kamar 'yancin matattu da daidaiton bayanai a ƙayyadadden, yana magance muhimman abubuwan damuwa a cikin aikace-aikacen kwamfuta masu ƙarfi.
Aikin kwanan nan a cikin tabbatar da MPI, kamar wanda daga Jami'ar Utah's Flux Research Group [11], ya jaddada mahimmancin dabarun tabbatarwa masu ma'auni. Gudunmawar Mironov ta dace a cikin wannan babban shirin bincike, yana samar da tushe don tabbatar da ƙarin rikitattun algorithms na haɗin kai yayin da muke tafiya zuwa kwamfutar exascale.
7 Aikace-aikace na Gaba
Tsarin tabbatarwa yana nuna alƙawari don wasu ci-gaban aikace-aikace:
7.1 Tsarin Kwamfutar Exascale
Yayin da muke gabatowa kwamfutar exascale tare da miliyoyin ayyuka na lokaci guda, tabbatarwa yana ƙara zama mahimmanci. Ƙarfin tabbatar da ayyuka marasa iyaka yana sanya wannan hanyar a matsayin mahimmanci don tsarin kwamfutoci masu ƙarfi na gaba.
7.2 Koyon Injini da AI
Algorithms na horo na rarraba a cikin koyon injini, musamman waɗanda ke amfani da gine-ginen uwar garken sigogi, zasu iya amfana daga tabbatarwa na yau da kullun don tabbatar da daidaito a cikin daidaita samfuri da sabunta gradient.
7.3 Kwaikwayon Kimiyya
Manyan kwaikwayon kimiyya a cikin ƙirar yanayi, ƙididdigar ruwa na lissafi, da ƙwayoyin ƙwayoyin cuta suna buƙatar ƙaƙƙarfan tabbatarwa don tabbatar da daidaiton jiki da kwanciyar hankali na lamba.
7.4 Tsarin Kai
Tsarin kai masu mahimmanci na aminci waɗanda ke amfani da sarrafa haɗin kai don yanke shawara na ainihin lokaci zasu iya amfani da wannan hanyar tabbatarwa don tabbatar da aiki mai dogaro.
8 Nassoshi
- L. G. Valiant, A bridging model for parallel computation, Communications of the ACM, 1990
- M. Snir et al., MPI: The Complete Reference, MIT Press, 1996
- C. Cadar, D. Dunbar, D. Engler, KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs, OSDI 2008
- S. K. Lahiri, S. Qadeer, Verifying Verifying Programs with Well-founded Recursion, TACAS 2008
- J. C. Corbett et al., Bandera: Extracting Finite-state Models from Java Source Code, ICSE 2000
- G. J. Holzmann, The Model Checker SPIN, IEEE Transactions on Software Engineering, 1997
- L. Lamport, Specifying Systems: The TLA+ Language and Tools for Hardware and Software Engineers, Addison-Wesley, 2002
- C. A. R. Hoare, Communicating Sequential Processes, Prentice Hall, 1985
- R. Milner, Communicating and Mobile Systems: The π-Calculus, Cambridge University Press, 1999
- University of Utah Flux Research Group, Advanced MPI Verification Techniques, 2020
- IEEE Transactions on Parallel and Distributed Systems, Special Issue on Verification of Parallel Systems, 2021