Pokročilé architektury počítačů
|
|
- Bedřich Beran
- před 7 lety
- Počet zobrazení:
Transkript
1 Pokročilé architektury počítačů 03 Programování paralelních systémů Část II. OpenMP a MPI České vysoké učení technické, fakulta elektrotechnická A4M36PAP Pokročilé architektury počítačů Ver
2 Přehled: OpenMP vs. MPI OpenMP (Open Multi-Processing) jenom pro SMS jednoduchá paralelizace (pomocí direktiv) implicitní komunikace MPI (Message Passing Interface) jak pro SMS tak DMS náročné pro programátora (paralelizace, debugging) explicitní komunikace Hybridní přístup: OpenMP + MPI současný softwarový trend v paralelním počítání MPI napříč uzly clusteru, OpenMP uvnitř uzlu (efektivní využití prostředků; potlačení komunikačního přetížení uvnitř uzlu; dynamické vyvažování zátěže) je možné dosáhnout lepší speedup než při použití jenom OpenMP nebo jenom MPI A4M36PAP Pokročilé architektury počítačů 2
3 MPP Cray XT5-HE výpočetních uzlů ( VE celkem), servisní uzly pro I/O Jeden uzel dva 6-jádrové procesory oba přístup do sdílené paměti Každý uzel 25.6 GB/s do lokální paměti (XT6: 85.3 GB/sec ), 6.4GB/s do sítě, Uzly jsou pospojovány do 3D toroidu 12 OpenMP nebo MPI úloh v uzlu, MPI mezi uzly A4M36PAP Pokročilé architektury počítačů 3
4 Cluster poskytuje výpočetní výkon spojením vícero počítačů (obvykle střední cenové kategorie) patří sem 85 % systémů z dnes 500 nejvýkonnějších výhodou je nižší cena, dobrá škálovatelnost A4M36PAP Pokročilé architektury počítačů 4
5 Příklad výpočet určitého integrálu y f(x) b = a I f ( x) dx a b x A4M36PAP Pokročilé architektury počítačů 5
6 #include <stdio.h> Příklad výpočet určitého integrálu double integral(double a, double b, double (*f)(double), unsigned long int N) { double sum=0, dx=(b-a)/n, x=a+dx; long int i; for(i=1; i<n; i++ ) sum += f(x+i*dx); sum += (f(a)+f(b))/2; return sum*dx; double polynom(double x) { return 2*x+1; void main() { long int N=5e8; double res, a=4, b=5; res = integral(a, b, polynom, N); printf("i = %lf ",res); A4M36PAP Pokročilé architektury počítačů 6
7 #include <stdio.h> #include <omp.h> Příklad výpočet určitého integrálu double integral(double a, double b, double (*f)(double), unsigned long int N) { double sum=0, dx=(b-a)/n, x=a+dx; long int i; #pragma omp parallel for shared(x,n,dx,f) private(i) reduction(+:sum) for(i=1; i<n; i++ ) sum += f(x+i*dx); sum += (f(a)+f(b))/2; return sum*dx; double polynom(double x) { return 2*x+1; void main() { long int N=5e8; double res, a=4, b=5; res = integral(a, b, polynom, N); printf("i = %lf ",res); Speedup: 1,85!!! A4M36PAP Pokročilé architektury počítačů 7
8 OpenMP - přehled vše začíná: #pragma omp directive [clause list] program běží sekvenčně pokud nenarazí na parallel direktivu clause list specifikuje podmínky paralelizace, počet vláken, přístup k datům a následnou manipulaci s nimi, rozčleňování.. podmíněná paralelizace: if(scalar expression) stupeň paralelizace: num_threads(integer expression) přístup k datům: shared(variable list), private(variable list), firstprivate(variable list) sběr privátních dat na konci paralelního vykonávání: reduction(operator: variable list), možné operátory: +, *, -,&,, ^, &&, rozčleňování a rozvrhování: schedule(scheduling_class[, parameter]), přičemž je možné volit z: static, dynamic, guided, a runtime A4M36PAP Pokročilé architektury počítačů 8
9 OpenMP paralelizace for cyklů #pragma omp parallel default (private) shared (n) { #pragma omp for for (int i = 0; i < n; i++) { /* tělo cyklu*/ nebo zkráceně: #pragma omp parallel for default (private) shared (n) for (int i = 0; i < n; i++) { /* tělo cyklu*/ A4M36PAP Pokročilé architektury počítačů 9
10 OpenMP paralelizace for cyklů #pragma omp parallel default (private) shared (n) { #pragma omp for for (i = 1; i < n; i++) { a[i] = i + a[i-1];? A4M36PAP Pokročilé architektury počítačů 10
11 OpenMP každé vlákno dělá něco jiného sekvenční vykonávání taska(); taskb(); A4M36PAP Pokročilé architektury počítačů 11
12 OpenMP každé vlákno dělá něco jiného 1 #pragma omp parallel 2 { 3 #pragma omp sections 4 { 5 #pragma omp section 6 { 7 taska(); 8 9 #pragma omp section 10 { 11 taskb(); paralelní vykonávání taska taskb A4M36PAP Pokročilé architektury počítačů 12
13 nebo zkráceně: OpenMP každé vlákno dělá něco jiného 1 #pragma omp parallel sections 2 { 3 #pragma omp section 4 { 5 taska(); 6 7 #pragma omp section 8 { 9 taskb(); A4M36PAP Pokročilé architektury počítačů 13
14 OpenMP co dále umožňuje? vnořený paralelizmus (OMP_NESTED nastavit na TRUE) explicitně specifikovat bariéry (bod synchronizace) označit kód, který má vykonávat pouze jedno vlákno (buď libovolné nebo master) označit kritickou sekci (může vstoupit a vykonávat pouze jedno vlákno v daném čase; ostatní buď čekají, nebo jsou již za touto sekcí) uspořádané vykonávání (jako při sériovém vykonávání) vynucení zápisu do paměti (aktualizace proměnných..) flush; kdy se flush použije implicitně? A flush is implied at a barrier, at the entry and exit of critical, ordered, parallel, parallel for, and parallel sections blocks and at the exit of for, sections, and single blocks. A flush is not implied if a nowait clause is present. It is also not implied at the entry of for, sections, and single blocks and at entry or exit of a master block. A4M36PAP Pokročilé architektury počítačů 14
15 OpenMP co dále poskytuje? void omp_set_num_threads (int num_threads); int omp_get_num_threads (); int omp_get_max_threads (); int omp_get_thread_num (); int omp_get_num_procs (); int omp_in_parallel(); void omp_init_lock (omp_lock_t *lock); void omp_destroy_lock (omp_lock_t *lock); void omp_set_lock (omp_lock_t *lock); void omp_unset_lock (omp_lock_t *lock); int omp_test_lock (omp_lock_t *lock); A mnoho jiných funkcí A4M36PAP Pokročilé architektury počítačů 15
16 #include <stdio.h> Příklad výpočet určitého integrálu jinak double integral(double a, double b, double (*f)(double), long N); double polynom(double x) { return 2*x+1; void main() { long int N=5e8; double res, a=4, b=5; y a y = k x + q x b res = integral(a, b, polynom, N); printf("i = %lf ",res); A4M36PAP Pokročilé architektury počítačů 16
17 #include <stdio.h> Příklad výpočet určitého integrálu jinak double integral(double a, double b, double (*f)(double), long N); double polynom(double x) { return 2*x+1; void main() { long int N=5e8; double res, a=4, b=5; int i=0, pp=1; y (b-a)/pp a y = k x + q x b a b N res = integral(a+((b-a)/pp)*i, a+((b-a)/pp)*(i+1), polynom, N/pp); printf("i = %lf ",res); A4M36PAP Pokročilé architektury počítačů 17
18 #include <stdio.h> Příklad výpočet určitého integrálu jinak double integral(double a, double b, double (*f)(double), long N); double polynom(double x) { return 2*x+1; void main() { long int N=5e8; double res, a=4, b=5; int i=???, pp=4; y (b-a)/pp a i = y = k x + q b x res = integral(a+((b-a)/pp)*i, a+((b-a)/pp)*(i+1), polynom, N/pp); printf("i = %lf ",res); A4M36PAP Pokročilé architektury počítačů 18
19 #include <stdio.h> #include <omp.h> Příklad výpočet určitého integrálu jinak double integral(double a, double b, double (*f)(double), long N); double polynom(double x) { return 2*x+1; void main() { long int N=5e8; double res, a=4, b=5; int i, pp=4; y (b-a)/pp a i = #pragma omp parallel private(i) reduction(+:res) num_threads(pp) { i = omp_get_thread_num(); res = integral(a+((b-a)/pp)*i, a+((b-a)/pp)*(i+1), polynom, N/pp); printf("i = %lf ",res); y = k x + q A4M36PAP Pokročilé architektury počítačů 19 b x
20 #include <stdio.h> #include <omp.h> Příklad výpočet určitého integrálu jinak double integral(double a, double b, double (*f)(double), long N); double polynom(double x) { return 2*x+1; void main() { long int N=5e8; a b double res, a=4, b=5; int i, pp; i = pp = omp_get_num_procs(); #pragma omp parallel private(i) reduction(+:res) num_threads(pp) { i = omp_get_thread_num(); res = integral(a+((b-a)/pp)*i, a+((b-a)/pp)*(i+1), polynom, N/pp); printf("i = %lf ",res); y (b-a)/pp y = k x + q A4M36PAP Pokročilé architektury počítačů 20 x
21 #include <omp.h> int a, b, i, tid; #pragma omp threadprivate(a) OpenMP další příklad main () { omp_set_dynamic(0); /* Explicitly turn off dynamic threads */ #pragma omp parallel private(b,tid) { tid = omp_get_thread_num(); a = b = tid; printf("thread %d: a,b,%d %d \n",tid,a,b); /* end of parallel section */ #pragma omp parallel private(tid) { tid = omp_get_thread_num(); printf("thread %d: a,b,%d %d \n",tid,a,b); /* end of parallel section */ A4M36PAP Pokročilé architektury počítačů 21
22 MPI Message Passing Interface komunikace je explicitní, proto: většina MPI funkcí požaduje komunikátor jako argument, komunikátor je objekt definující skupinu procesů, které mohou vzájemně mezi sebou komunikovat, komunikátor MPI_COMM_WORLD zahrnuje všechny procesy, uvnitř komunikátoru pak mají všechny procesy přiděleno své unikátní identifikační číslo RANK, komunikace je buď kolektivní (zúčastňují se všechny procesy komunikátoru), nebo point-to-point A4M36PAP Pokročilé architektury počítačů 22
23 kolektivní komunikace: je vždy blokující, MPI Message Passing Interface používá předdefinované datové typy MPI (MPI_CHAR, MPI_INT, MPI_LONG, ) se dále dělí na: synchronizaci (procesy se počkají v daném bodě) kolektivní výpočet (redukci) kdy jeden proces sesbírá data od všech ostatních a vykoná nad nimi zadanou operaci přesuny dat (Broadcast, Scatter, Gather, All-to-All) A4M36PAP Pokročilé architektury počítačů 23
24 #include <stdio.h> #include <mpi.h> MPI téměř minimální program void main(int argc, char *argv[]) { int numprocs, rank, namelen; char proc_name[mpi_max_processor_name]; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Get_processor_name(processor_name, &namelen); printf("process %d on %s out of %d\n", rank, proc_name, numprocs); MPI_Finalize(); A4M36PAP Pokročilé architektury počítačů 24
25 #include <stdio.h> #include "mpi.h" Příklad výpočet určitého integrálu ještě jinak inline double f(double x) { return 2*x+1; int main(int argc, char *argv[]) { int myid, numprocs,volba=0; unsigned long int i, n; double startwtime, endwtime, a = 4.0, b = 5.0; double total, integral = 0.0; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); // zjistí počet procesů MPI_Comm_rank(MPI_COMM_WORLD, &myid); // zjistí číslo procesu A4M36PAP Pokročilé architektury počítačů 25
26 Příklad výpočet určitého integrálu ještě jinak do { if (myid == 0) { printf("\n Zadej pocet intervalu (0 pro ukonceni): "); fflush(stdout); scanf("%ld", &n); if(n==0) break; startwtime = MPI_Wtime(); // pošle proměnou n, délky 1, typu int, z procesu #0 ostatním MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD); A4M36PAP Pokročilé architektury počítačů 26
27 Příklad výpočet určitého integrálu ještě jinak if (n!= 0) { double h = (b - a) / n; double i1 = myid*(n/ numprocs); double i2 = (myid+1)*(n/numprocs); integral= ( f(a+i1*h) + f(a+i2*h) ) / 2; for( i=i1+1 ; i<i2 ; i++ ) integral += f(a+i*h); // proměnou integral ze všech procesů převede do total procesu 0, // délka 1, typ double, operace sčítání MPI_Reduce(&integral, &total, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); A4M36PAP Pokročilé architektury počítačů 27
28 Příklad výpočet určitého integrálu ještě jinak if (myid == 0) { endwtime = MPI_Wtime(); printf("i= %f\n", total); printf("trvani vypoctu: %f s\n", endwtime - startwtime); fflush(stdout); while (n!= 0); MPI_Finalize(); return 0; A4M36PAP Pokročilé architektury počítačů 28
29 Příklad výpočet určitého integrálu ještě jinak Výpočet na osmi jedno-jádrových procesorech: Hlavní proces Speedup: 7.89!! Grafy nejsou zarovnány A4M36PAP Pokročilé architektury počítačů 29
30 Kombinace OpenMP a MPI téměř minimální program #include <stdio.h> #include "mpi.h" #include <omp.h> int main(int argc, char *argv[]) { int numprocs, rank, namelen, iam = 0, np; char processor_name[mpi_max_processor_name]; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Get_processor_name(processor_name, &namelen); #pragma omp parallel default(shared) private(iam, np) { np = omp_get_num_threads(); iam = omp_get_thread_num(); printf("hello from thread %d out of %d from process %d out of %d on %s\n", iam, np, rank, numprocs, processor_name); MPI_Finalize(); return 0; A4M36PAP Pokročilé architektury počítačů 30
Vícevláknové programování na CPU: POSIX vlákna a OpenMP I. Šimeček
Vícevláknové programování na CPU: POSIX vlákna a OpenMP I. Šimeček xsimecek@fit.cvut.cz Katedra počítačových systémů FIT České vysoké učení technické v Praze Ivan Šimeček, 2011 MI-PRC, LS2010/11, Predn.2
Paralení programování pro vícejádrové stroje s použitím OpenMP. B4B36PDV Paralelní a distribuované výpočty
Paralení programování pro vícejádrové stroje s použitím OpenMP B4B36PDV Paralelní a distribuované výpočty Minulé cvičení: Vlákna a jejich synchronizace v C++ 11... 1 Minulé cvičení: Vlákna a jejich synchronizace
Vláknové programování část V
Vláknové programování část V Lukáš Hejmánek, Petr Holub {xhejtman,hopet}@ics.muni.cz Laboratoř pokročilých síťových technologií PV192 2012 04 17 1/46 Přehled přednášky Open MP 2/46 Open MP Standard pro
Ústav technické matematiky FS ( Ústav technické matematiky FS ) / 35
Úvod do paralelního programování 2 MPI Jakub Šístek Ústav technické matematiky FS 9.1.2007 ( Ústav technické matematiky FS ) 9.1.2007 1 / 35 Osnova 1 Opakování 2 Představení Message Passing Interface (MPI)
Paralelní architektury se sdílenou pamětí
Paralelní architektury se sdílenou pamětí Multiprocesory Multiprocesory se sdílenou pamětí SMP architektury Přístup do paměti OpenMP Multiprocesorové architektury I. Multiprocesor se skládá z několika
Úvod do OpenMP. Jiří Fürst
Úvod do OpenMP Jiří Fürst Osnova: Úvod do paralelního programování Počítače se sdílenou pamětí Základy OpenMP Sdílené a soukromé proměnné Paralelizace cyklů Příklady Úvod do paralelního programování Počítač
Paralelní architektury se sdílenou pamětí
Paralelní architektury se sdílenou pamětí Multiprocesory Multiprocesory se sdílenou pamětí SMP architektury Přístup do paměti OpenMP Multiprocesorové architektury I. Multiprocesor se skládá z několika
Programování založené na posílání zpráv
Programování založené na posílání zpráv Standard MPI Standard pro posílání zpráv - MPI = Message Passing Interface Dostupné implementace OpenMPI - http://www.open-mpi.org/ LAM-MPI - http://www.lam-mpi.org/
Motivace. Software. Literatura a odkazy
Využití paralelních výpočtů ve stavební mechanice Motivace Paralelní počítače Software Možnosti využití ve stavební mechanice Příklady Literatura a odkazy 1 Motivace Časová náročnost výpočtů Rozsáhlé úlohy
Vláknové programování část V
Vláknové programování část V Lukáš Hejmánek, Petr Holub {xhejtman,hopet}@ics.muni.cz Laboratoř pokročilých síťových technologií PV192 2010 04 08 1/60 Přehled přednášky Open MP 2/60 Open MP Standard pro
Vlákna a přístup ke sdílené paměti. B4B36PDV Paralelní a distribuované výpočty
Vlákna a přístup ke sdílené paměti B4B36PDV Paralelní a distribuované výpočty Minulé cvičení: Paralelizace nám může pomoct... 1 Minulé cvičení: Paralelizace nám může pomoct... B4B36PDV: Ale ne všechny
Paralelní výpočetní jádro matematického modelu elektrostatického zvlákňování
Paralelní výpočetní jádro matematického modelu elektrostatického zvlákňování Milan Šimko Technická univerzita v Liberci Interní odborný seminář KO MIX 19. prosince 2011 Obsah prezentace 1 MOTIVACE 2 VLÁKNOVÝ
Paralelní a distribuované výpočty (B4B36PDV)
Paralelní a distribuované výpočty (B4B36PDV) Branislav Bošanský, Michal Jakob bosansky@fel.cvut.cz Artificial Intelligence Center Department of Computer Science Faculty of Electrical Engineering Czech
Úvod do MPI. Úvod do MPI Operace send a recieve Blokující a neblokující posílání zpráv Blokující posílání zpráv Neblokující posílání zpráv
Úvod do MPI Úvod do MPI Operace send a recieve Blokující a neblokující posílání zpráv Blokující posílání zpráv Neblokující posílání zpráv Komunikační operace All-to-all broadcast/all-to-all reduction All-reduce
Paralelní a distribuované výpočty (B4B36PDV)
Paralelní a distribuované výpočty (B4B36PDV) Branislav Bošanský, Michal Jakob bosansky@fel.cvut.cz Artificial Intelligence Center Department of Computer Science Faculty of Electrical Engineering Czech
Proč potřebujeme komunikátory? - pokrač. Týden 4 Programování zasíláním zpráv (MP) - programování v MPI - počítání na svazcích stanic
Proč potřebujeme komunikátory? - pokrač. Týden 4 Programování zasíláním zpráv (MP) - programování v MPI - počítání na svazcích stanic Nelze zajistit různost příznaků: - neznáme příznaky v knihovních podprogramech,
Paralelní architektury se sdílenou pamětí typu NUMA. NUMA architektury
Paralelní architektury se sdílenou pamětí typu NUMA NUMA architektury Multiprocesorové systémy s distribuovanou pamětí I. úzkým hrdlem multiprocesorů se sdílenou pamětí je datová komunikace s rostoucím
Programování bez vláken. OpenMP
Programování bez vláken Tradiční přístup je vytvoření vícevláknového programu, kde se řekne, co má které vlákno dělat Ale jde to i jinak, lze vytvořit program tak, že se řekne, co se má udělat paralelně
Operační systémy. Cvičení 4: Programování v C pod Unixem
Operační systémy Cvičení 4: Programování v C pod Unixem 1 Obsah cvičení Řídící struktury Funkce Dynamická alokace paměti Ladění programu Kde najít další informace Poznámka: uvedené příklady jsou dostupné
Martin Lísal. Úvod do MPI
Martin Lísal září 2003 PARALELNÍ POČÍTÁNÍ Úvod do MPI 1 1 Co je to paralelní počítání? Paralelní počítání je počítání na paralelních počítačích či jinak řečeno využití více než jednoho procesoru při výpočtu
for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }
5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu
PROGRAMOVÁNÍ V C++ CVIČENÍ
PROGRAMOVÁNÍ V C++ CVIČENÍ INFORMACE Michal Brabec http://www.ksi.mff.cuni.cz/ http://www.ksi.mff.cuni.cz/~brabec/ brabec@ksi.mff.cuni.cz gmichal.brabec@gmail.com PODMÍNKY ZÁPOČTU Základní podmínky společné
Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií
1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední
Programovani v Maplu Procedura
Programovani v Maplu Procedura Priklad: procedura, ktera scita 2 cisla: a + 2*b soucet := proc (a, b) local c; # lokalni promenna - existuje a meni se jenom uvnitr procedury c:=a+b; # globalni promenna
Paralelní programování
Paralelní programování přednášky Jan Outrata únor květen 2011 Jan Outrata (KI UP) Paralelní programování únor květen 2011 1 / 15 Simulátor konkurence abstrakce = libovolné proložení atom. akcí sekvenčních
Procesy a vlákna (Processes and Threads)
ÚVOD DO OPERAČNÍCH SYSTÉMŮ Ver.1.00 Procesy a vlákna (Processes and Threads) Správa procesů a vláken České vysoké učení technické Fakulta elektrotechnická 2012 Použitá literatura [1] Stallings, W.: Operating
Algoritmizace a programování
Algoritmizace a programování Strukturované proměnné Struktura, union Jazyk C České vysoké učení technické Fakulta elektrotechnická A8B14ADP Jazyk C - Strukturované proměnné Ver.1.10 J. Zděnek 20151 Struktura
Algoritmizace a programování
Algoritmizace a programování Jazyk C řízení běhu programu České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Šest zákonů programování 1. V každém programu je alespoň jedna chyba
Algoritmizace a programování
Algoritmizace a programování Jazyk C řízení běhu programu České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Šest zákonů programování 1. V každém programu je alespoň jedna chyba
Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu
Procesy, vlákna Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu Implementace vláken one-to-one o implementace na úrovni jádra o každé vlákno je pro
Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21
Stručný obsah 1. Hardware, procesory a vlákna... 19 2. Programování s ohledemna výkon... 45 3. Identifikování příležitostí pro paralelizmus... 93 4. Synchronizace a sdílení dat... 123 5. Vlákna v rozhraní
Algoritmizace a programování
Algoritmizace a programování Strukturované proměnné Pole (array), ukazatele (pointer) Jazyk C České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Pole (array) (1) Pole je množina
C++ 0x aka C++11. Základním kamenem je třída std::thread
C++ 0x aka C++11 Jako jiné jazyky, např. Free/Object Pascal, se C++ ve standardu ++0x dočkal podpory vláken Výhodou je, že standardní knihovna je platformě nezávislá na úrovni zdrojového kódu Základním
2 Datové typy v jazyce C
1 Procedurální programování a strukturované programování Charakteristické pro procedurální programování je organizace programu, který řeší daný problém, do bloků (procedur, funkcí, subrutin). Původně jednolitý,
Zápis programu v jazyce C#
Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač
Paralelní programování
Paralelní programování přednáška 5 Michal Krupka 15. března 2011 Michal Krupka (KI UP) Paralelní programování 15. března 2011 1 / 13 Ještě ke kritickým sekcím Použití v praxi obvykle pomocí zámků (locks)
Vláknové programování část VI
Vláknové programování část VI Lukáš Hejmánek, Petr Holub {xhejtman,hopet}@ics.muni.cz Laboratoř pokročilých síťových technologií PV192 2015 04 14 1/95 Vytváření vláken a procesů v Linuxu Vlákno vzniká
Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;
Programovací jazyk C(++) static struct vm_area_struct * unmap_fixup(struct mm_struct *mm, struct vm_area_struct *area, unsigned long addr, size_t len, struct vm_area_struct 1. *extra) Základy { struct
Cvičení předmětu MI-PAR P. Tvrdík, I. Šimeček, M. Šoch
Cvičení předmětu MI-PAR P Tvrdík, I Šimeček, M Šoch paveltvrdik,xsimecek,soch@fitcvutcz Katedra počítačových systémů FIT České vysoké učení technické v Praze 2011 MI-PAR, ZS2011/12, Cv1-6 Příprava studijního
Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)
Příklad aplikace Klient/Server s Boss/Worker modelem (informativní) Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze A0B36PR2 Programování 2 Jan Faigl, 2015 A0B36PR2
Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b
Výrazy a operátory i = 2 i = 2; to je výraz to je příkaz 4. Operátory Unární - unární a unární + Např.: +5-5 -8.345 -a +b - unární ++ - inkrement - zvýší hodnotu proměnné o 1 - unární -- - dekrement -
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 1/41 Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! 2/41 Základní příkazy
IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí
Velké projekty v C velký = 100ky a více řádek udržovatelnost, bezpečnost, přehlednost kódu rozdělení programu do více souborů další prvky globální proměnné, řízení viditelnosti proměnných, funkcí Globální
Paralelní algoritmy --- Parallel Algorithms
Paralelní algoritmy --- Parallel Algorithms Přemysl Šůcha suchap@fel.cvut.cz Motivace Nepopíratelnost trendu směřování k paralelním systémům i více-jádrový telefon je dnes samozřejmostí energetická efektivita
Základní operace. Prefix sum. Segmentovaný prefix-sum
Základní operace Paralelní redukce Paralelní redukce na architekturách se sdílenou pamětí Paralelní redukce na architekturách s distribuovanou pamětí Paralelní redukce na GPU v CUDA Prefix sum Segmentovaný
IUJCE 07/08 Přednáška č. 1
Úvod do předmětu Literatura Záznamy přednášek a vaše poznámky Harbison, S. P., Steele, G. L.: Referenční příručka jazyka C Herout, P.: Učebnice jazyka C Kernighan, B. W., Ritchie, D. M.: The C Programming
Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí
02 Jazyk C - je imperativní říkáme, co se má udělat, voláme příkazy - další imperativní jazyky: Pascal, Java, C/C++ apod. - na rozdíl od jazyků deklarativních např. Prolog, Haskell, Scheme, Lisp (funkcionální
Programovací jazyk C++ Hodina 1
Programovací jazyk C++ Hodina 1 Používané překladače Bloodshed Dev C++ http://www.bloodshed.net/devcpp.html CodeBlocks http://www.codeblocks.org pokud nemáte již nainstalovaný překladač, stáhněte si instalátor
Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15
Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole
Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Příkaz switch Příkaz switch provede příslušnou skupinu příkazů na základě hodnoty proměnné (celočíselné
OpenMP (Open Specification for Multi Processing)
OpenMP (Open Specification for Multi Processing) OpenMP je rozhraní (application programming interface, API) pro (explicitní) programování paralelních aplikací na (jednom) počítači s více procesory (jádry)
Paralelní a distribuované výpočty (B4B36PDV)
Paralelní a distribuované výpočty (B4B36PDV) Branislav Bošanský, Michal Jakob bosansky@fel.cvut.cz Artificial Intelligence Center Department of Computer Science Faculty of Electrical Engineering Czech
Paralelní a distribuované výpočty (B4B36PDV)
Paralelní a distribuované výpočty (B4B36PDV) Branislav Bošanský, Michal Jakob bosansky@fel.cvut.cz Artificial Intelligence Center Department of Computer Science Faculty of Electrical Engineering Czech
Jazyk C++, některá rozšíření oproti C
Karel Müller, Josef Vogel (ČVUT FIT) Jazyk C++, některá rozšíření oproti C BI-PA2, 2011, Přednáška 1 1/22 Jazyk C++, některá rozšíření oproti C Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra
Správné vytvoření a otevření textového souboru pro čtení a zápis představuje
f1(&pole[4]); funkci f1 předáváme hodnotu 4. prvku adresu 4. prvku adresu 5. prvku hodnotu 5. prvku symbolická konstanta pro konec souboru je eof EOF FEOF feof Správné vytvoření a otevření textového souboru
Pavel Procházka. 3. prosince 2014
Jazyk C# (seminář 11) Pavel Procházka KMI 3. prosince 2014 Motivace Dnes už se prakticky nedělají jednojádrové procesory pokud potřebujeme výkon, musíme zapojit všechna jádra Často potřebujeme dělat více
dostat zdroják Petr Zemek Fakulta informačních technologií VUT v Brně izemek
Zpětný překlad aneb jak z binárky dostat zdroják Petr Zemek Fakulta informačních technologií VUT v Brně Božetěchova 2, 612 66 Brno, ČR http://www.fit.vutbr.cz/ izemek Brněnské Pyvo, 24.4.2014 Něco málo
Vláknové programování část I
Vláknové programování část I Lukáš Hejmánek, Petr Holub {xhejtman,hopet}@ics.muni.cz Laboratoř pokročilých síťových technologií PV192 2015 04 07 1/27 Vláknové programování v C/C++ 1. Procesy, vlákna, přepínání
Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů
Začínáme vážně programovat Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů Podmínky a cykly Dokončení stručného přehledu řídících struktur jazyka C. Složený příkaz, blok Pascalské
Transformace digitalizovaného obrazu
Transformace digitalizovaného obrazu KIV/PPR Martina Málková (tina.malkova@centrum.cz) *15.10.1984 1 Zadání Realizujte transformaci digitalizovaného obrazu zadaného jako matice (m,n) s celočíselnými prvky.
- jak udělat konstantu long int: L long velka = 78L;
Konstanty (konstatní hodnoty) Např.: - desítkové: 25, 45, 567, 45.678 - osmičkové: 045, 023, 03 vždy začínají 0 - šestnáctkové: 0x12, 0xF2, 0Xcd, 0xff, 0xFF - jak udělat konstantu long int: 245566553L
Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele
Strukturu lze funkci předat: hodnotou i pomocí ukazatele pouze pomocí ukazatele (reference na strukturu) pouze hodnotou (kopie struktury) (pole[i])+j adresa prvku na souřadnicích i, j adresa i-tého řádku
x86 assembler and inline assembler in GCC
x86 assembler and inline assembler in GCC Michal Sojka sojkam1@fel.cvut.cz ČVUT, FEL License: CC-BY-SA 4.0 Useful instructions mov moves data between registers and memory mov $1,%eax # move 1 to register
OPS Paralelní systémy, seznam pojmů, klasifikace
Moorův zákon (polovina 60. let) : Výpočetní výkon a počet tranzistorů na jeden CPU chip integrovaného obvodu mikroprocesoru se každý jeden až dva roky zdvojnásobí; cena se zmenší na polovinu. Paralelismus
1 Rozdělení paralelních úloh z hlediska jejich
Martin Lísal říjen 2003 1 Rozdělení paralelních úloh z hlediska jejich spolupráce během výpočtu Podle spolupráce během výpočtu můžeme rozdělit paralelní úlohy na MPMD (Multiple Program Multiple Data) úlohy
Paralelní programování
Paralelní programování přednášky Jan Outrata únor duben 2011 Jan Outrata (KI UP) Paralelní programování únor duben 2011 1 / 11 Literatura Ben-Ari M.: Principles of concurrent and distributed programming.
Procesy a vlákna - synchronizace
ÚVOD DO OPERAČNÍCH SYSTÉMŮ Ver.1.00 Procesy a vlákna - synchronizace České vysoké učení technické Fakulta elektrotechnická 2010 Studijní materiály a informace o předmětu http://measure.feld.cvut.cz/vyuka/predmety/bakalarske/navody
Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016
Preprocesor Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016 Programování v C++, A7B36PJC 4/2016, Lekce 9b https://cw.fel.cvut.cz/wiki/courses/a7b36pjc/start
Koncepce (větších) programů. Základy programování 2 Tomáš Kühr
Koncepce (větších) programů Základy programování 2 Tomáš Kühr Parametry a návratová hodnota main Již víme, že main je funkce A také tušíme, že je trochu jiná než ostatní funkce v programu Funkce main je
Paralelizace výpočtů v systému Mathematica
Paralelizace výpočtů v systému Mathematica Zdeněk Buk bukz1@fel.cvut.cz České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačů 2010 2 paralelizace-2010-buk-eval.nb Úvod Obsah prezentace
Operační systémy. Cvičení 3: Programování v C pod Unixem
Operační systémy Cvičení 3: Programování v C pod Unixem 1 Obsah cvičení Editace zdrojového kódu Překlad zdrojového kódu Základní datové typy, struktura, ukazatel, pole Načtení vstupních dat Poznámka: uvedené
Programovanie v jazyku C - ti to zratam...
CVIČENIE 2/13 (S7) Programovanie v jazyku C - ti to zratam... PrednaskaB: Datové typy PrednaskaZ: Výrazy a příkazy, programové konstrukce, operátory About aritmeticke operacie TODO: Declaration vs. definition
2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.
Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv copyright To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího (aby
Základy programování (IZP)
Základy programování (IZP) Páté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 5. týden
Struktura programu v době běhu
Struktura programu v době běhu Miroslav Beneš Dušan Kolář Struktura programu v době běhu Vztah mezi zdrojovým programem a činností přeloženého programu reprezentace dat správa paměti aktivace podprogramů
Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a
Aplikace Embedded systémů v Mechatronice Aplikace Embedded systémů v Mechatronice Obsah přednášky: Opakovaní Funkce v C Tvorba knihoven Konfigurační bity #pragma Makra v C #define Debugging v MPLAB Hardware
Objektově orientované programování
10. října 2011 Pragmatické informace Volitelný předmět, zápočet: zápočtový program(s dokumentací), aktivní účast na cvičení(body v CodExu), praktický test, zkouška: zkoušková písemka na objektový návrh
Operační systémy. Přednáška 4: Komunikace mezi procesy
Operační systémy Přednáška 4: Komunikace mezi procesy 1 Časově závislé chyby Dva nebo několik procesů používá (čte/zapisuje) společné sdílené prostředky (např. sdílená paměť, sdílení proměnné, sdílené
Základní komunikační operace
Základní komunikační operace Úvod Operace send a recieve Blokující a neblokující posílání zpráv Blokující posílání zpráv Neblokující posílání zpráv One-to-all broadcast/all-to-one reduction All-to-all
Jakub Čermák jakub@jcermak.cz, http://www.jcermak.cz Microsoft Student Partner
Jakub Čermák jakub@jcermak.cz, http://www.jcermak.cz Microsoft Student Partner Co paralelizace přinese? Jak paralelizovat? Jak si ušetřit práci? Jak nedělat běžné paralelizační chyby? Race condition, deadlocky
Algoritmizace a programování
Algoritmizace a programování Jazyk C funkce České vysoké učení technické Fakulta elektrotechnická A8B14ADP Algoritmizace a programovaní -Jazyk C -Ver.1.00 funkce J. Zděnek 20151 Funkce Funkce - černá (programová)
C++ objektově orientovaná nadstavba programovacího jazyka C
C++ objektově orientovaná nadstavba programovacího jazyka C (1. část) Josef Dobeš Katedra radioelektroniky (13137), blok B2, místnost 722 dobes@fel.cvut.cz 5. května 2014 České vysoké učení technické v
Optimalizace pomocí icc/gcc - vektorizace
Optimalizace pomocí icc/gcc - vektorizace ICC/ICPC ICC/ICPC - překladače pro jazyky C/C++ od firmy Intel ke stažení po registraci na http://www.intel.com/cd/software/products/asmona/eng/compilers/clin/219856.htm
Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016
ZPRO cvičení 2 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague October 17, 2016 Outline I 1 Outline 2 Proměnné 3 Proměnné - cvičení 4 Funkce 5 Funkce
Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false
Logické operace Datový typ bool může nabýt hodnot: o true o false Relační operátory pravda, 1, nepravda, 0, hodnoty všech primitivních datových typů (int, double ) jsou uspořádané lze je porovnávat binární
Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události
Petr Blaha Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce (matematické, textové,
Pokročilé architektury počítačů
Pokročilé architektury počítačů Tutoriál 3 CUDA - GPU Martin Milata Výpočetní model CUDA Organizace kódu Sériově organizovaný kód určený pro CPU Paralelní kód prováděný na GPU Označuje se jako kernel GPU
Programování v C++ 1, 1. cvičení
Programování v C++ 1, 1. cvičení opakování látky ze základů programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí procvičených
Paralelní grafové algoritmy
Paralelní grafové algoritmy Značení Minimální kostra grafu Nejkratší cesta z jednoho uzlu Nejkratší cesta mezi všemi dvojicemi uzlů Použité značení Definition Bud G = (V, E) graf. Pro libovolný uzel u
Řídicí struktury. alg3 1
Řídicí struktury Řídicí struktura je programová konstrukce, která se skládá z dílčích příkazů a předepisuje pro ně způsob provedení Tři druhy řídicích struktur: posloupnost, předepisující postupné provedení
Základy programování (IZP)
Základy programování (IZP) Šesté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 6. týden
IB109 Návrh a implementace paralelních systémů. Organizace kurzu a úvod. RNDr. Jiří Barnat, Ph.D.
IB109 Návrh a implementace paralelních systémů Organizace kurzu a úvod RNDr. Jiří Barnat, Ph.D. Sekce B109 Návrh a implementace paralelních systémů: Organizace kurzu a úvod str. 2/25 Organizace kurzu Organizace
Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo
Datové typy v Javě Tomáš Pitner, upravil Marek Šabo Úvod k datovým typům v Javě Existují dvě základní kategorie datových typů: primitivní a objektové Primitivní v proměnné je uložena přímo hodnota např.
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY TECHNIKY PARALELNÍHO ZPRACOVÁNÍ VÝPOČTŮ
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV TELEKOMUNIKACÍ FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF TELECOMMUNICATIONS
Pokročilé programování v jazyce C pro chemiky (C3220) Vstup a výstup v C++
Pokročilé programování v jazyce C pro chemiky (C3220) Vstup a výstup v C++ Proudy pro standardní vstup a výstup V jazyce C++ provádíme textový vstup a výstup prostřednictvím tzv. datových proudů Datové
Základní datové struktury
Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013
Řídící struktury, if, while, switch
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Řídící struktury, if, while, switch BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík Fakulta informačních
C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++
C++ Akademie SH 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory Za áte níci C++ 20. b ezna 2011 Obsah 1 Prom nné - primitivní typy Celá ísla ƒísla s pohyblivou desetinnou árkou, typ bool 2 Podmínka
Dílčí příklady použití jazykových konstrukcí v projektu. Jazyk C Příklady. Pravidla překladu v gmake. Zadání
Dílčí příklady použití jazykových konstrukcí v projektu Jazyk C Příklady Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 10 A0B36PR2 Programování 2 Program