• Ishdan maqsad
  • Yunalishi guruh talabasi fio kompyuter arxitekturasi fanidan 4-topshiriq mavzu




    Download 271,58 Kb.
    Pdf ko'rish
    bet1/2
    Sana08.12.2023
    Hajmi271,58 Kb.
    #114004
      1   2
    Bog'liq
    KA dan 4-Topshiriq



    Yunalishi 
    guruh talabasi 
    FIO 
     
    KOMPYUTER ARXITEKTURASI FANIDAN
    4-TOPSHIRIQ 
    MAVZU: CUDA TEXNOLOGIYASI VA UNING IMKONIYATLARI 
    Ishdan maqsad: Gertogen hisoblash tizimlarida parallel dasturlar tuzush 
    ko’nikmasiga ega bo’lish. CUDA texnologiyasi bilan tanishish va uning yordamida 
    parallel dasturlar yaratish tamoillarini o’rganish. 
    I. 
    Nazariy qism 
    CUDA texnologiyasi. Hozirda zamonaviy yuqori unumdorli hisoblash 
    tizimlari geterogen (gibridli) tizimlar hisoblanadi. Bunday tizimlar ikkita asosiy 
    tipga ega komponentalardan tashkil topgan: ko‘p yadroli markaziy protsessor va 
    massivli 
    parallel 
    tezlatgich 
    hisoblangan 
    grafik 
    protsessorlardir. 
    Bu 
    komponentalarning birgalikda ishlashi uchun maxsus texnologiyalar zarur 
    hisoblanadi. Videokartadagi grafik protsessorlar yordamida ma’lumotlarni qayta 
    ishlash uchun qo‘llaniladigan zamonaviy texnologiyalar hisoblash vaqtini 
    bajariladigan operat siyalarni massivli parallelashtirish hisobiga sezilarli ravishda 
    qisqartirish imkoniyatini beradi. Grafik protsessor arxitekturasi ko‘p hisoblash 
    resurslarini talab qiladigan masalalarni hisoblashda foydalanish uchun juda mosdir.
    Bunday yuqori unumdorlikni ta’minlovchi texnologiyalardan biri CUDA 
    texnologiyasidir.
    1.1-rasm. CUDA potoklarni tashkil qilish 


    CUDA potoklarni tashkil qilish va GPU qurilmalarini boshqarish uchun 2 
    bosqichdagi API ni taqdim etadi (1.1-rasm). 
    ✓ CUDA Driver API 
    CUDA Runtime API 
    API Driver interfeysi qo‘yi darajadagi API sanaldi va dasturlashga nisbatan 
    qiyinroq , lekin GPU qurilmasidan foydalanishni yaxshi nazorat qiladi. API 
    Runtime yuqori darajali API sanaladi va geterogen hisoblash API Driver ning 
    yuqorisida tashkil qilingan[3].
    CUDA dastur qo‘yidagi 2 ta qism aralashmasidan tashkil topgan: 
    CPU da ishlaydigan host kod 
    ✓ GPU da ishlaydigan device kod 
    NVIDIA CUDA nvcc kompilyatori kompilyatsiya jarayoni vaqtida device 
    kodi va host kodini ajratadi. Host kod C ning standart kodi sanaladi va keyinchalik 
    C kompilyatorida kompilyatsiya qilinadi. Device kodi kernel deb ataluvchi parallel 
    funksiyalardan iborat. Bu funksiyalar CUDA C tilida yoziladi va nvcc 
    kompilyatorida kompilyatsiyalanadi. 
    CUDA C da dastur yozish uchun bizga qo‘yidagilarni amalga oshirishimiz 
    kerak: 
    1. 
    .cu fayl kengaytmasiga ega dastur kodi uchun fayl yaratish. 
    2. 
    CUDA 
    nvcc 
    kompilyatoridan 
    foydalangan 
    holda 
    dasturni 
    kompilyatsiyalash. 
    3. 
    Bo‘yruqlar satridan GPU yadrosida bajiriluvchi kodni ishga tushirish. 
    Avvalo GPU da bajarilishi kerak dasturni C dasturlash tilida yozib olamiz. 
    # include  
    int main(void) 

    printf(“Hello World from CPU!\n”); 

    Ushbu kodni hello.cu fayliga saqlaymiz va nvcc kompilyatorida bajaramiz. 
    Linux operatsion tizimida CUDA nvcc ni qo‘llagan holda ishga tushiramiz. 
    $ nvcc hello.cu -o hello 
    bajariladigan(exe) faylni ishga tushirsak qo‘yidagi satr ekranga chiqadi: 
    Hello World from CPU!
    So‘ngra helloFromGPU deb nomlanuvchi yadro funksiyasini yaratamiz. 
    Ushbu funksiya qo‘yidagi satrni ekranga chop qiladi. 
    __global__ void helloFromGPU(void) 

    printf(“Hello World from GPU!\n”); 



    global__ spetsifikatori kompilyatorga ushbu funktsiya markaziy protsesor 
    tomonidan chaqirilganligi va GPU da bajarilishi xaqida xabar beradi.  
     
    YAdro funksiyasini qo‘yidagi kod yordamida ishga tushiramiz. 
    helloFromGPU <<<1,5>>>(); 
    3 talik burchak qavslar funksiyani host potokdan chaqirilib device tomonda 
    bajarilishini belgilaydi. YAdro funksiyasi massivlar potokida bajariladi va barcha 
    potoklar aynan shu kodni ishga tushiradi. 3 talik burchak qavslari - bu bajarish 
    konfiguratsiyasi bo‘lib, yadro bajarishi mumkin bo‘lgan potoklar turidir.
    LISTING 1-1: Hello World from GPU (hello.cu) 
    #include  
    __global__ void helloFromGPU (void) 

    printf(“Hello World from GPU!\n”); 

    int main(void) 

    // hello from cpu 
    printf(“Hello World from CPU!\n”); 
    helloFromGPU <<<1, 5>>>(); 
    cudaDeviceReset(); 
    return 0; 

    YUqoridagi misolda GPUninig 5 ta oqimi ishga tushiriladi. Bu erda
    cudaDeviceReset() funksiyasi GPU xotirasini bushatadi. Dastur natijasi 
    qo‘yidagichadir. 
    $ ./hello 
    Hello World from CPU! 
    Hello World from GPU! 
    Hello World from GPU! 
    Hello World from GPU! 
    Hello World from GPU! 


    1-jadval. CUDA texnologiyasini qo’llab quvatlovchi GPU driver versiyalari 

    Download 271,58 Kb.
      1   2




    Download 271,58 Kb.
    Pdf ko'rish

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Yunalishi guruh talabasi fio kompyuter arxitekturasi fanidan 4-topshiriq mavzu

    Download 271,58 Kb.
    Pdf ko'rish