Optimalizace pomocí icc/gcc - vektorizace

Podobné dokumenty
GENEROVÁNÍ KÓDU 9. SHRNUTÍ - PŘÍKLAD POSTUPU PŘEKLADU VSTUPNÍHO PROGRAMU (ZA POUŽITÍ DOSUD ZNÁMÝCH TECHNIK)

Paralelní výpočetní jádro matematického modelu elektrostatického zvlákňování

Sekvenční architektury II. Zpracování instrukcí

Část 2 POROVNÁNÍ VÝKONNOSTI A POUŽITELNOSTI ARCHITEKTUR V TYPICKÝCH APLIKACÍCH

Sekvenční architektury II. Zpracování instrukcí

Ivan Šimeček, Pavel Tvrdík

Intel (2) Intel (1) Intel (3) Intel (4) Intel (6) Intel (5) Nezřetězené zpracování instrukcí:

Přehled paralelních architektur. Dělení paralelních architektur Flynnova taxonomie Komunikační modely paralelních architektur

Úvod do OpenMP. Jiří Fürst

Paralelní a distribuované výpočty (B4B36PDV)

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

Vícevláknové programování na CPU: POSIX vlákna a OpenMP I. Šimeček

Matematika v programovacích

Paralení programování pro vícejádrové stroje s použitím OpenMP. B4B36PDV Paralelní a distribuované výpočty

Cache paměť - mezipaměť

Paralelní a distribuované výpočty (B4B36PDV)

Architektury VLIW M. Skrbek a I. Šimeček

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -

Martin Lísal. Úvod do MPI

Jan Nekvapil ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická

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

Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/

Představení a vývoj architektur vektorových procesorů

Architektura počítače

Ústav technické matematiky FS ( Ústav technické matematiky FS ) / 35

Vláknové programování část V

Programování v C++ 1, 1. cvičení

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

Obecné výpočty na GPU v jazyce CUDA. Jiří Filipovič

cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování)

IUJCE 07/08 Přednáška č. 1

Operační systémy Linux, Mac OS X a jejich srovnání

OPS Paralelní systémy, seznam pojmů, klasifikace

Procesor. Procesor FPU ALU. Řadič mikrokód

GPU jako levný výpočetní akcelerátor pro obrazovou JPEG2000 kompresi. ORS 2011 Karviná,

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

PODPORA SIMD INSTRUKCÍ V PŘEKLADAČI LLVM

Miroslav Tichý, tic136

Úvod do problematiky návrhu počítačových systémů. INP 2008 FIT VUT v Brně

C2115 Praktický úvod do superpočítání

Zápis programu v jazyce C#

Real Time programování v LabView. Ing. Martin Bušek, Ph.D.

C2115 Praktický úvod do superpočítání

Vláknové programování část I

Technické prostředky počítačové techniky

Procesor Intel Pentium (1) Procesor Intel Pentium (3) Procesor Intel Pentium Pro (1) Procesor Intel Pentium (2)

Jak do počítače. aneb. Co je vlastně uvnitř

ARCHITEKTURA PROCESORŮ

Intel Itanium. Referát. Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

Paralelní architektury se sdílenou pamětí typu NUMA. NUMA architektury

Základní deska (1) Parametry procesoru (2) Parametry procesoru (1) Označována také jako mainboard, motherboard

Úvod do architektur personálních počítačů

FORTANNS. 22. února 2010

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Maturitní otázky z předmětu PROGRAMOVÁNÍ

IB109 Návrh a implementace paralelních systémů. Organizace kurzu a úvod. RNDr. Jiří Barnat, Ph.D.

Implementace numerických metod v jazyce C a Python

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Úvod SISD. Sekvenční výpočty SIMD MIMD

TG Motion verze 4 Modul Virtuální PLC návod k obsluze

Assembler RISC RISC MIPS. T.Mainzer, kiv.zcu.cz

Další aspekty architektur CISC a RISC Aktuálnost obsahu registru

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Operační systémy. Cvičení 3: Programování v C pod Unixem

Úvod do programování. Lekce 3

CHARAKTERISTIKA MODERNÍCH PENTIÍ. Flynnova klasifikace paralelních systémů

2.8 Procesory. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu

SUPERPOČÍTAČE DANIEL LANGR ČVUT FIT / VZLÚ

Paralelní programování

Employing Evolutionary Algorithms for Classification of Astrophysical Spectra

GPGPU Aplikace GPGPU. Obecné výpočty na grafických procesorech. Jan Vacata

Paralelní výpočty ve finančnictví

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

Úvod do GPGPU J. Sloup, I. Šimeček

MIKROPROCESOR. (c) Ing. Josef Varačka. Title: XI 28 11:40 (1 of 8)

IAJCE Přednáška č. 7. řízení semaforu na křižovatce = přepínání červená/oranžová/zelená

Optimalizace. Optimalizace. Profilování. Gprof. Gcov. Oprofile. Callgrind. Intel Vtune. AMD CodeAnalyst

Paralelní a distribuované výpočty (B4B36PDV)

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Pohled do nitra mikroprocesoru Josef Horálek

Paralelní systémy. SIMD jeden tok instrukcí + více toků dat jedním programem je zpracováváno více různých souborů dat

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Šablonové metaprogramování v C++ Miroslav Virius KSI FJFI ČVUT

IB109 Návrh a implementace paralelních systémů. Organizace kurzu a úvod. Jiří Barnat

Paralelní algoritmy --- Parallel Algorithms

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

2. lekce Algoritmus, cyklus Miroslav Jílek

Roman Výtisk, VYT027

GPU A CUDA HISTORIE GPU CO JE GPGPU? NVIDIA CUDA

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

TG Motion verze 4 Modul Virtuální PLC návod k obsluze

1. Téma 03 - Rozhodování

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Moderní nástroje pro vývoj elektronických řídicích jednotek

Virtuální počítač. Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor. PGS K.

6 Příkazy řízení toku

Transkript:

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 google: icc intel download podpora vektorizace a OpenMP

GCC GCC/G++ - GNU překladače pro jazyky C/C++ www.gcc.gnu.org http://en.wikipedia.org/wiki/gnu_compiler_collection podpora vektorizace, podpora OpenMP ve vývoji

Některá nastavení pro ICC/ICPC -O0--O3 - stupeň optimalizace -mp - zabraňuje optimalizacím na úkor přesnosti (úlohy s chaotickým chováním) -IPF_fp_speculation[fast,safe,strict,off] - předvídání výsledků operací s desitinnými čísly -tpp[1,2,5,6,7] - architektura - itanium1,2, pentium, pentiumpro,pentium4 -ipo - interprocedural optimizations

Rozbalování smyček - loop unrolling Místo cyklu for( i = 0; i < 3; i ++ ) a[ i ] = b[ i ] + c[ i ]; je efektivnější provést a[ 0 ] = b[ 0 ] + c[ 0 ]; a[ 1 ] = b[ 1 ] + c[ 1 ]; a[ 2 ] = b[ 2 ] + c[ 2 ];

Rozbalování smyček - loop unrolling Místo cyklu for( i = 0; i < 3; i ++ ) a[ i ] = b[ i ] + c[ i ]; je efektivnější provést a[ 0 ] = b[ 0 ] + c[ 0 ]; a[ 1 ] = b[ 1 ] + c[ 1 ]; a[ 2 ] = b[ 2 ] + c[ 2 ]; odstraňuje podmínku i < 3 a umožní efektivněji využít pipline v CPU. automaticky toho lze dosáhnout pomocí tzv. rozbalovaní smyček. zapíná se pomocí -unroll[n] - určuje, kolik cyklů se má rozbalovat (přepínač ICC)

Načítání dat dopředu - prefetching zapíná se pomocí -prefetch -O3 umožní načíst do cache celý blok dat provádí se pomocí direktivy pragma

Načítání dat dopředu - prefetching zapíná se pomocí -prefetch -O3 umožní načíst do cache celý blok dat provádí se pomocí direktivy pragma Vzor #pragma variable:hint:distance Příklad (načtení pole x[80]) #pragma x:1:80

Vektorizace Vektorizace = vyčíslení algebraického výrazu pro celé pole dat v jednom kroku (SIMD) zpíná se pomocí -ax[k,w,n,b,p] - generuje obecný i optimalizovaný kód -x[k,w,n,b,p] - generuje pouze optimalizovaný kód (nelze použít na slabších architekturách) K - PentiumIII, W - Pentium4, B - PentiumM, P - SSE3 -vec_report[0-3] - vypisuje informace o úspěšném/neuspěšném provedení vektorizace

Pravidla pro vektorizaci smyček Příklad for( i = 0; i < 1000; i ++ ) a[ i ] = b[ i ] + c[ i ]; Aby mohl překladač úspěšně provést vektorizaci nesmí smyčka obsahovat volání funkce (z podstaty SIMD) datovou závislost for( i = 1; i < 999; i ++ ) a[ i ] = ( a[ i - 1 ] - 2.0 * a[ i ] + a[ i + 1 ] ) / ( h * h );

Pravidla pro vektorizaci smyček datově závislé opuštění smyčky while( i < 100 ){ if( a[ i ] == 0.0 ) break; a[ i ] = b[ i ] + c[ i ]; } Lze ale vektorizovat while( i < 100 ){ a[ i ] = b[ i ] + c[ i ]; if( a[ i ] < 0.0 ) a[ i ] = 0.0;} počet smyček nesmí záviset na vnitřku cyklu while( a[ i ] < 0.0 ) a[ i ] = 0.0;

Pravidla pro vektorizaci smyček Příklad: for( i = 0; i < 100; i ++ ) a[ i ] = c * a[ i + k ]; Nelze vektorizovat pro k < 0, překladač vektorizaci neprovede. Pokud programátor vi, že není k < 0, může použít direktivu #pragma ivdep

Pravidla pro vektorizaci smyček Podobný příklad double *a = & b[ 2 ]; for( i = 0; i < 1000; i ++ ) a[ i ] = b[ i ] + c[ i ]; Pokud překladač nemá jistotu, zda se dvě pole nepřekrývají, vektorizaci neprovede.

exflib - výpočty se zvýšenou přesností http://www-an.acs.i.kyoto-u.ac.jp/ fujiwara/exflib/ Exflib is a simple software for scientific multiple-precision arithmetic for C++ and Fortran 90/95. Basic arithmetic and comparisons Input/Output in decimal Basic mathematical functions Parallel computation with MPI, OpenMP C++ class implementation Overloaded operators, functions Rounding Control, Interval Arithmetic (experimental, not available in Alpha version) Useful numerical routines (Bessel, matrix, LU, QR, etc). Fortran90 Module implementation Operators, functions with INTERFACE