Biz konteynerlashtirilgan ilovalarning asosiy g'oyasini tasvirlab berdik va Dockerni batafsil muhokama qildik


Download 45.9 Kb.
bet4/4
Sana13.04.2023
Hajmi45.9 Kb.
#1355483
1   2   3   4
Bog'liq
mustaqil ish 2

Yakuniy fikrlar
Konteyner texnologiyasi keng ko'lamli bulutli hisoblashni inqilob qildi va hozir HPC dunyosini ham bo'ron bilan qamrab oladi. Endi dasturni ish stolida yaratish va har qanday umumiy bulutlarda yuzlab yoki hatto minglab misollarni o'zgartirishsiz ishga tushirish mumkin. Superkompyuterlar ikkita "portativlik" inqilobidan o'tdi. Birinchi qadam Unix-ni deyarli bir xilda qabul qilish edi. Unix versiyalari juda xilma-xil bo'lsa-da, bu foydalanuvchilarga bir tizimdan ikkinchisiga o'tishni osonlashtirdi. Portativlikdagi ikkinchi inqilob MPI ning joriy etilishi va keng qo'llanilishi edi. Singularity yoki boshqa HPC konteyner texnologiyalaridan birini qabul qilish HPC ilovalarini ko'chirishda uchinchi inqilobni amalga oshirishi mumkin. Oxirgi etishmayotgan texnologiya bu konteynerlarni almashish usulidir. Biz BioContainers kabi echimlar paydo bo'lishini ko'rishni boshladik,
Nihoyat, Singularity ochiq manba harakatidan o'sib chiqqanligi diqqatga sazovordir. Ishlab chiquvchilarning asosiy jamoasi - bu HPC arxitektorlari, tadqiqotchi dasturiy ta'minot muhandislari va akademiklarning aralash guruhi. Singularity Hub yagona shaxs tomonidan qo'llab-quvvatlangan va hozir ham davom etmoqda. Ushbu umumiy kuzatish rag'batlantiruvchi omil bo'lib, u bizga ajoyib g'oyalar kutilmagan joylardan kelib chiqishi mumkinligini o'rgatadi va ba'zida kattaroq tashkilot taqdim etishini kutish o'rniga o'zingiz xohlagan va kerakli vosita yoki dasturiy ta'minotni yaratishga arziydi.
Kichik o'quv qo'llanma
Quyidagi paragraflarda biz MPI prgramini qanday o'z ichiga olishi va tasvirni almashish uchun Singularity Hub-dan qanday foydalanishni ko'rsatish uchun mo'ljallangan oddiy misol bilan Singularityni ko'rsatamiz.
Singularity konteynerini yaratish uchun avvalo Singularity o'rnatishingiz kerak. Biz buni 16 yadroli Azure mashinasida AZURE maʼlumotlar fanining VM misolida qilishni tanladik. Oldindan o'rnatilgan barcha ajoyib kutubxonalar tufayli bu juda foydali VM. U CentOS Linux Version 7-da ishlaydi. Singularity-ni o'rnatish oson edi.

Keyingi qadam Singularity konteyner tasvirini yaratishdir. Siz birinchi navbatda buyruq bilan asosiy konteyner tasvirini yaratasiz.

Biz ko'p ma'lumotlar va kutubxonalarni yuklash uchun etarlicha katta bo'lishi uchun 2Gig hajmini belgiladik, ammo 800 Meg atrofidagi standart o'lcham bu erda ko'rsatganimiz uchun etarlicha katta.
Keyin biz operatsion tizimni va dastur kutubxonalarimizni va ikkilik fayllarni yuklashimiz kerak. Singularity ham, CharlieCloud ham Docker bilan bir xil Linux imkoniyatlariga asoslanganligi sababli, Docker konteyner fayl tizimining mazmunini Singularity va CharlieCloud konteynerlariga yuklash mumkin. Singularity holatida siz elementlarni buyruq satridan birma-bir yuklashingiz mumkin, lekin konteynerni Singularity ta'rifi spetsifikatsiya faylidan yuklash yaxshidir (biz uni quyida Singularity "spec" fayli deb yuritamiz). Biz ishlatganimiz quyida ko'rsatilgan va tushuntirilgan. Ushbu fayl "Singularity" deb ataladi.
BootStrap: docker
Kimdan: dbgannon/ubuntuplus
%fayllar
%yorliqlar
XIZMATCHI gannon
% muhit
LD_LIBRARY_PATH=/usr/local/lib
eksport LD_LIBRARY_PATH=/usr/local/lib
% runscript
echo "Konteynerni ishga tushirganingizda shunday bo'ladi..."
/usr/bin/ring-oddiy
%post
echo "Konteyner ichidan salom"
apt-get -y yangilanishi
apt-get -y yangilash
apt-get -y o'rnating vim
apt-get -y install-essential
apt-get -y wget-ni o'rnating
wget https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.0.tar.bz2
tar -xf openmpi-2.1.0.tar.bz2
echo "openmpi o'rnatilmoqda"
ls
cd openmpi-2.1.0
./configure --prefix=/usr/local
qilish
o'rnatish
echo "bajarildi"
eksport LD_LIBRARY_PATH=/usr/local/lib
ls /mpikodlar
mpicc /mpicodes/ring-simple.c -o /usr/bin/ring-simple
Ushbu spetsifikatsiya faylida oltita muhim qism mavjud: sarlavha va % kalit so'zlar bilan belgilangan bo'limlar. Sarlavha Singularity-ga biz konteynerni "dbgannon/ubuntuplus" deb nomlangan docker tasviridan qurayotganimizni aytadi. Bu dbgannon/ubuntuplus uchun docker fayli juda oddiy. Unda faqat asosiy ubuntu OS va "mpicodes" deb nomlangan manba kodlarimizni o'z ichiga olgan katalog mavjud.
Biz konteynerni VM-da (u erda bizda sudo imtiyozlari mavjud) buyruq bilan quramiz.
%sudo /usr/lib/bin/singularity bootstrap mysing-container.img Singularity


bu erda "Singularity" yuqoridagi qurilish spetsifikatsiyasi faylidir. Ushbu yuklash operatsiyasi faylning "post" bo'limidagi skriptni bajaradi. Post skripti ubuntu operatsion tizimini yangilaydi, standart qurish vositalarini qo'shadi va konteyner fayl maydonidagi /usr/local/lib-ga to'g'ri MPI kutubxonalarini joylashtiradigan OpenMPI-ni to'liq o'rnatadi. Nihoyat, u ring-simple deb nomlangan oddiy mpi dasturini tuzadi va bajariladigan faylni /usr/bin da saqlaydi, bu umumiy bajariladigan fayllar uchun standart joy. E'tibor bering, biz buni sudo yordamida "root" imtiyozlari bilan bajardik, shuning uchun ushbu katalogni o'zgartirish mumkin.
Bootstrap post skriptini tugatgandan so'ng, u "fayllar" bo'limini bajaradi. Bu yerda bu boʻsh, lekin uning vazifasi fayllarni xost manbasi yoʻlidan konteynerdagi yoʻlga nusxalashdir. Keyin u atrof-muhit o'zgaruvchilarini "atrof-muhit" bo'limida tavsiflangan tarzda o'rnatadi.
Bootstrap tugallangandan so'ng bizda konteynerni ishga tushirishning bir necha usullari mavjud. Biri oddiy.
$bash ./mysing-container.img


Singularity spetsifikatsiya faylida belgilanganidek "runscript" ni ishga tushiradi. Boshqa usul
$singularity exec mysing-container.img buyrug'i


foydalanuvchi identifikatori bilan konteynerning operatsion tizimidagi "buyruq" ni bajaradi. Biz ikkalasini keyingi paragraflarda tasvirlaymiz.
Biz kiritgan MPI dasturi ring-simple.c quyida ko'rsatilgan. Bu asosan yarim halqa. mpi tugun 0 1-tugunga -1-ni yuboradi. 1-tugun 0-ni 2-tugunga va hokazolarni eng yuqori darajali tugun xabarni qabul qilmaguncha va dasturdan chiqmaguncha yuboradi. MPI aloqalari ishlayotgani ahamiyatsiz sinovdir.
#o'z ichiga
#include
#include
#o'z ichiga
int main (int argc, char** argv) {
 // MPI muhitini ishga tushiring
 MPI_Init (NULL, NULL);
 // Darajani, hajmini aniqlang
 int world_rank;
 MPI_Comm_rank(MPI_COMM_WORLD, &dunyo_darajasi);
 int world_size;
 MPI_Comm_size(MPI_COMM_WORLD, &dunyo_hajmi);
 char xost nomi[1024];
 gethostname (hostname, 1024);
 // Biz bu vazifa uchun kamida 2 ta jarayonni qabul qilamiz
agar (dunyo hajmi < 2) {
fprintf(stderr, "Dunyo o'lchami 1 dan katta bo'lishi kerak\n");
MPI_Abort(MPI_COMM_WORLD, 1);
 }
int raqami;
 int i;
 agar (dunyo_darajasi == 0) {
// Agar biz 0-darajali bo'lsak, raqamni -1 ga qo'ying va uni 1 jarayonga yuboring
printf("1-jarayonga 0 jo'natish jarayoni\n");
raqam = -1;
MPI_Send(&raqam, 1, MPI_INT, 1, 0, MPI_COMM_WORLD);
}
else if (dunyo_oʻlchami 0 && dunyo_oʻlchami < dunyo_oʻlchami) {
MPI_Recv(&raqam, 1, MPI_INT, jahon_darajasi-1, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
printf("%d jarayoni %s tugunidagi %d jarayonidan %d raqamini oldi\n", dunyo_darajasi, raqam, dunyo_darajasi-1, xost nomi);
raqam = raqam+1;
agar (dunyo_darajasi MPI_Yuborish(&raqam, 1, MPI_INT, jahon_darajasi+1, 0, MPI_COMM_WORLD);
}
 }
 MPI_Finalize();
}


Ushbu MPI dasturini ishga tushirish uchun Azure VM-da o'rnatilmagan "mpirun" ni bajarishimiz kerak. OpenMPI-ni VM-ga o'rnatish uchun biz "post" skriptida ko'rsatilgandek bir xil OpenMPI-ni o'rnatdik. Buni tugatgandan so'ng, biz konteynerni oddiy dastur kabi bajardik
Download 45.9 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling