
High-Performance Computing(HPC)

З.Номин-Эрдэнэ
Багш


З.Номин-Эрдэнэ
Багш
Өнөөгийн дижитал эрин зуунд өгөгдлийн хэмжээ асар хурдацтай өсөхийн хэрээр бидний өмнө тулгарч буй асуудлууд илүү төвөгтэй болж байна. Шинжлэх ухаан, бизнес, инженерийн салбарт уламжлалт тооцоолол хангалтгүй болж, High-Performance Computing (HPC) буюу Өндөр гүйцэтгэлтэй тооцоолол зайлшгүй хэрэгсэл болж хувирсан.
Компьютерийн хөгжилд 2000-аад оны эхэн үед томоохон эргэлт гарсан. Үүнээс өмнө процессорын давтамж (frequency) жил бүр тогтмол өсөж, тооцооллын хурд нэмэгддэг байв. Гэвч 2000 оноос хойш нэг процессорын хурдны өсөлт физикийн болон дулааны хязгаарлалтад орж, удааширсан. Үүний оронд процессорын цөмүүдийн (core) тоог нэмэгдүүлэх замаар нийт гүйцэтгэлийг нэмэгдүүлэх болсон. Энэ нь биднийг параллель програмчлал руу түлхсэн гол хүчин зүйл юм.
Орчин үеийн 16 цөмт процессортой компьютерт ердийн програм ашиглавал нөөцийн дөнгөж 0.8%-ийг л ашиглах эрсдэлтэй байдаг. Харин параллель програмчлал ашигласнаар 99.2%-ийн хүчин чадлыг ашиглах боломжтой болно. Үүнийг ойлгохын тулд хоёр төрлийн Scaling-ийг ялгах хэрэгтэй:
Strong Scaling: Даалгаврын хэмжээг тогтмол байлгаж, процессорын тоог нэмэгдүүлснээр ажлыг илүү хурдан дуусгахад чиглэнэ.
Weak Scaling: Нэг процессор тус бүрд ногдох ажлын хэмжээг тогтмол байлгаж, процессорын тоог нэмэгдүүлснээр нийт ажлын хэмжээг (mesh size) ихэсгэхэд чиглэнэ.
Параллель тооцооллын архитектурыг ангилахдаа Flynn-ийн таксономийг хамгийн өргөн ашигладаг. Энэ нь зааварчилгаа болон өгөгдлийн урсгалаас хамаарч дөрвөн төрөлд хуваагддаг:

SISD (Single Instruction, Single Data): Нэг процессор, нэг заавраар нэг өгөгдлийг дарааллаар боловсруулна.
SIMD (Single Instruction, Multiple Data): Нэг заавраар олон өгөгдлийг зэрэг боловсруулна (Вектор процессорууд).
MISD (Multiple Instruction, Single Data): Олон процессор нэг өгөгдөл дээр өөр өөр заавраар ажиллана (ховор тохиолддог).
MIMD (Multiple Instruction, Multiple Data): Олон процессор, олон заавраар олон өгөгдлийг зэрэг боловсруулна. Энэ нь орчин үеийн өндөр гүйцэтгэлтэй системүүдийн үндэс юм.

Shared Memory (Дундын санах ой): Бүх процессор нэг санах ойд хандана.
UMA: Бүх процессор ижил хурдаар хандана.
NUMA: Процессор бүр өөрийн локал санах ойтой, бусад санах ойд хандах хугацаа өөр. OpenMP нь энэ төрлийн системд өргөн ашиглагддаг.
Distributed Memory (Хуваарилагдсан санах ой): Процессор бүр өөрийн тусдаа санах ойтой. Процессорууд хоорондоо мессеж дамжуулах механизм (MPI - Message Passing Interface) ашиглан харилцдаг.