Tuesday, April 26, 2016

Тооцооллын шинжлэх ухаан гэж юу вэ? /Computational science/

Тооцооллын шинжлэх ухаан гэж юу вэ?

Миний бие 2011 оноос эхлэн тооцон бодох ухааныг сонирхон судалж өдгөө тооцон бодох шингэний динамикийн өчүүхэн хэсэг дээр ирээд байна. Анх түшиц ханын тооцоог яагаад програмчилж болохгүй гэж гэсэн санаа төрж интернэтээр гадаад програм хайж үзсэн юм. Маш олныг илрүүлсэн. Мөн гидраликийн маш олон програм байдгыг мэдсэн. Тэндээс л тооцон бодох ухаанд хөтлөгдөн орсон юм даа. Энгийнээр хэлбэл:
Тооцооллын шинжлэх ухаан нь компьютер ашиглан аливаа зүйлсийг тооцон бодох, судлах үйл ажиллагаа юм.
NASA-гийн төсөл: Далайн хуйлралтын загварчлал

Ач холбогдол нь өчүүхэн мэт боловч зайлшгүй тогтоож шийдээд цааш явах нэг босго нь аливаа юмсын "жинхэнэ нэр" юм. Эдгээр жинхэнэ нэр хаанаас гаралтай, яагаад ингэж нэрлэгдэх болсоныг нь эхлээд ойлгох хэрэгтэй. Үүний дараа эх хэл дээр минь яаж нэрлэгдэвэл аятайхан байх вэ гэдгийг бодож олох явдал юм. Хүний нэрнээс бусад нэршилийг аль болох эх хэл дээр орчуулах нь цаашид шинээр сурч буй хүмүүст чухал юм. Анх удаан бодсоны эцэст Computational Fluid dynamic гэдгийг үг үгтэй нь дүйцүүлж Тооцон бодох шингэний динамик, хуучин аргын нэршилүүдтэй ижилсүүлж Шингэний динамикийн тооцонгийн арга гэх мэтээр нэрлэж үзсэн юм. Яагаад гэвэл:

  • Analytical fluid dynamics - Шингэний динамикийн онолын арга
  • Experimental fluid dynamics - Шингэний динамикийн туршилтын арга

гэж байх ба тооцон бодох нь компьютер хүн бүрт хүрэлцээтэй болж хөгжсөний дараа гарч ирсэн шинэ арга бөгөөд өмнөх хоёр аргатайгаа ижилэвтэр нэрлэгдэх нь төсийн чанар юм. Энэ бол гидравликийн орчин үеийн судалгааны арга юм. Гэвч гидравликийн төв болсон манай багт энэ талаар судалдаг хүн байхгүй, мэдэх хүн байхгүй байсан учир би бээр нэрийг нь дээрх байдлаар тунгаасан хэрэг. 
Эндээс улбаалаад тооцон бодохтой холбоотой дараах вики-нүүдийг бичсэн юм.
Тооцон бодох шинжлэх ухаан
Тооцон бодох шингэний динамик 
МУИС - ийн багш нар мөн тооцон бодох математик хэмээх хичээлийг орж, ийм агуулгатай ном хэд хэвлүүлсэн нь жинхэнэ нэр гажаагүй оносон гэж ойлгох баталгаа юм. Тооцон бодох хэмээх хоёр үг заримдаа урт мэт учир шууд Тооцооллын гэвэл тохиромжтой мэт ойрд санагдах болсон. Иймд энэхүү нийтлэлийн гарчгийг Тооцооллын шинжлэх ухаан гэж нэрлэсэн юм. 

Тооцооллын шинжлэх ухаан гэж юу вэ?

Бид олон зүйл дээр тооцоо хэмээхийг хийдэг. Эдийн засагч, нягтлан бодогчид гараар ч тооцоо хийнэ. Компьютерээр ч тооцоо хийнэ. Тэдний өдөр тутам хийх компьютер дээрх тооцоолол нь тооцооллын шинжлэх ухаан мөн үү? гэвэл үгүй юм. 
Тооцооллын шинжлэх ухаан нь компьютерын шинжлэх ухаан, байгалийн шинжлэх ухаан болон инженерчлэлийн ухааны зангилаан дээр оршдог юм. 
Компьютерийн шинжлэх ухаан нь мэдээлэл боловсруулах, шинжлэх, техник хамгамжийн шинэчлэл, дэвшил, програмчлалын хэлний хувьсгал, оновчлол, системчлэл, үр ашигтай алгоритм боловсруулах гэх мэттэй холбогдоно. 

Харин байгалийн шинжлэх ухаан болон хэрэглээний мат, физик нь аливаа юмс үзэгдлийн мөн чанарыг бүхэлд нь эсвэл тухайн тохиолдлоор нь илэрхийлэх, томъёолох, тэдгээрийгээ үнэн зөв гэдгийг батлах, турших гэх мэттэй холбогдоно. 

Инженерчлэл нь шинээр зүйлийг бүтээхийн тулд байгалийн шинжлэх ухаанд олж авсан мэдлэгийг ашиглах үйл явцтай холбогдож тооцоо судалгааг хийнэ. 

Инженерчлэлийн болон байгалийн шинжлэх ухааны асуудлыг компьютерийн шинжлэх ухааны дэвшилийг ашиглан шийдвэрлэх үйл ажиллагааг тооцооллын шинжлэх ухаан гэж болхоор байна. 

Тооцооллын шинжлэх ухааны хамгийн том салбар нь тооцооллын нил орчны механик юм. Энд шингэний динамик болон хатуу биеийн динамик орно. Энэ "тооцооллын ухаан" өдгөө бараг шинжлэх ухаан инженерчлэлийн бүхий л салбарыг хамарч байна. Дэлгэрэх, нарийсах хэрээр тооцонгийн инженер гэсэн мэргэжил бий болж салбар бүр импорматиктай болж байна. Тухайлбал:
Тооцооллын шинжлэх ухаан нь дараах ерөнхий процесстой байна. 

  1. Математик загвар гаргах (үзэгдлийг илэрхийлэх дифференциал тэгшитгэл зохиох)
  2. Загвараа тооцон бодоход зориулж тухайлах (тухайлбал тоон аргууд ашиглсан математик загварыг дахин тухайлж, ойролцоолж бичих)
  3. Загварыг эсвэл судалгааны үр дүнд хялбар, үр ашигтай, үнэн зөв хүрэх алгоритмыг боловсруулах
  4. Боловсруулсан алгоритм компьютерийн хэл ашиглан компьютерт програмчлах, турших, тооцох, тохируулга хийх, баталгаажуулах
  5. Үнэн зөв үр дүнг шаардлагатай бол графикжуулах, дүрсжүүлэх үйл явц.

Жишээ

Инженерийн тооцоонд ижил аргачлалаар маш олон давталттайгаар тооцоо хийгдэх олон бодлого тохиолдох ба энэ нь цаг үрсэн ажил болдог. Яаж бодох нь ойлгомжтой гэтэл гараар цаг үрж бодогдож байгаа тооцоонуудыг компьютерт програмчилчихвал хичнээн амар. Бүхий л томъёонд зориулсан хэрэглээний програм гэж байхгүй (бүх мат-ыг боддог Волфрам байгаа л даа. Гэхдээ хүн бүрт хүрэлцэхгүй.). Жишээ нь: ЛБА-д сонгож авсан тэнцвэрт орох параметр болон шахагдлын коэффицентыг ашиглан хугацаа болон зайн алхамыг тодорхойлох жижиг бодлого бараг өдөрт 10 удаа хийгдэнэ. Энэнд зориулсан програмыг фортран хэл дээр бичвэл:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
      program Freesurfparam
! this program estimates parameter for free surface flow
      real*8 dx, dt, dt1, vis, gg, tau, ome, gc
      real*8 ld, pvis, res, pg, Re

      print*, 'please put domain size, ld [m]'
      read(*,*) ld
      print*, 'please give a resolution for grid, res'
      read(*,*) res
      print*, 'gravitationol acceleration, pg [m/s^2]'
      read(*,*) pg
      print*, 'please give a viscoity, pvis [m^2/s]'
      read(*,*) pvis
      print*, 'choose your relaxation, ome'
      read(*,*) ome
      print*, 'please give your compressibility, gc'
      read(*,*) gc
      tau=1./ome
      dx=ld/res
      vis=(1./3.)*(tau-0.5)
      alpha=(pvis/dx**2)*sqrt(dx*gc/pg)/vis
      dt=alpha*(vis*dx**2)/pvis
      dt1=sqrt(gc*dx/pg) !0.0000245

      gg=pg*(dt**2)/dx  
 
!      tau=0.5+3.0*vis !*(dt/dx**2)
      print*, 'resolution is res=       ', res
      print*, 'time step is dt=         ', dt
      print*, 'time step is dt1=        ', dt1
      print*, 'grid space is dx=        ', dx
      print*, 'gravity for LBM gg=      ', gg
      print*, 'viscosity for LBM vis=   ', vis
      print*, 'relaxation time tau=     ', tau

      end program
Томъёогоо эксэл дээр бичээд үүнийг шийдэж болно. Гэхдээ програм биччихвэл шууд өгөгдлөө өгөөд л утгаа гаргаад авна. Энэ бол энгийн тооцооллын шинжлэх ухааны жишээ юм. 
Яг үүнтэй адил ойлгомжтой инженерчлэлийн бодлогыг шийдэх, эсвэл хараахан ойлгомжгүй байгаа үзэгдлийг эх код бичиж загварчлан судлах нь тооцооллын шинжлэх ухааны үйл ажиллагаа болж байгаа юм. 

Тооцооллын шингэний динамикт хийх гурван гарцаагүй үйлдэл бол:

  1. Код бичих (энэ тохиолдолд математик загвар бэлэн байна. Бэлэн бус бол бэлтгэх нэг алхам урд нэмэгдэнэ.)
  2. Тооцоолол хийх, турших, тохируулга хийх, баталгаажуулах
  3. Графо-дүрслэл. Эдгээрийг доорхи зургуудаас харж болно.

Тооцооллын шинжлэх ухаан бусад улсад

Улс орнуудын шинжлэх ухаан, инженерчлэлийн удирдлагын байгууллагууд тооцооллын төвүүдтэй байдаг. Тооцооллын төв байгуулахад компьютерын багц /кластер/, эсвэл супер компьютер хэрэгтэй. Мэдээж мэргэжилтэн хамгийн чухал. Америк, Хятад, Герман, Франц, Япон, Англичууд бол тооцооллын шинжлэх ухааныг чиглүүлэгчид гэж хэлж болно. Японд гэхэд хэд хэдэн супер компьютер тооцооллын ажил хийж байна. Earth simulator гэхэд л өдөр бүр завгүйгээр хүрээлэн буй орчны симуляци, цунами, үер, уур амьсгалын бодит хугацааны тооцооллыг хийж байна. Хятадад дэлхийн хамгийн том Тэнгрийн заадас хэмээх супер компьютерийг ашиглалтанд оруулж тооцонгийн ажилд бусад зорилгоор ашиглаад эхэлсэн. Энэ талаар дараах фэйсбүүкийн постоо хуулж авчирлаа. 

Эксагийн дараа Зетта
Супер компютерийн эрин үе Пета /peta/ -аас Экса /Exa/ - руу чиглэж байна. Урд хөршийн төр 1986 онд Биотехнологи, Орон судлал, Мэдээллийн технологи, Лазер техниологи, Автоматжуулалт, Эрчим хүч, Шинэ материал, Машины технологи гэх мэт үндсэн чиглэлээр 863 технологийн хөтөлбөрийг эхлүүлсэнээс хойш технологийн хөгжлийг хурдасгасан гэж хэлж болно. Энэ хөтөлбөрийн ачаар 55петафлоп /petaflop/ тооцооны хүчин чадалтай дэлхийн номер нэг супер компюьтер болох "Тэнгэрийн заадас 2" -ийг Гуанзоуд 2013 онд угсраад хаячихлаа. Япончууд К компюьтерээ номер нэг болгох гэсэн боловч амжсангүй өдгөө 4-р бичигдэж байна. 1петафлоп нь 10^15 ширхэг бутархай тооны үйлдийг (FLoating-point Operation Per Second) секундэнд хийх чадварыг харуулна. Өдгөө энэ хэмжээний хүчин чадалтай тооцон бодох машин тэр бүр хангалгүй байгаа, дээр нь улс хоорондын өрсөлдөөнийг нэмээд 2020 он гэхэд Экса /10^18флоп/ хэмжээний супер компьтер хийхээр том гүрнүүд завдаж байна. Хэрэв энэ машин бүтээгдвэл хажууд нь манай ТЭЦ-III станцаас ялигүй том цахилгаан станц хэрэгтэй болох юм байна. Одоогийн пета машинууд 3МВт-ын эрчим хүчээр хангагддаг юм байна. Тэд экса тооцооллын машин дэлхийг аврах боломжтой гэж үзэж байна.

Урд хөршийнхөө амжилтанд атаархамаар. Дөнгөж 2009 онд байгуулагдсан Бээжингийн Тооцооллын шинжлэх ухааны төв гэхэд л одоогоор 225 өгүүлэл хэвлүүлж, 13 академик хурал, 11 шинжлэх ухааны хэлэлцүүлэг, 105 гаруй семинар зэргийг зохион байгуулж өндөр мэргэшсэн залуу боловсон хүчнүүдээр бэхлэгдэж сайшаагдаж байна. 

Ихэнх өндөр хөгжилтэй орны ихэнх инженер технологийн их сургуулиуд бүгд тооцооллын шинжлэх ухааны судалгааны төвүүдэй, энэ төрлийн ажлуудыг хийж байна. Энэ чиглэлд олон улс хоорондын мэдлэг туршлага солилцох маш олон хурлууд өөр өөр зорилготойгоор жил бүр зохион байгуулагдаж байна. Эдгээрийн ерөнхий зорилго нь тооцооллын шинжлэх ухааныг олон шинжлэх ухааны зангилаан дээр ашиглан тэдгээрийг хооронд нь уялдуулах, нэгтгэх, эрчимжүүлэх, ингэхдээ дэвшилтэт шийдлийг техникийн болон алгоритм, тооцооллын аргын түвшинд ашиглах, хөгжүүлэх явдал юм. 

Америкын тухай мөн ч олон юм олдох байхдаа. НАСА, МИТ, Станфорд гэх мэт гайхамшигтай. Ямар ч байсан манай улс хоцроод байгаа гэдгийг л мэдэх хэрэгтэй. 

Тооцооллын шинжлэх ухааны нэг чухал дэвшил нь бодит хугацааны симуляци юм. Энэ нь бий болох процессийг бодитоор урдьчилан загварчилж харуулах зорилготой юм. Өөрөөр хэлбэл загвар болсон систем нь бодит нэг сек хугацаанд болох үзэгдлийг мөн хугацаанд гүйцэтгэж гарган харуулж чаддаг байх ёстой гэсэн үг юм. Эндээс үүдээд тодорхой хугацаанд симуляци хийх шаардлага гарч ирнэ. Энэ нь бодит хугацааны тооцоолол гэж өөр нэг дэвшил бий болгож байгаа бөгөөд энэ нь цэвэр компьютерийн хүчин чадал алгоритмын боловсрол, чадамжтай холбогдоно. Гаргахыг зорьж буй дэвшил болгон үр ашиг, хугацаа, санах ойн багтаамж хамгийн бага байх цэнзүүрийг тавьдаг. Хугацаа хожих хамгийн чухал алгоримт бол аль болох зэрэгцээ байдлаар үйлдлийг гүйцэтгэх боломж юм. Үүнийг параллель тооцоолол гэж нэрлэнэ. Хоорондоо хамааралгүй үйлдлүүдийг нэг цаг хугацаанд гүйцэтгэж хамааралтай хэсгүүдийг нь цуваа байдлаар шийдэх байдлаар энэ тооцоолол явагдана. Хайлтын янз бүрийн алгоритмтой ижил олон талын хэрэглээтэй, байнга шахуу тооцоололд ашиглагддаг дэд програмуудыг кодны сан /libraries/ байдлаар хадгалаж тэлээлэн ашиглаж эхлээд байна. Ямар эх код хэрэгтэй байна, эсвэл ямар үйлдлийг гүйцэтгэмээр байна тэр болгонд хэрэгтэй эх кодыг сангаас олж авч системдээ холбож ашиглах боломжтой. Үүнтэй холбоотой өндөр чадамжит тооцоололын тухай өгүүллийг GPGPU хэрхэн ашиглахтай хамт бичсэнийг блогоос олж унших боломжтой. 


Тооцооллын шинжлэх ухаан салбар бүрээс хамаарч өөр өөр бүтэц ахуйтай байна. Тухайлбал физик, механикийн салбарт ихэвчлэн хэлхээст суурилдаг бол нийгэм, эдийн засгийн тооцоололд мэдээлэл дээр суурилдаг. Мөн уур амьсгал, зарим давтагдах, адил байх шинж чанартай үзэгдэлд хуучин ажиглалт, туршилтын мэдээллүүд үндэс болдог байх жишээтэй. Хуримтлагдсан мэдээлэл дээр анализ хийн тооцоолол үйлдэх боломжийг зарим салбарт эрэлхийлж байна. Энэ нь хэт онолд суурилсанаас хямд төсөл бөгөөд мэдээллийн эрин зуунд чухал шаардлагатай юм.

Улс төр, шинжлэх ухааны олон талын ач холбогдолтой тооцооллын шинжлэх ухааныг дэлгэрүүлэн судлах шаардлага их байна. 

No comments:

Post a Comment