Biz konteynerlashtirilgan ilovalarning asosiy g'oyasini tasvirlab berdik va Dockerni batafsil muhokama qildik
Download 45.9 Kb.
|
mustaqil ish 2
- Bu sahifa navigatsiya:
- Kichik oquv qollanma
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_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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling