Parallel dasturlash tushunchasining paydo bo’lish tarixi va unga sabab bo’lgan omillar



Yüklə 1,98 Mb.
səhifə19/20
tarix05.06.2023
ölçüsü1,98 Mb.
#115566
1   ...   12   13   14   15   16   17   18   19   20
Parallel dasturlash tushunchasining paydo bo’lish tarixi va unga

Taqsimlangan xotirali
Bunday arxitekturaga ega hisoblash tizimlarida har protsessorda alohida jarayon bajarilib, bu jarayon boshqa protsessorlardagi jarayonlar bilan xabarlar jo’natish yo’li bilan o’zaro aloqada bo’lishi tashkil etiladi.
Taqsimlangan xotirali
Taqsimlangan xotirali arxitekturaga ega hisoblash tizimlarida jarayonlar o’rtasidagi xabar almashinuvini MPI texnologiyasi orqali tashkil etish qulay hisoblanadi.
MPI(Message Passing Interface)-bu bir xil vazifani bajaradigan jarayonlar o'rtasida xabar almashish imkonini beradigan ma'lumotlarni uzatish uchun mo'ljallangan dasturlash interfeysi.

  1. Parallel dasturlar yaratish ikoniyatini beruvchi dasturlash kutubxonalari

Thread kutubxonasi

  1. Parallel dasturlar yaratish ikoniyatini beruvchi dasturlash texnologiyalari

  2. C++ da oqimlar yaratish kutubxonalari

Thread kutubxonasi . Oqim xususiyatlar – Oqimlar bir qator xususiyatlarga ega ya‘ni ularda
qanday funksiyalardan foydalanishmoqda va ular orqali ma‘lumotlarni chiqarish
qanday amalga oshirilmoqda.Oqimlarning bunday xususiyatlarining ko‘pchiligi
―fopen()funksiyasi bilan aniqlangan:

  1. Ekranda “Salom Universitet” so’zini chiqaruvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
using namespace std;
void one()
{
cout<<"salom universitet " <}
int main()
{
thread bir(one);
cout <<"main tugadi"<bir.join();
return 0;
}

  1. String tipidagi 1 ta parametrga ega va shu parametrga “Hello” so’zini qo’shib, ekranga chiqaruvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
using namespace std;
void work(string name){
this_thread::sleep_for(chrono::milliseconds(1000));
cout<<"======\t"<<"DoWork STARTED\t======="<this_thread::sleep_for(chrono::milliseconds(1000));

cout<<"\t Hello "<

this_thread::sleep_for(chrono::milliseconds(1000));


cout<<"======\t"<<"DoWork STOPPED\t======="<}int main()
{
string name="YouName";
thread one(work,name);
cout<<"\t Funcsiya Main"<

one.join();


return 0;
}

  1. String tipidagi 2 ta parametrga ega va bu parametrlarni birlashtirib(qo’shib) ekranga chiqaruvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
using namespace std;
void work(string name,string surname){
this_thread::sleep_for(chrono::milliseconds(1000));
cout<<"======\t"<<"DoWork STARTED\t======="<this_thread::sleep_for(chrono::milliseconds(1000));
cout<<"\t "<this_thread::sleep_for(chrono::milliseconds(1000));
cout<<"======\t"<<"DoWork STOPPED\t======="<}int main()
{
string name="YouName",
surname="YouSurname";
thread one(work,name,surname);
cout<<"\t Funcsiya Main"<one.join();
return 0;
}

  1. int tipidagi 2 ta parametrga ega va bu parametrlarni qo’shib ekranga chiqaruvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
using namespace std;
void work(int a,int b){
cout<}
int main()
{
int a,b;
a=10;b=5;
thread one(work,a,b);

cout<<"Funcsiya Main";


one.join();


return 0;
}

  1. int tipidagi 2 ta parametrga ega va bu parametrlarning o’rta arifmetigini ekranga chiqaruvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
using namespace std;
void work(int a,int b){
cout<one.join();
return 0;
}

  1. int tipidagi 3 ta parametrga ega va bu parametrlarning o’rta geometrigini ekranga chiqaruvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
#include
using namespace std;
void work(int a,int b,int c){
cout<}
int main()
{
int a,b,c;
a=3;b=9;c=1;
thread one(work,a,b,c);
cout<<"Funcsiya Main";
one.join();
return 0;
}

  1. To’g’ri burchakli uchburchakning int tipidagi 2 ta katetlari uzunligini parameter sifatida qabul qilib, bu uchburchakning gepotenuzasi uzunligini hisoblovchi va float tipidagi qiymat yaratuvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
#include
using namespace std;
float work(int a,int b){
float c=pow((a*a+b*b),0.5);
return c;
}
int main()
{
int a,b;
a=3;b=4;
float c;
thread one([&c](){
c=work(4,6);
});
cout<<"Funcsiya Main"<one.join();
cout<<"3 va 4 qiymatlarda javob="<return 0;
}

  1. To’g’ri burchakli to’rtburchakning int tipidagi 2 ta tomonlari uzunligini parameter sifatida qabul qilib, bu to’rtburchakning perimetrini hisoblovchi va int tipidagi qiymat yaratuvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
#include
using namespace std;
void work(int a,int b){
cout<< (a+b)*2;
}
int main()
{
int a,b;
a=3;b=4;
int c;
thread one([&c](){
c=work(3,4);
});
cout<<"Funcsiya Main"<one.join();
cout<<"3 va 4 qiymatlarda javob="<return 0;
}

  1. To’g’ri burchakli to’rtburchakning int tipidagi 2 ta tomonlari uzunligini parameter sifatida qabul qilib, bu to’rtburchakning yuzasini hisoblovchi va int tipidagi qiymat yaratuvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
using namespace std;
int work(int a,int b){
return (a+b)*2;
}
int main()
{
int a,b;
a=3;b=4;
int c;
thread one([&c](){
c=work(3,4);
});
cout<<"Funcsiya Main"<one.join();
cout<<"3 va 4 qiymatlarda javob="<return 0;
}

  1. Int tipidagi A o’zgaruvchini parameter sifatida qabul qilib, bu o’zgaruvchining kvadratini hisoblovchi va int tipidagi qiymat yaratuvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
#include
using namespace std;
int work(int A){
return pow(A,2);
}
int main()
{
int A=5;
int c;
thread one([&c](){
c=work(5);
});
cout<<"Funcsiya Main"<one.join();
cout<<"5 qiymatlarda javob="<return 0;
}

  1. Int tipidagi A o’zgaruvchini parameter sifatida qabul qilib, bu o’zgaruvchining kvadrat ildizini hisoblovchi va float tipidagi qiymat yaratuvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
#include
using namespace std;
int work(int A){
return sqrt(A);
}
int main()
{
int A=25;
int c;
thread one([&c](){
c=work(25);
});
cout<<"Funcsiya Main"<one.join();
cout<<"25 qiymatlarda javob="<return 0;
}

  1. Int tipidagi A va B o’zgaruvchilarini parameter sifatida qabul qilib, bu o’zgaruvchilarning kvadratlari yig’indisini hisoblovchi va int tipidagi qiymat yaratuvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
#include
using namespace std;
int work(int A,int B){
return (A*A)+B*B;
}
int main()
{
int A=3,B=4;
int c;
thread one([&c](){
c=work(4,3);
});
cout<<"Funcsiya Main"<one.join();
cout<<"4 va 3 qiymatlarda javob="<return 0;
}

  1. Int tipidagi A va B o’zgaruvchilarini parameter sifatida qabul qilib, bu o’zgaruvchilarning kattasini ekranga chiqaruvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
#include
using namespace std;
void work(int A,int B){
cout<}
int main()
{
int A=3,B=4;
thread one(work,A,B);
cout<<"Funcsiya Main"<one.join();
return 0;
}

  1. Int tipidagi A va B o’zgaruvchilarini parameter sifatida qabul qilib, bu o’zgaruvchilarning kichigini ekranga chiqaruvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
#include
using namespace std;
void work(int A,int B){
cout<}
int main()
{
int A=3,B=4;
thread one(work,A,B);
cout<<"Funcsiya Main"<one.join();
return 0;
}

  1. Int tipidagi A va B o’zgaruvchilarini parameter sifatida qabul qilib, bu sonlarning ko’paytmasini ekranga chiqaruvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
using namespace std;
void work(int A,int B){
cout<}
int main()
{
int A=3,B=4;
thread one(work,A,B);
cout<<"Funcsiya Main"<one.join();
return 0;
}



  1. Int tipidagi A va B o’zgaruvchilarini parameter sifatida qabul qilib, bu sonlarning ayirmasi modulini ekranga chiqaruvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
#include
using namespace std;
void work(int A,int B){
cout<}
int main()
{
int A=3,B=4;
thread one(work,A,B);
cout<<"Funcsiya Main"<one.join();
return 0;
}

  1. Int tipidagi A o’zgaruvchini parameter sifatida qabul qilib, bu o’zgaruvchiga qarama-qarshi sonni ekranga chiqaruvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
#include
using namespace std;
void work(int A){
if(A>0) cout<else cout<}
int main()
{
int A=3;
thread one(work,A);
cout<<"Funcsiya Main"<one.join();
return 0;
}

  1. Int tipidagi A o’zgaruvchini parameter sifatida qabul qilib, bu o’zgaruvchiga teskari sonni ekranga chiqaruvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
#include
using namespace std;
void work(double A){
cout<}
int main()
{
double A=2;
thread one(work,A);
cout<<"Funcsiya Main"<one.join();
return 0;
}

  1. Int tipidagi A o’zgaruvchini parameter sifatida qabul qilib, bu o’zgaruvchining qiymatini 2 ga bo’lib ekranga chiqaruvchi float tipidagi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
#include
using namespace std;
void work(int A){
double B=A;
cout<}
int main()
{
int A=5;
thread one(work,A);
cout<<"Funcsiya Main"<one.join();
return 0;
}

  1. Int tipidagi N o’zgaruvchini parameter sifatida qabul qilib, bu N gacha bo’lgan barcha butun sonlar(bir qadam bilan) yig’indisini ekranga chiqaruvchi int tipidagi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
#include
using namespace std;
int work(int N){
int s=0;
for(int i=1;is+=i;
}
cout<}
int main()
{
int N=5;
thread one(work,N);
cout<<"Funcsiya Main"<one.join();
return 0;
}

  1. Int tipidagi N o’zgaruvchini parameter sifatida qabul qilib, bu N gacha bo’lgan barcha butun sonlar(bir qadam bilan) ko’paytmasini ekranga chiqaruvchi int tipidagi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
#include
using namespace std;
int work(int N){
int s=1;
for(int i=1;is*=i;
}
cout<}
int main()
{
int N=5;
thread one(work,N);
cout<<"Funcsiya Main"<one.join();
return 0;
}

  1. Int tipidagi N o’zgaruvchini parameter sifatida qabul qilib, bu N gacha bo’lgan barcha butun sonlar(bir qadam bilan) o’rta arifmetigini ekranga chiqaruvchi float tipidagi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
#include
using namespace std;
int work(int N){
int s=0;
for(int i=1;is+=i;
}
cout<}
int main()
{
int N=5;
thread one(work,N);
cout<<"Funcsiya Main"<one.join();
return 0;
}

  1. Int tipidagi N o’zgaruvchini parameter sifatida qabul qilib, bu N gacha bo’lgan barcha butun sonlar(bir qadam bilan) o’rta geometrigini ekranga chiqaruvchi float tipidagi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
#include
using namespace std;
float work(int N)
{
int s=1;
for(int i=1;is*=i;
}
cout<}
int main()
{
int N=5;
thread one(work,N);
cout<<"Funcsiya Main"<one.join();
return 0;
}

  1. String S va N int tipidagi 2 ta parametrga ega va shu S parametrni N marta ekranga chiqaruvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
using namespace std;
void work(int N,string S)
{
for(int i=1;i<=N;i++)
{
cout<}
}
int N;string S;
int main()
{
cout<<"Son kiriting : "; cin>>N;
cout<<"Matnni Kiriting : "; cin>>S ;
thread one (work,N,S);
cout<<"Main Funksiya !"<one.join();
return 0;
}

  1. String S parametrga ega va shu S parametrning uzunligini ekranga chiqaruvchi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
using namespace std;
void work(string S)
{
cout << "Satr uzunligi: " << S.size() << "\n";
}
int main()
{
string S;
cout << "Ismingiz nima? ";
getline(cin, S);
thread one(work, S);
cout<<"Funksiya main !"<one.join();
return 0;
}

  1. float tipidagi F o’zgaruvchini parameter sifatida qabul qilib, bu F sonining faqat butun qismini ekranga chiqaruvchi int tipidagi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
using namespace std;
int work(float F)
{
return (int)F;
}

int main()


{
int d;
thread one([&d]()
{
float F;
cout<<"F sonini kiriting : ";cin>>F;
d=work(F);
});
cout<<"Main Funksiyasi !";
one.join();
cout<return 0;
}

  1. float tipidagi F o’zgaruvchini parameter sifatida qabul qilib, bu F sonining faqat kasr qismini ekranga chiqaruvchi float tipidagi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
#include
using namespace std;
float work(float F){
float f=F-floor(F);
cout<<"F ning kasr qiymati: "<}
int main()
{
thread one(work,15.236);
cout<<"Funcsiya Main"<one.join();
return 0;
}

  1. float tipidagi F o’zgaruvchini parameter sifatida qabul qilib, bu F sonining kvadrati va kubini ekranga chiqaruvchi int tipidagi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
using namespace std;
int work (float F)
{
return F*F;
}
float F;
int main()
{ int d;
cout<<"F sonini kiriting : " ;cin>>F;
thread one([&d]()
{
d=work(F);
});
cout << "Funksiya Main !" << endl;
one.join();
cout<<"F sonining kvadrati : "<cout<<"F sonining kubi : "<return 0;
}

  1. Int tipidagi R o’zgaruvchini parameter sifatida qabul qilib, aylana uzunligini(2*Pi*R) hisoblab ekranga chiqaruvchi float tipidagi funksiya yarating. Bu funksiyani main() funksiya oqimi tugamasdan kutubxonasidan foydalanib, parallel ravishda ishga tushirish dasturini tuzing.

#include
#include
#include
using namespace std;
float work (int R)
{
return 2*M_PI*R;
}
int R;
int main()
{ int d;
cout<<"Aylananing radiusini kiriting : " ;cin>>R;
thread one([&d]()
{
d=work(R);
});
cout << "Funksiya Main !" << endl;
one.join();
cout<<"Aylananing uzunligi : "<return 0;
}


  1. Yüklə 1,98 Mb.

    Dostları ilə paylaş:
1   ...   12   13   14   15   16   17   18   19   20




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

    Ana səhifə