1-Laboratoriya ishi



Yüklə 33,39 Kb.
tarix07.01.2024
ölçüsü33,39 Kb.
#211820
Hisobot-2



Muhammad Al-Xorazmiy nomidagi
Toshkent axborot texnologiyalari universiteti

1-Laboratoriya ishi

Mavzu: Cuda texnologiyasi asosida tasvirlarga parallel ishlov berish


Talaba: Ibodullayev Davron
Tekshirdi: Boburxon To’rayev

Toshkent – 2023


Ishdan maqsad: Cuda texnologiyasi asosida tasvirlarga parallel ishlov berish



  1. Nazariy qism


CUDA (Compute Unified Device Architecture) - bu NVIDIA tomonidan ishlab chiqilgan platforma va model bo'lib, GPGPU (General-Purpose Graphics Processing Unit) ishlab chiqarish uchun ishlatiladi. Bu texnologiya odatda matematik va kompyuter xayoli bo'yicha chetlashtirish va parallel hisoblash uchun ishlatiladi. Tasvirlar va tasvirlar bilan ishlash uchun ham bu texnologiyadan foydalanish mumkin.

Asosiy tushunchalar:


Kernellar: CUDA parallel hisoblash tushunchalaridan biri kernel (yadro) hisoblash. Kernel - bu parallel operatsiyalarni bajarish uchun ma'lum bir amalni bajaruvchi funksiya. Tasvirlarga parallel ishlaydigan funksiyalarni yozish uchun C/C++ dasturlash tili ishlatiladi.


Grid va Block: Tasvirlar parallel ravishda yoki parallel qatorlar yozish uchun blocklar va gridlar orqali tushiriladi. Blocklar tasvirlar bo'yicha bitta kerakli qismni ishlab chiqish uchun va gridlar blocklar bo'yicha qancha ishlab chiqarilishi kerakligini aniqlash uchun ishlatiladi.


Tasvir (Image): Tasvir - bu parallel hisoblashda ishlatiladigan ma'lumotlarni o'z ichiga olish uchun maksimal sifatida kapsulyatlangan ma'lumotlar turi. Tasvirlarni ishlatish tasvirlarni o'qish va yozish operatsiyalarini parallellashtirish imkonini beradi.


GPU (Graphics Processing Unit): NVIDIA GPU lar CUDA ni qo'llab quvvatlaydi. Bu GPU lar to'plamida ko'plab streaming multiprocessors (SM) mavjud va ular parallellashtirish va CUDA kodlarini ishga tushirish uchun foydalaniladi.


Paralell tasvirlarni tahrirlash uchun misol kod bilan, tasvirlarni parallel ravishda o'qish va tahrirlash jarayonini ko'rsatdim. Bu misolda tasvirlarni GPU da yozish va tahrirlash yordamida hisoblash imkoniyatini ko'rsatdim. Tasvirlarni parallel ravishda tahrirlashda o'zgarishlarni qo'llash va ma'lumotlarni yozish uchun GPU ni foydalanishni o'rganishni boshlaganingizda, ko'p ma'lumotlarni o'rganishingiz kerak bo'ladi.
Tabii, CUDA haqida boshqa ma'lumotlarni taqdim etishim mumkin:
Thread va Thread Block: Tasvirlarni parallel ravishda ishlatish uchun, GPU da threadlar va thread blocklar orqali parallel amallarni bajarish mumkin. Har bir thread, ma'lum bir element yoki operatsiya uchun alohida amalni bajaradi. Thread blocklar, threadlar guruhi bo'lib, ularning to'plami grid tashkil etadi.
Global va Device Memory: GPU da ma'lumotlarni saqlash uchun global va device memory ishlatiladi. Global xotira, barcha thread blocklari uchun ko'rinadi va ular orasida ma'lumotlar almashish imkoniyatini beradi. Device xotira esa faqatgina GPU dagi threadlar uchun ko'rinadi.
Kernel Funksiyalari: Kernel funksiyalari C/C++ dasturlash tilida yoziladi, lekin ular GPU da ishga tushiriladi. Kernel funksiyalari tashqi dasturda chaqiriladi va GPU da bajariladi.
Synchronization: GPU-da amalni bajarayotganda, ba'zi holatlarda amallar o'zaro mos ravishda bajarilishi kerak bo'lishi mumkin. Bu sababli synchronization (o'zaro tanlov) imkoniyatlarini o'rganish juda muhimdir.

CUDA C++ Toolkit: CUDA o'zining C++ dasturlash qo'shimchalarini o'z ichiga olgan toolkit bilan ta'minlanadi. Bu toolkit, CUDA bilan ishlaganda kerak bo'lgan funksiyalarni va vositalarni taqdim etadi.


Debugging va Profiling: CUDA kodlarni yozishda xatoliklarni topish va optimallashtirish uchun, debugging va profiling vositalari mavjud. Bu vositalar xatoliklarni aniqlash va amallarni tezlashtirishda yordam beradi.
Ishlab chiqarish Vositalari: CUDA dasturlash jarayonida GPU daqiq ta'riflash uchun profiling va ishlab chiqarish vositalari, masalan, NVIDIA Nsight, yordam beradi.
Qo'shimcha ma'lumotlar: CUDA-ni o'rganishni davom ettikda, GPU'da ko'p qo'shimcha ma'lumotlar, masalan, constant memory, texture memory, shared memory, atomar operatsiyalar va boshqa imkoniyatlarni o'rganishingiz kerak bo'ladi.
CUDA, hozirda parallel tasvirlarni tahrirlash, texnologiyalarni aniqlash, matsalarni yechish, shifrlash va boshqa ko'plab amallarni bajarishda foydalaniladi. Bu, GPU lar orqali parallel hisoblashning samarador va tez ravishda amalga oshirish uchun qulay yechimlardan biri.

package ppl;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public class ParallelImageProcessing {


public static void main(String[] args) {
int numThreads = Runtime.getRuntime().availableProcessors(); // Kompyuterda mavjud protsessorlar soni
ExecutorService executor = Executors.newFixedThreadPool(numThreads);

// Tasvirlarni o'zgartirish uchun ParallelImageProcessor klasini ishlatamiz


String[] imagePaths = {"image1.jpg", "image2.jpg", "image3.jpg", "image4.jpg"};

long startTime = System.currentTimeMillis(); // Boshlang'ich vaqti


for (String imagePath : imagePaths) {
Runnable imageProcessor = new ParallelImageProcessor(imagePath);
executor.execute(imageProcessor);
}

executor.shutdown();

try {
executor.awaitTermination(1, TimeUnit.HOURS);
} catch (InterruptedException e) {
e.printStackTrace();
}

long endTime = System.currentTimeMillis(); // Tugash vaqti


long elapsedTime = endTime - startTime; // Ish bajarish vaqti
System.out.println("Ish bajarish vaqti (ms): " + elapsedTime);
}
}

class ParallelImageProcessor implements Runnable {


private String imagePath;

public ParallelImageProcessor(String imagePath) {


this.imagePath = imagePath;
}

@Override


public void run() {
long startTime = System.currentTimeMillis(); // Boshlang'ich vaqti
// Tasvirni o'zgartirishni bajarish uchun kerakli kodni yozing
System.out.println("Tasvir o'zgartirildi: " + imagePath);
long endTime = System.currentTimeMillis(); // Tugash vaqti
long elapsedTime = endTime - startTime; // Ish bajarish vaqti
System.out.println(imagePath + "ni o'zgartirish vaqti (ms): " + elapsedTime);
}
}




Yüklə 33,39 Kb.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin