Programozási folyamat. Optimalizálás - gyakorlat. Tóth Gyula MTA-SZFKI. MTA-RMKI, Budapest, július 8.
|
|
- Zuzanna Baranowska
- 6 lat temu
- Przeglądów:
Transkrypt
1 Optimalizálás MTA-SZFKI MTA-RMKI, Budapest, július 8.
2 Tartalom 1 A CUDA futtatási modellje A párhuzamos feladat 2 Make it work. - A működő párhuzamos kódig Make it right. - A helyes eredmény Make it fast. - Optimalizálás 3 Memóriakezelés: global & shared Pontosság vagy sebesség? IEEE-754 vs. GPU További lehetőségek 4 1. példa: radiális eloszlásfüggvény 2. példa: lineáris tömb elemeinek összeadása 5
3 A CUDA futtatási modell A CUDA futtatási modellje A párhuzamos feladat A számítási háló (Computational grid) 1 A párhuzamosan futtatandó program a mag (kernel) 2 A magot szálak (thread) futtatják 3 A szálak 1,2 v. 3 dimenziós logikai csoportja a blokk (block) 4 A blokkok 1 v. 2 dimenziós logikai csoporta a teljes számítási háló (grid) Adatpárhuzamosítás Egyértelmű háló adathalmaz megfeleltetés az egyéni szálazonosítókon keresztül
4 Implementáció A CUDA futtatási modellje A párhuzamos feladat Feladat: az adathalmaz párhuzamosítása (grid) + a számítási feladat párhuzamosítása (kernel) Make it work. Make it right. Make it fast. Premature optimization is the root of all evil. A párhuzamos optimalizálás területei Az implementáció optimalizálása az architekturára Az optimális implementáció optimalizálása Megéri? A feladatmegoldás ideje (τ) = programfejlesztési idő (τ p) + futtatási idő (τ f ) Hibajavítási (debug) idő: τ soros d << τ párhuzamos d Murphy: τ p τ d Előfordulhat, hogy τ soros < τ párhuzamos
5 Make it work. - A működő párhuzamos kódig Make it work. - A működő párhuzamos kódig Make it right. - A helyes eredmény Make it fast. - Optimalizálás n m-es mátrixok összeadása CPU függvény void add matrix(float *a,float *b,float *c,int n,int m){ int idx; for (idx=0; idx<n*m; idx++) c[idx]=a[idx]+b[idx]; GPU mag global void add matrix(float *a,float *b,float *c,int n,int m){ int whoami=blockdim.x*blockidx.x+threadidx.x; if (whoami<n*m) c[whoami]=a[whoami]+b[whoami]; Lineáris tömbkezelés: a[n][m] 2D tömb NEM folytonos Egyszerű soros ciklus CPU host memórián dolgozik A főprogramból közvetlenül hívható Eltűnt a for ciklus, minden szál egyetlen összeadást végez whoami = 0... griddim.x blockdim.x 1 Lineáris tömbkezelés, 1D háló: Ha blockdim.x griddim.x n m minden elemet lefedtünk! GPU device memórián dolgozik
6 Make it work. - A működő párhuzamos kódig Make it work. - A működő párhuzamos kódig Make it right. - A helyes eredmény Make it fast. - Optimalizálás n m-es mátrixok összeadása Hívás a CPU-ról device float *a gpu,*b gpu,*c gpu; main(){ float *a,*b,*c; //... cudamemcpy(a gpu,a,n*m*sizeof(float),cudamemcpyhosttodevice); cudamemcpy(b gpu,b,n*m*sizeof(float),cudamemcpyhosttodevice); dim3 threads(threads); dim3 grid(n*m/threads+1); add matrix<<<grid,threads>>>(a gpu,b gpu,c gpu,n,m); cudamemcpy(c,c gpu,n*m*sizeof(float),cudamemcpydevicetohost); //... GPU mag global void add matrix(float *a,float *b,float *c,int n,int m){ int whoami=blockdim.x*blockidx.x+threadidx.x; if (whoami<n*m) c[whoami]=a[whoami]+b[whoami]; Folyamat Adatok felmásolása a GPU-ra A mag futtatása megadott hálón Az eredmény másolása a CPU-ra
7 Make it right. - A helyes eredmény Make it work. - A működő párhuzamos kódig Make it right. - A helyes eredmény Make it fast. - Optimalizálás Az eredmény helyessége Informatikai helyesség: helyes kernel műveletsor (soros debug) & helyes párhuzamosítás (!) Pontosság: Az informatikailag helyesen futó program eredménye megfelel a kívánalmaknak? Általános GPU hibák Informatikai hibák: Helytelen párhuzamos adatkezelés, szinkronizációs hiba, rossz adathalmaz lefedés Pontosság: A GPU nativ műveleteinek ismerete (IEEE-754 kivételek) Figyelem! A GPU gyors 3D ábrázolásra készült, nem tudományos szuperszámítógépnek!
8 Make it fast. - Optimalizálás Make it work. - A működő párhuzamos kódig Make it right. - A helyes eredmény Make it fast. - Optimalizálás Memóriahasználat global memory (coalesced memory access): A (lassú) globális memória írása/olvasása nagyságrendekkel felgyorsítható. multiprocessor cache (shared memory): kisebb ( 16kB), de gyors memória, egy blokk számára látható Egyéb Ciklus kifejtés (loop unrolling): τ loop+arithmetic > N τ arithmetic Beépített adattípusok - float2, float3, float4, double2, stb. GPU nativ függvények - minél pontosabb, annál lassabb... Algoritmus csere - hatékonyabb implementáció A fordítás optimalizálása - kapcsolók
9 GLOBAL MEMORY: Coalesced Memory access Memóriakezelés: global & shared Pontosság vagy sebesség? IEEE-754 vs. GPU Alapprobléma A globális memória látens ideje órajel (1 összeadás = 4 órajel) Fizikai futtatási modell: warp - a szálak fizikailag 32-es csokrokban futnak A szálak hozzáférése a globális memóriához rendezett, amennyiben: A memóriatartomány összefüggő és rendezett: 128 byte: minden szál egy float v. egy int adatot olvas 256 byte: minden szál egy float2 v. egy int2 adatot olvas 512 byte: minden szál egy float4 v. egy int4 adatot olvas a float3 NEM rendezett!!! A warp olvasási báziscíme (WBA) 16 x sizeof(type) többszöröse Egy csokron belül a k. szál éppen a (WBA+k). elemhez fér hozzá A memóriaműveletben nem muszáj minden szálnak részt venni A fenti szabályok írásra és olvasásra egyaránt vonatkoznak
10 GLOBAL MEMORY: Coalesced Memory access Memóriakezelés: global & shared Pontosság vagy sebesség? IEEE-754 vs. GPU Rendezett memória hozzáférés:
11 GLOBAL MEMORY: Coalesced Memory access Memóriakezelés: global & shared Pontosság vagy sebesség? IEEE-754 vs. GPU NEM rendezett memória hozzáférés:
12 SHARED MEMORY Memóriakezelés: global & shared Pontosság vagy sebesség? IEEE-754 vs. GPU Feladat: Négyzetes (n n) mátrix transzponálása Naiv GPU mag global void transpose matrix naive(float *in,float *out,int n){ int i=blockdim.x*blockidx.x+threadidx.x; int j=blockdim.y*blockidx.y+threadidx.y; if ((i<n)&&(j<n)) out[i*n+j]=in[j*n+i]; Memóriahozzáférés
13 SHARED MEMORY Memóriakezelés: global & shared Pontosság vagy sebesség? IEEE-754 vs. GPU Megoldás a shared memory használatán keresztül Naiv modell rendezett olvasás (gyors) NEM rendezett írás (lassú) GPU modell rendezett olvasás: global shared (gyors) transzponálás: shared shared (gyors) rendezett írás: shared global (gyors)
14 SHARED MEMORY Memóriakezelés: global & shared Pontosság vagy sebesség? IEEE-754 vs. GPU Gyors GPU mag global void transpose(float *in,float *out,int n) { shared float block[block DIM*BLOCK DIM]; int xblock=blockdim.x*blockidx.x; int yblock=blockdim.y*blockidx.y; int xindex=xblock+threadidx.x; int yindex=yblock+threadidx.y; int index out, index transpose; if ((xindex<n)&&(yindex<n)) { int index in=n*yindex+xindex; int index block=threadidx.y*block DIM+threadIdx.x; block[index block]=in[index in]; Naiv GPU mag global void transpose matrix naive(float *in,float *out,int n){ int i=blockdim.x*blockidx.x+threadidx.x; int j=blockdim.y*blockidx.y+threadidx.y; if ((i<n)&&(j<n)) out[i*n+j]=in[j*n+i]; Megérte? index transpose=threadidx.x*block DIM+threadIdx.y; index out=n*(xblock+threadidx.y)+(yblock+threadidx.x); synchthreads(); if ((xindex<n)&&(yindex<height)) { out[index out]=block[index transpose];
15 SHARED MEMORY Memóriakezelés: global & shared Pontosság vagy sebesség? IEEE-754 vs. GPU syncthreads() Az egy blokkban futó szálak ennél az utasításnál bevárják egymást shared memory használat esetén a szálak tudnak egymásnak dolgozni: transzponálás: egy szál s(i, j)-t írja, de s(j, i)-t olvassa! molekuladinamika: egy szál az i. atom adatait tölti be (i [0... THREADS 1]) de mindenkiét használja - összes párkölcsönhatás! A shared memory hozzáférés modellje: bank conflict Regiszter sávszélesség (32 bit / 2 órajel) biztosítása: shared memory = 16 x bank ideális hozzáférés: 1 szál 1 bank n-utas bank conflict: n szál 1 bank ( soros: n x 1 hozzáférés) warp = 32 szál fordító 2 x 16 felosztású hozzáférés A shared változó tárolási rendje: lineáris, 32 bites szavanként periodikusan Egy lineáris float típusú tömb esetén biztosan NINCS bank conflict!
16 SHARED MEMORY - Bank conflict példák Memóriakezelés: global & shared Pontosság vagy sebesség? IEEE-754 vs. GPU No bank conflict Bank conflict
17 Az IEEE-754 és a GPU Memóriakezelés: global & shared Pontosság vagy sebesség? IEEE-754 vs. GPU Az IEEE-754 szabvány A számítástechnikai eszközök számítási szabványa digitális számábrázolási szabványok műveleti pontosság szabványai - kerekítés, vágás? A GPU gyári utasításkészlete Alapfeladat: + és gyors elvégzése kisebb átmeneti tár Utasításkészlet: jóval kisebb, mint a CPU-é, de van mad : a b + c A fordító megteszi a lehetséges összevonásokat a kódból! A GPU float műveleti pontossága - IEEE-754 kivételek + és : IEEE-754 pontos mad, valamint bonyolultabb NATIV műveletek (1/x, y/x, x, exp(x),... ) pontatlanabbak (vágás) szoftveres megoldások a CPU pontosságanak elérésére (de lassabbak...)!
18 Példa: elemenkénti A B + C Memóriakezelés: global & shared Pontosság vagy sebesség? IEEE-754 vs. GPU naiv GPU mag global void mad(float *A,float *B,float *C,float *D,int n){ int whoami=blockdim.x*blockidx.x+threadidx.x; if (whoami<n*n) D[whoami]=A[whoami]*B[whoami]+C[whoami]; IEEE-754 helyes GPU mag global void mad(float *A,float *B,float *C,float *D,int n){ int whoami=blockdim.x*blockidx.x+threadidx.x; if (whoami<n*n) D[whoami]= fmaf rn(a[whoami],b[whoami],c[whoami]); Gépi kód + és összevonása mad műveletté + és külön-külön IEEE-754 pontos, de a mad nem! Gépi kód Nincs összevonás fordításnál fmaf xx() : IEEE-754 pontos mad Lassabb, de pontosabb A GPU programozás kereskedelem : pontosság + gyorsaság const.
19 Műveleti idők Memóriakezelés: global & shared Pontosság vagy sebesség? IEEE-754 vs. GPU Nativ műveletek Tanács Kerüljük az osztást, a maradékképzést, és a magasabb szintű függvényeket!
20 1. példa: radiális eloszlásfüggvény 2. példa: lineáris tömb elemeinek összeadása A feladat Adott N db részecske 3D-ben: {x i, y i, z i, i = 1... N. Készítsünk hisztogramot (h) a páronkénti távolságukból (BINS, DR)! Fizika: g[(i + 1/2)DR] = 2 N h[i]/dv i (Radial Distribution Function) CPU kód void rdf(void){ int i,j; for (i=0; i<n-1; i++) for (j=i+1; j<n; j++) if ((int)(dist(i,j)/dr)<bins) h[idx]++; CPU kód float dist(int i,int j){ float dx=x[i]-x[j]; float dy=y[i]-y[j]; float dz=z[i]-z[j]; return(sqrtf(dx*dx+dy*dy+dz*dz)); Implementációs probléma A változó hosszúságú belső ciklus nem jól párhuzamosítható!
21 Alternetív implementáció 1. példa: radiális eloszlásfüggvény 2. példa: lineáris tömb elemeinek összeadása A részecskék koordinátái: x[i], y[i], z[i] lineáris tömbök, i = 0... N 1 dist(i, j), ahol j = (i + d)%n, ciklus i = 0... N 1, valamint d = 1... N/2 1-re CPU kód I. void rdf(void){ int i,j; for (i=0; i<n-1; i++) for (j=i+1; j<n; j++) if ((int)(dist(i,j)/dr)<bins) h[idx]++; CPU kód II. void rdf(void){ int d,i; for (d=1; d<n/2; d++) for (i=0; i<n; i++) if ((int)(dist(i,(i+d)%n)/dr)<bins) h[idx]++;
22 1. példa: radiális eloszlásfüggvény 2. példa: lineáris tömb elemeinek összeadása naiv GPU mag global void gpu test kernel(float *x,float *y,float *z,int *h,int d){ int whoami=blockidx.x*blockdim.x+threadidx.x; int idx; if (whoami<n){ idx=(whoami+d)%n; float3 p1,p2; p1.x=x[whoami]; p1.y=y[whoami]; p1.z=z[whoami]; p2.x=x[idx]; p2.y=y[idx]; p2.z=z[idx]; idx=(int)( fdiv rn(dist(p1,p2),dr)); if (idx<bins) atomicadd(h+idx,1); GPU kód device float dist(float3 p1,float3 p2){ float dx=p1.x-p2.x; float dy=p1.y-p2.y; float dz=p1.z-p2.z; float dx2= fmul rn(dx,dx); float dy2= fmul rn(dy,dy); float dz2= fmul rn(dz,dz); float tmp= fadd rn(dx2,dy2); float d2= fadd rn(tmp,dz2); float d= fsqrt rn(d2); return(d); Tulajdonságok: A GPU távolságszámoló függvénye és az osztás a magban CPU pontos (IEEE-754) Egy új függvény: atomicadd(int *,int) (sm 12)
23 Optimalizálás 1. példa: radiális eloszlásfüggvény 2. példa: lineáris tömb elemeinek összeadása A naiv GPU mag hibái A beolvasás, bár rendezett, 3 tömbre fut Központi probléma: a memóriahozzáférés a kiemeneten (h[idx] + +) ADATFÜGGŐ A memória írás BIZTOSAN NEM rendezett, sőt,atomic függvényre van szükség. Megoldás A rendezett beolvasás float4 segítségével gyorsítható (float3-mal nem, mert az memóriaművelet szempontból NEM rendezett!) Definiáljunk al-hisztogramokat a blokkokon a shared memory-ba! Az al-hisztogramokat a számítás végén rendezetten egyesítjük
24 Optimalizált RDF 1. példa: radiális eloszlásfüggvény 2. példa: lineáris tömb elemeinek összeadása (koránt sem naiv) GPU mag global void gpu test kernel(float4 *p,int *h,int d){ int whoami=blockidx.x*blockdim.x+threadidx.x; int idx; shared int sh[bins]; for (int i=0; i<d; i++) sh[i*threads+threadidx.x]=0; syncthreads(); if (whoami<n){ idx=(whoami+d)%n; float4 p1=p[whoami]; float4 p2=p[idx]; idx=(int)( fdiv rn(dist(p1,p2),dr)); if (idx<bins) atomicadd(sh+idx,1); syncthreads(); for (int i=0; i<d; i++){ idx=i*threads+threadidx.x; atomicadd(h+idx,sh[idx]); GPU kód device float dist(float4 p1,float4 p2){ float dx=p1.x-p2.x; float dy=p1.y-p2.y; float dz=p1.z-p2.z; float dx2= fmul rn(dx,dx); float dy2= fmul rn(dy,dy); float dz2= fmul rn(dz,dz); float tmp= fadd rn(dx2,dy2); float d2= fadd rn(tmp,dz2); float d= fsqrt rn(d2); return(d); gyors shared műveletek bank conflict (random pattern) rendezett global műveletek
25 Teszteredmények 1. példa: radiális eloszlásfüggvény 2. példa: lineáris tömb elemeinek összeadása N = 44028, BINS/THREADS = 1, THREADS = CPU mag: s GPU naiv (float4, no shared): 16.3 s (3.57x) GPU optim. 1 (float4, shared): 1.9 s (30.6x) GPU optim. 2 (teljes probléma kernel): < 1s (> 60x) Üzenet: τ single CPU /τ ideal GPU > 60 (Fermi + CUDA 4.0: 500!) A kimeneti oldalon rosszul kondícionált probléma ellenére úgy tűnik, megérte! Megjegyzések Az IEEE-754 pontosság kikapcsolása 5.0%; (% if ) áttérés 2.5% shared memory τ 1/THREADS A rendezetlen írás a szűk keresztmetszet Teljes probléma kernel, atomicadd() bitwise,...
26 A feladat 1. példa: radiális eloszlásfüggvény 2. példa: lineáris tömb elemeinek összeadása Adjuk össze egy lineáris tömb elemeit párhuzamos GPU kóddal! A GPU kernel feladata Adatlefedés: N block T thread T db elem részösszege blokkonként Bemenet kimenet: N T hosszú lineáris tömb N hosszú lineáris tömb Rekurzív (iteratív) kernel hívás a részösszegek tömbjén, míg előall a teljes összeg
27 A feladat alapszintű megoldása 1. példa: radiális eloszlásfüggvény 2. példa: lineáris tömb elemeinek összeadása T = 2 p elemszámú tömb elemeinek összeadása párhuzamos redukcióval Naiv kernel Az eljárás elemei A tömb beolvasása a shared memory-ba Az elemek összeadása ciklikus redukcióval Az eredmény kíırása a globális memóriába
28 Optimalizálás 1. példa: radiális eloszlásfüggvény 2. példa: lineáris tömb elemeinek összeadása Az állatorvosi ló 1 divergent warps + %: nem egymás utáni thread-ek futnak + % sokba kerül 2 shared memory bank conflict: több thread egyszerre akar ugyanahhoz a területhez férni 3 Idle threads: a thread-ek fele eleve nem csinál semmit a beolvasáson kívül 4 loop unrolling #1: az utolsó warp-ban sok a felesleges művelet 5 loop unrolling #2: ha tudnánk a szükséges iterációk számát, meg lehetne szüntetni a ciklust 6 complexity problem: túl kevés aritmetikai müvelet vs. túl sok memóriaművelet / thread Sok kicsi sokra megy! 1 Első 2 n dolgozik stride-olt összeadás összeadás beolvasáskor utolsó warp kifejtés teljes ciklus kifejtés algoritmus kaszkád
29 Eredmény 1. példa: radiális eloszlásfüggvény 2. példa: lineáris tömb elemeinek összeadása Performance Az optimális kernel Üzenet: 30 gyorsabb, de... Nem kezdőnek való vidék
30 A GPU programozás optimalizálása A feladat: adatpárhuzamosítás (grid) + művelet párhuzamosítás (kernel) Premature optimization is the root of all evil. Programozási modell: MAKE IT WORK. MAKE IT RIGHT. MAKE IT FAST. Az optimalizálás fő területei: A feladat ideális implementációja az architekturához! memóriakezelés (global és shared)- nagy gyorsulások Egyéb: 2 faktorok, de sok - nem kezdőknek való! Pontosság: A GPU gyors 3D ábrázoló, nem tudományos szuperszámítógép! MEGÉRI? - τ feladatmagoldás = τ programfejlesztés + τ programfuttatás GPU vs. CPU verseny: gyors fejlődés, érdemes várni a kész megoldásokra!
Programowanie Współbieżne
Programowanie Współbieżne Agnieszka Łupińska 5 października 2016 Hello World! helloworld.cu: #include global void helloworld(){ int thid = (blockidx.x * blockdim.x) + threadidx.x; printf("hello
Programowanie kart graficznych
CUDA Compute Unified Device Architecture Programowanie kart graficznych mgr inż. Kamil Szostek AGH, WGGIOŚ, KGIS Wykorzystano materiały z kursu Programowanie kart graficznych prostsze niż myślisz M. Makowski
Wprowadzenie do programowania w środowisku CUDA. Środowisko CUDA
Wprowadzenie do programowania w środowisku CUDA Środowisko CUDA 1 Budowa procesora CPU i GPU Architektura GPU wymaga większej ilości tranzystorów na przetwarzanie danych Control ALU ALU ALU ALU Cache DRAM
Baran Ágnes, Burai Pál, Noszály Csaba. Gyakorlat Fourier transzformáció
Matematika Mérnököknek 2. Baran Ágnes, Burai Pál, Noszály Csaba Gyakorlat Fourier transzformáció Baran Ágnes, Burai Pál, Noszály Csaba Matematika Mérnököknek 2. Gyakorlat 1 / 31 Fourier transzformáció
CUDA obliczenia ogólnego przeznaczenia na mocno zrównoleglonym sprzęcie. W prezentacji wykorzystano materiały firmy NVIDIA (http://www.nvidia.
CUDA obliczenia ogólnego przeznaczenia na mocno zrównoleglonym sprzęcie W prezentacji wykorzystano materiały firmy NVIDIA (http://www.nvidia.com) 1 Architektura karty graficznej W porównaniu z tradycyjnym
Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego
Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego Mariusz Uchroński 3 grudnia 2010 Plan prezentacji 1. Wprowadzenie 2.
Programowanie procesorów graficznych w CUDA.
Programowanie procesorów graficznych w CUDA. Kompilujemy program Alokacja zasobów gpgpu oraz załadowanie modułu CUDA odbywa się za pomocą komend: qsub -q gpgpu -I -l walltime=2:00:00,nodes=1:ppn=1:gpus=1
Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1
Programowanie procesorów graficznych GPGPU Krzysztof Banaś Obliczenia równoległe 1 OpenCL projektowanie kerneli Przypomnienie: kernel program realizowany przez urządzenie OpenCL wątek (work item) rdzeń
Az ideális Bose-gáz termodinamikai mennyiségei
Az ideális Bose-gáz termodinamikai mennyiségei Kiegészítés III. éves BsC fizikusok számára Cserti József Eötvös Loránd udományegyetem, Komplex Rendszerek Fizikája anszék 016. február 1. Néhány alapvető
Procesory kart graficznych i CUDA wer 1.2 6.05.2015
wer 1.2 6.05.2015 Litreratura: CUDA textbook by David Kirk from NVIDIA and Prof. Wen-mei Hwu from UIUC. CUDA w przykładach. Wprowadzenie do ogólnego programowania procesorów GP, J.Sanders, E.Kandrot, Helion
Diszkrét matematika 1. estis képzés
Diszkrét matematika 1. estis képzés 019. tavasz 1. Diszkrét matematika 1. estis képzés 6. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Mérai László diái alapján
Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1
Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1 Wprowadzenie Procesory graficzne GPU (Graphics Processing Units) stosowane są w kartach graficznych do przetwarzania grafiki komputerowej
Tesla. Architektura Fermi
Tesla Architektura Fermi Tesla Tesla jest to General Purpose GPU (GPGPU), GPU ogólnego przeznaczenia Obliczenia dotychczas wykonywane na CPU przenoszone są na GPU Możliwości jakie daje GPU dla grafiki
Wprowadzenie do programowania w środowisku CUDA. Środowisko CUDA
Wprowadzenie do programowania w środowisku CUDA Środowisko CUDA 1 Budowa procesora CPU i GPU Architektura GPU wymaga większej ilości tranzystorów na przetwarzanie danych Control ALU ALU ALU ALU Cache DRAM
Programowanie procesorów graficznych GPGPU
Programowanie procesorów graficznych GPGPU 1 OpenCL projektowanie kerneli Przypomnienie: kernel program realizowany przez urządzenie OpenCL wątek (work item) rdzeń (processing element): jeden wątek wykonywany
1. Nyelvismereti feladatsor Maximális pontszám: 15
1. Nyelvismereti feladatsor Maximális pontszám: 15 Válassza ki a helyes megoldást! 1. Jutro... półki na ścianę. A/ robię B/ zrobiłem C/ będę zrobił D/ zrobię 2. Przy stoliku siedziało.... A/ pięciu mężczyźni
Haladó Algoritmusok v február
Haladó Algoritmusok v0.91 Szénási Sándor 2019. február ii Tartalomjegyzék 1. Optimalizáció 1 1.1. Optimalizáció feladata...................... 1 1.1.1. Optimalizáció fogalma.................. 1 1.1.2.
GTX260 i CUDA wer
GTX260 i CUDA wer 1.1 25.11.2014 Litreratura: CUDA textbook by David Kirk from NVIDIA and Prof. Wen-mei Hwu from UIUC. CUDA w przykładach. Wprowadzenie do ogólnego programowania procesorów GP, J.Sanders,
Procesory kart graficznych i CUDA wer PR
wer 1.3 14.12.2016 PR Litreratura: CUDA textbook by David Kirk from NVIDIA and Prof. Wen-mei Hwu from UIUC. CUDA w przykładach. Wprowadzenie do ogólnego programowania procesorów GP, J.Sanders, E.Kandrot,
Procesory kart graficznych i CUDA
4.05.2019 Litreratura: CUDA textbook by David Kirk from NVIDIA and Prof. Wen-mei Hwu from UIUC. CUDA w przykładach. Wprowadzenie do ogólnego programowania procesorów GP, J.Sanders, E.Kandrot, Helion Getting
Przetwarzanie Równoległe i Rozproszone
POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI I TECHNOLOGII INFORMACYJNYCH Przetwarzanie Równoległe i Rozproszone www.pk.edu.pl/~zk/prir_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl
Obliczenia na GPU w technologii CUDA
Obliczenia na GPU w technologii CUDA 1 Różnica szybkości obliczeń (GFLOP/s) pomiędzy CPU a GPU źródło NVIDIA 2 Różnica w przepustowości pamięci pomiędzy CPU a GPU źródło NVIDIA 3 Różnice architektoniczne
JCuda Czy Java i CUDA mogą się polubić? Konrad Szałkowski
JCuda Czy Java i CUDA mogą się polubić? Konrad Szałkowski Agenda GPU Dlaczego warto używać GPU Budowa GPU CUDA JCuda Przykładowa implementacja Co to jest? GPU GPU Graphical GPU Graphical Processing GPU
Procesory kart graficznych i CUDA wer
wer 1.4 18.04.2016 Litreratura: CUDA textbook by David Kirk from NVIDIA and Prof. Wen-mei Hwu from UIUC. CUDA w przykładach. Wprowadzenie do ogólnego programowania procesorów GP, J.Sanders, E.Kandrot,
LINE. Line. Piano CORNER. Katalógus. Corner. Piano LINE. Aqua PIANO. Katalógus. Aqua. PianoKatalógus. Line epibar. www.epiled.
www.epiled.com PianoKatalógus Corner 2013 2013PIANO Piano Line CORNER PIANO LINE Katalógus PIANO 2013 Katalógus Piano CORNER Katalógus Line epibar Katalógus 2013 LINE 2013 2013 Modular LED Lighting System
Programowanie aplikacji równoległych i rozproszonych
Programowanie aplikacji równoległych i rozproszonych Dr inż. Krzysztof Rojek krojek@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Strumienie operacji na GPU Domyślne
Analı zis elo ada sok
Vajda Istva n Neumann Ja nos Informatika Kar O budai Egyetem / 3 Polinomok Felhaszna ljuk: Hatva nyfu ggve nyek differencia lha nyadosa. O sszeada sra, kivona sra e s konstanssal valo szorza sra vonatkozo
Programowanie CUDA informacje praktycznie i. Wersja
Programowanie CUDA informacje praktycznie i przykłady Wersja 16.12.2013 Podstawowe operacje na GPU cudasetdevice() Określenie GPU i ustanowienie kontekstu (analog w GPU tego czym jest proces dla CPU) dla
CUDA. obliczenia na kartach graficznych. Łukasz Ligowski. 11 luty Łukasz Ligowski () CUDA 11 luty / 36
CUDA obliczenia na kartach graficznych Łukasz Ligowski 11 luty 2008 Łukasz Ligowski () CUDA 11 luty 2008 1 / 36 Plan 1 Ogólne wrażenia 2 Obliczenia na kartach - wstęp 3 Wprowadzenie 4 CUDA Łukasz Ligowski
Programowanie Równoległe wykład, 21.01.2013. CUDA, przykłady praktyczne 1. Maciej Matyka Instytut Fizyki Teoretycznej
Programowanie Równoległe wykład, 21.01.2013 CUDA, przykłady praktyczne 1 Maciej Matyka Instytut Fizyki Teoretycznej Motywacja l CPU vs GPU (anims) Plan CUDA w praktyce Wykład 1: CUDA w praktyce l aplikacja
Használati utasítás Instrukcja obs ugi Návod k pouïití Návod na obsluhu 235R 235FR
Használati utasítás Instrukcja obs ugi Návod k pouïití Návod na obsluhu 235R 235FR Olvassa el figyelmesen a használati utasítást, és gyœzœdjön meg róla, hogy megértette azt, mielœtt a gépet használatba
Rozdział 1. Nazwa i adres Zamawiającego Rozdział 2. Informacja o trybie i stosowaniu przepisów Rozdział 3. Przedmiot zamówienia
Z n a k s p r a w y G O S I R D Z P I 2 7 1 0 1 0 2 0 1 4 S P E C Y F I K A C J A I S T O T N Y C H W A R U N K Ó W Z A M Ó W I E N I A f S p r z» t a n i e i u t r z y m a n i e c z y s t o c i g d y
Használati utasítás Instrukcja obs?ugi Návod k pouïití Návod na obsluhu
Használati utasítás Instrukcja obs?ugi Návod k pouïití Návod na obsluhu 136LiC Olvassa el figyelmesen a használati utasítást, és gyoezoedjön meg róla, hogy megértette azt, mieloett a gépet használatba
Programowanie Równoległe wykład 12. OpenGL + algorytm n ciał. Maciej Matyka Instytut Fizyki Teoretycznej
Programowanie Równoległe wykład 12 OpenGL + algorytm n ciał Maciej Matyka Instytut Fizyki Teoretycznej CUDA z OpenGL 1. Dane dla kerneli znajdują się na karcie GFX. 2. Chcemy liczyć i rysować używając
Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1
Programowanie procesorów graficznych GPGPU Krzysztof Banaś Obliczenia równoległe 1 Projektowanie kerneli Zasady optymalizacji: należy maksymalizować liczbę wątków (w rozsądnych granicach, granice zależą
Programowanie kart graficznych
Programowanie kart graficznych Sławomir Wernikowski swernikowski@wi.zut.edu.pl Wykład #1: Łagodne wprowadzenie do programowania w technologii NVIDIA CUDA Terminologia: Co to jest GPGPU? General-Purpose
CUDA. cudniejsze przyk ady
CUDA cudniejsze przyk ady Agenda: CPU vs. GPU Mnożenie macierzy CPU Mnożenie macierzy - GPU Sploty Macierze CPU vs. GPU CPU: GPU: Mnożenie wykonywane w kolejnych iteracjach pętli. Przechodzimy przez pierwszy
ENTRAsys GD. Oryginalna instrukcja montażu i obsługi. Eredeti szerelési és üzemeltetési útmutató
ENTRAsys GD H Oryginalna instrukcja montażu i obsługi Eredeti szerelési és üzemeltetési útmutató Koniecznie przestrzegać: Pierwszy odcisk palca, który zostanie zeskanowany, od razu zostanie zapisany jako
CUDA ćwiczenia praktyczne
CUDA ćwiczenia praktyczne 7 kwietnia 2011, Poznań Marek Błażewicz, marqs@man.poznan.pl Michał Kierzynka, michal.kierzynka@man.poznan.pl Agenda Wprowadzenie do narzędzi umożliwiających tworzenie programów
HU Használati útmutató 2 PL Instrukcja obsługi 20. Tűzhely Kuchenka ZCV560M
HU Használati útmutató 2 PL Instrukcja obsługi 20 Tűzhely Kuchenka ZCV560M Tartalomjegyzék Biztonsági információk _ 2 Biztonsági előírások 3 Termékleírás 6 Az első használat előtt _ 7 Főzőlap - Napi használat
Programowanie CUDA informacje praktycznie i przykłady. Wersja
Programowanie CUDA informacje praktycznie i przykłady problemów obliczeniowych Wersja 25.11.2014 cudasetdevice() Podstawowe operacje na urządzeniu GPU Określenie GPU i ustanowienie kontekstu (analog w
Podróże Ogólne. Ogólne - Niezbędnik. Ogólne - Rozmowa. Proszenie o pomoc. Pytanie, czy nasz rozmówca posługuje się językiem angielskim
- Niezbędnik Tudna segíteni? Proszenie o pomoc Tudna segíteni? Beszélsz angolul? Beszélsz angolul? Pytanie, czy nasz rozmówca posługuje się językiem angielskim Beszélsz / Beszél _[nyelven]_? Beszélsz /
PARADYGMATY I JĘZYKI PROGRAMOWANIA. Programowanie współbieżne... (w14)
PARADYGMATY I JĘZYKI PROGRAMOWANIA Programowanie współbieżne... (w14) Treść 2 Algorytmy równoległe. Metoda sum prefiksowych Mnożenie tablic OpenMP Podstawy CUDA Informacja Sumy prefiksowe 3 Przykłady z
Programowanie Równoległe Wykład, CUDA praktycznie 1. Maciej Matyka Instytut Fizyki Teoretycznej
Programowanie Równoległe Wykład, 07.01.2014 CUDA praktycznie 1 Maciej Matyka Instytut Fizyki Teoretycznej Motywacja l CPU vs GPU (anims) Plan CUDA w praktyce Wykład 1: CUDA w praktyce Wykład 2: Cuda +
Programowanie procesorów graficznych GPGPU
Programowanie procesorów graficznych GPGPU 1 GPGPU Historia: lata 80 te popularyzacja systemów i programów z graficznym interfejsem specjalistyczne układy do przetwarzania grafiki 2D lata 90 te standaryzacja
HU Használati útmutató 2 PL Instrukcja obsługi 18. Tűzhely Kuchenka ZCV560N
HU Használati útmutató 2 PL Instrukcja obsługi 18 Tűzhely Kuchenka ZCV560N Tartalomjegyzék Biztonsági információk _ 2 Biztonsági előírások 3 Termékleírás 6 Az első használat előtt _ 7 Főzőlap - Napi használat
Klasyfikacja systemów komputerowych. Architektura von Neumanna Architektura harwardzka Zmodyfikowana architektura harwardzka. dr inż.
Rok akademicki 2011/2012, Wykład nr 6 2/46 Plan wykładu nr 6 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2011/2012
MagyarOK 1.: szólista a 3. fejezethez / Słowniczek do rozdziału 3
MagyarOK 1.: szólista a. fejezethez / Słowniczek do rozdziału SZÓ SZÓFAJ TOLDALÉKOK LENGYEL F ablak fn ~ok, ~ot, ~(j)a okno akkor e w takim razie alacsony mn ~abb, ~an niski Ki az az alacsony férfi? Kim
Programowanie PKG - informacje praktycznie i przykłady. Wersja z Opracował: Rafał Walkowiak
Programowanie PKG - informacje praktycznie i przykłady problemów obliczeniowych Wersja z 7.05.2018 Opracował: Rafał Walkowiak cudasetdevice() Podstawowe operacje na urządzeniu GPU Określenie GPU i ustanowienie
Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017
Wykład 13 14 czerwiec 2017 Java vs cpp - podobieństwa Podobny sposób definiowania klas. Występowanie typów podstawowych: boolean, char, byte, short, int, long, float, double. Podobna zasada definiowania
II. MELLÉKNÉV PRZYMIOTNIK
18 II. MELLÉKNÉV PRZYMIOTNIK 1. A MELLÉKNÉV NEME RODZAJ PRZYMIOTNIKA A melléknevet nemben, számban és esetben egyeztetjük a hozzá tartozó főnévvel. Hímnem (rodzaj męski), nőnem (rodzaj żeński), semlegesnem
Programowanie GPU jako procesora ogólnego przeznaczenia.
Programowanie GPU jako procesora ogólnego przeznaczenia Wykład III Architektura CUDA Witold Rudnicki Łukasz Ligowski Interdyscyplinarne Centrum Modelowania Matematycznego i Komputerowego Uniwersytet Warszawski
Podróże Jedzenie poza domem
- Przy wejściu Szeretnék foglalni egy asztalt _[hány főre] [idő]_. Rezerwacja stolika Egy asztalt szeretnék _[emberek száma]_ főre. Prośba o stolik po wejściu do lokalu Lehet kártyával fizetni? Pytanie
T.M. PILOT UNIWERSALNY 4 W 1 współpracuje z urządzeniami większości znanych marek. INSTRUKCJA OBSŁUGI
T.M. U-8 PILOT UNIWERSALNY 4 W 1 współpracuje z urządzeniami większości znanych marek. INSTRUKCJA OBSŁUGI PROSIMY O UWAŻNE PRZECZYTANIE INSTRUKCJI OBSŁUGI PRZED ROZPOCZĘCIEM UŻYTKOWANIA PRODUKTU. INSTALACJA
Podróże Ogólne. Ogólne - Niezbędnik. Ogólne - Rozmowa. Możesz mi pomóc? [form.:] Może Pan(i) mi pomóc? Proszenie o pomoc. Tudna segíteni?
- Niezbędnik Możesz mi pomóc? [form.:] Może Pan(i) mi pomóc? Proszenie o pomoc Tudna segíteni? Czy mówisz po angielsku? [form.:] Czy mówi Pan(i) po angielsku? Pytanie, czy nasz rozmówca posługuje się językiem
Podróże Ogólne. Ogólne - Niezbędnik. Ogólne - Rozmowa. Możesz mi pomóc? [form.:] Może Pan(i) mi pomóc? Proszenie o pomoc. Tudna segíteni?
- Niezbędnik Możesz mi pomóc? [form.:] Może Pan(i) mi pomóc? Proszenie o pomoc Tudna segíteni? Czy mówisz po angielsku? [form.:] Czy mówi Pan(i) po angielsku? Pytanie, czy nasz rozmówca posługuje się językiem
Programowanie równoległe Optymalizacja dostępu do pamięci GPU Elementarne algortymy równoległe. Rafał Skinderowicz
Programowanie równoległe Optymalizacja dostępu do pamięci GPU Elementarne algortymy równoległe Rafał Skinderowicz Optymalizacja dostępu do pamięci Wątki wewnątrz osnów (ang. warps) wykonują jednocześnie
Rozdział 1. Nazwa i adres Zamawiającego Gdyńskie Centrum Sportu jednostka budżetowa Rozdział 2. Informacja o trybie i stosowaniu przepisów
Z n a k s p r a w y G C S D Z P I 2 7 1 07 2 0 1 5 S P E C Y F I K A C J A I S T O T N Y C H W A R U N K Ó W Z A M Ó W I E N I A f U s ł u g i s p r z» t a n i a o b i e k t Gó w d y s k i e g o C e n
dr inż. Jarosław Forenc
Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2011/2012 Wykład nr 6 (27.04.2012) dr inż. Jarosław Forenc Rok akademicki
Felvétel az EPG (elektromos műsorújság) Teletext... 31 képernyő segítségével... 14 Tanácsok... 31 Műsor opciók... 14 Első beüzemelés...
Tartalomjegyzék Jellemzõk... 2 Állomások kezelése: Kedvencek... 17 Bevezető... 2 Gombfunkciók... 18 Előkészítés... 2 Állomások kezelése: Csatornalista válogatása... 18 Biztonsági előírások... 3 Képernyőinformációk...
CUDA PROGRAMOWANIE PIERWSZE PROSTE PRZYKŁADY RÓWNOLEGŁE. Michał Bieńkowski Katarzyna Lewenda
PROGRAMOWANIE RÓWNOLEGŁE PIERWSZE PROSTE PRZYKŁADY Michał Bieńkowski Katarzyna Lewenda Programowanie równoległe Dodawanie wektorów SPIS TREŚCI Fraktale Podsumowanie Ćwiczenia praktyczne Czym jest? PROGRAMOWANIE
8 6 / m S t a n d a r d w y m a g a ń e g z a m i n m i s t r z o w s k i dla zawodu E L E K T R Y K K o d z k l a s y f i k a c j i z a w o d ó w i s p e c j a l n o ś c i d l a p o t r z e b r y n k
Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.
Procesory wielordzeniowe (multiprocessor on a chip) 1 Procesory wielordzeniowe 2 Procesory wielordzeniowe 3 Intel Nehalem 4 5 NVIDIA Tesla 6 ATI FireStream 7 NVIDIA Fermi 8 Sprzętowa wielowątkowość 9 Architektury
PARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
w ww cic oz F o r p U0 a A Zr24 H r wa w wa wa w o UazQ v7 ; V7 v7 ; V7 ; v7 rj. co.. zz fa. A o, 7 F za za za 4 is,, A ) D. 4 FU.
1 68. E E E E 69 69 69 E ) E E E E be 69 69 E n c v u S i hl. ' K cic p. D 2 v7. >- 7 v7 ; V7 v7 ; V7 ; v7 J.. ~" unli. = c.. c.. n q V. ) E- mr + >. ct >. ( j V, f., 7 n = if) is,, ) - ) D. lc. 7 Dn.
T00o historyczne: Rozwój uk00adu okresowego pierwiastków 1 Storytelling Teaching Model: wiki.science-stories.org , Research Group
13T 00 o h i s t o r y c z n Re o: z w ó j u k 00 a d u o k r e s o w e g o p i e r w i a s t k ó w W p r o w a d z e n i e I s t n i e j e w i e l e s u b s t a n c j i i m o g o n e r e a g o w a z e
Programowanie równoległe Wprowadzenie do OpenCL. Rafał Skinderowicz
Programowanie równoległe Wprowadzenie do OpenCL Rafał Skinderowicz OpenCL architektura OpenCL Open Computing Language otwarty standard do programowania heterogenicznych platform złożonych ze zbioru CPU,
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO LABORATORIUM Temat: QNX Neutrino Interrupts Mariusz Rudnicki 2016 Wstęp W QNX Neutrino wszystkie przerwania sprzętowe przechwytywane są przez jądro systemu. Obsługę
CUDA część 1. platforma GPGPU w obliczeniach naukowych. Maciej Matyka
CUDA część 1 platforma GPGPU w obliczeniach naukowych Maciej Matyka Bariery sprzętowe (procesory) ok na. 1 10 00 la raz t y Gdzie jesteśmy? a ok. 2 razy n 10 lat (ZK) Rozwój 1985-2004 i dalej? O roku ów
Wskaźniki. Programowanie Proceduralne 1
Wskaźniki Programowanie Proceduralne 1 Adresy zmiennych Sterta 1 #include 2 3 int a = 2 ; 4 5 int main ( ) 6 { 7 int b = 3 ; 8 9 printf ( " adres zmiennej a %p\n", &a ) ; 10 printf ( " adres
2 7k 0 5k 2 0 1 5 S 1 0 0 P a s t w a c z ł o n k o w s k i e - Z a m ó w i e n i e p u b l i c z n e n a u s ł u g- i O g ł o s z e n i e o z a m ó w i e n i u - P r o c e d u r a o t w a r t a P o l
Ó ź ę ę ś Ą Ą Ę Ę Ł ę ę ź Ę ę ę ś ś Ł ę ś ś ę Ą ź ę ś ś ś ś ę ś ę ę ź ę ę ś ę ś ę ę ś Ś ś ę ę ś ś ę ę ę ś ę ę ę ę ś ę ź Ł Ą Ę Ł ę ś ź ść ś ę ę ę ę ę ę ś ś ś ę ę ś ę ę ś ę ź Ć ŚĆ ć ś ś ć ę ś ś ę ś ś ź ś
Ą Ą ć Ó Ó Ó Ś Ź Ź Ó ż Ź Ź Ś Ś ż Ę ĘŚ ń ń ć Ś Ą Ę ż ć Ś ć ć Ć Ó Ó ć ć Ó ć Ó ć ć ń ć Ą Ó Ó Ó Ą Ć ń ń Ź Ó ń ć Ó ć ć ć ń ż ć ć Ć Ć ć ż ć Ź Ó ć ć ć ć Ó ć ĘŚ ń ń ż ć Ś ć Ą Ó ń ć ć Ś ć Ę Ć Ę Ó Ó ń ż ź Ó Ó Ś ń
Ł Ą Ę Ń ć Ź ź ĘŚ ÓŁ Ę Ę ń ń ź Ę ń Ż ć ć ń ń ń Ę ń Ę ń ń Ę ń Ę ń ń ć ć ń Ę Ą Ś ń Ę Ą Ł ź ć Ś ć ć ć Ź Ł Ś ć ć ć ć ć Ł ć ć ź ń ń ń ń ń ń ń ź ź ć ń ć ć ć ź Ł ń Ę ÓŁ ń ź ź ź ń ć ć ć ń ń ń Ą ń ń ń ń ń Ś Ę
Programowanie kart graficznych. Architektura i API część 2
Programowanie kart graficznych Architektura i API część 2 CUDA hierarchia pamięci c.d. Globalna pamięć urządzenia: funkcje CUDA API takie jak cudamalloc() i cudafree() z założenia służą do manipulowania
ROZPROSZONY SYSTEM DO KRYPTOANALIZY SZYFRÓW OPARTYCH NA KRZYWYCH ELIPTYCZNYCH
ROZPROSZONY SYSTEM DO KRYPTOANALIZY SZYFRÓW OPARTYCH NA KRZYWYCH ELIPTYCZNYCH Krzysztof Skowron, Mariusz Rawski, Paweł Tomaszewicz 1/23 CEL wykorzystanie środowiska Altera OpenCL do celów akceleracji obliczeń
Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology
Funkcje Piotr Zierhoffer Institute of Computer Science Poznań University of Technology 7 października 2012 Funkcje Funkcja podprogram. Nazwany blok kodu realizujacy jakieś zadanie. sin(x), arccos(x), min(a,
SFML. (Simple and Fast Multimedia Library)
SFML (Simple and Fast Multimedia Library) I Przygotowanie do tworzenia programów z użyciem biblioteki SFML w środowisku Code::Blocks.... 2 II Struktura programu... 3 III Obiekty graficzne... 3 1. Podstawowe
Programowanie współbieżne Wprowadzenie do programowania GPU. Rafał Skinderowicz
Programowanie współbieżne Wprowadzenie do programowania GPU Rafał Skinderowicz Literatura Sanders J., Kandrot E., CUDA w przykładach, Helion. Czech Z., Wprowadzenie do obliczeń równoległych, PWN Ben-Ari
Programowanie 2. Język C++. Wykład 2.
2.1 Definicja, deklaracja, wywołanie funkcji.... 1 2.2 Funkcje inline... 4 2.3 Przekazanie do argumentu funkcji wartości, adresu zmiennej.... 5 2.4 Wskaźniki do funkcji... 8 2.5 Przeładowanie funkcji...
MS Visual Studio 2005 Team Suite - Performance Tool
MS Visual Studio 2005 Team Suite - Performance Tool przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A 15-351 Białystok Streszczenie: Dokument
CUDA jako platforma GPGPU w obliczeniach naukowych
CUDA jako platforma GPGPU w obliczeniach naukowych Seminarium Grupy Neutrinowej, 12.12.2011 Maciej Matyka, Zbigniew Koza Instytut Fizyki Teoretycznej Uniwersytet Wrocławski Bariery sprzętowe (procesory)
PROJEKT DOCELOWEJ ORGANIZACJI RUCHU DLA ZADANIA: PRZEBUDOWA UL PIASTÓW ŚLĄSKICH (OD UL. DZIERŻONIA DO UL. KOPALNIANEJ) W MYSŁOWICACH
P r o j e k t d o c e l o w e j o r g a n i z a c j i r u c h u d l a z a d a n i a : " P r z e b u d o w a u l. P i a s t ó w Śl ą s k i c h ( o d u l. D z i e r ż o n i a d o u l. K o p a l n i a n e
Programowanie kart graficznych. Sprzęt i obliczenia
Programowanie kart graficznych Sprzęt i obliczenia CUDA Szczegóły implementacji sprzętowej Architektura SIMT: podstawą konstrukcji urządzeń CUDA jest skalowalna macierz wielowątkowych multiprocesorów strumieniowych
Dodatek A. CUDA. 1 Stosowany jest w tym kontekście skrót GPCPU (od ang. general-purpose computing on graphics processing units).
Dodatek A. CUDA Trzy ostatnie rozdziały książki poświęcone są zagadnieniom związanym z programowaniem równoległym. Skłoniła nas do tego wszechobecność maszyn wieloprocesorowych. Nawet niektóre notebooki
Ę Ę ĘŚ Ą Ł Ę ś ą ź ż ź ą ż ć ąż ą ś ą ń
ż ć Ę Ę ś ą ą ż ą ą ń ś ą ą Ą Ę Ą ą ą ą Ź ć ą ą ś ą ą ą Ą Ę Ą Ł ą ą ą ą Ę Ę ĘŚ Ą Ł Ę ś ą ź ż ź ą ż ć ąż ą ś ą ń Ą ą ż ż ą ą ż ś ż ź Ę ż ż ń Ę Ś Ę ś ż ą ą ą ż ś ś ś ż ż ą ą ż ą ż ś ą ą ż ś ś ą ą ś ż ś
Programowanie kart graficznych. Architektura i API część 1
Programowanie kart graficznych Architektura i API część 1 Literatura NVIDIA CUDA Programming Guide version 4.2 http//developer.download.nvidia.com/compute/devzone/ docs/html/c/doc/cuda_c_programming_guide.pdf
TESTER BANKNOTÓW INSTRUKCJA OBSŁUGI. 1. SAFESCAN 155i / 165i
INSTRUKCJA OBSŁUGI ENGLISH NEDERLANDS DEUTSCH FRANÇAIS ESPAÑOL ITALIANO PORTUGUÊS POLSKI ČESKY MAGYAR SLOVENSKÝ SAFESCAN 155i / 165i TESTER BANKNOTÓW 1 WPROWADZENIE Dziękujemy za zakup automatycznego testera
Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1
Typy złożone Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy podstawowe Typy całkowite: char short int long Typy zmiennopozycyjne float double Modyfikatory : unsigned, signed Typ wskaźnikowy