Preskočiť na obsah

Intel kompilátory

Intel vyrába kompilátory, ktoré generujú vysoko optimalizovaný kód pre svoje CPU. Ako pri všetkých kompilátoroch by mali programy kompilované s optimalizáciou mať svoj výstup dvojnásobne skontrolovaný z hľadiska presnosti. Ak je číselný výstup nesprávny alebo nemá požadovanú presnosť, mali by sa skúsiť menej agresívne kompilačné možnosti.

Intel kompilačné toolchainy môžete načítať nasledujúcimi príkazmi:

Skontrolujte dostupné verzie a načítajte požadovaný toolchain

  1. Skontrolujte dostupné verzie Intel kompilačného toolchainu
    module spider intel
    
  2. Načítajte požadovanú verziu toolchainu
    module load intel/2022b
    

Kompilátory

Nasledujúce kompilátory sú dostupné pre každú verziu toolchainu. Ďalšie informácie získate pomocou príkazu man.

Command
Popis
icc C kompilátor
icpc C++ kompilátor
ifort Fortran kompilátor
dpcpp Data Parallel C++ kompilátor

Všeobecné optimalizačné flagy kompilátora

Odporúčané optimalizačné flagy

Odporúčame použiť aspoň nasledujúce optimalizačné flagy pre kompiláciu:

icc -O3 -xCORE-AVX512 mycode.c

Optimalizačné flagy Intel kompilátorov úmyselne napodobňujú mnohé z tých, ktoré sa používajú s rodinou kompilátorov GNU. Základné optimalizačné flagy sú zhrnuté nižšie.

Command
Popis
-O Optimalizovaná kompilácia
-O2 Odporúčané Intelom, rozsiahlejšie optimalizovaná kompilácia
-O3 Agresívnejšia ako -O2 s dlhšími časmi kompilácie. Odporúčaná pre kódy s cykly, ktoré zahŕňajú intenzívne výpočty s plavúcou čiarkou.
-Ofast Optimalizácia -O3 s ďalšími prvkami
-mtune=processor Tento flag vykonáva ďalšie ladenie pre konkrétne typy procesorov, ale nevytvára dodatočné SIMD inštrukcie. Ladenie zahŕňa optimalizácie pre veľkosti cache procesora, preferované usporiadanie inštrukcií a pod. Odporúčame skúsiť -mtune=icelake-server alebo -mtune=icelake.

Flagy SIMD inštrukcií

Tieto flagy vytvoria spustiteľné súbory, ktoré obsahujú konkrétne SIMD inštrukcie.

Command
Popis
-xHost Musí sa používať aspoň s -O2. Vytvorí spustiteľný súbor, ktorý používa SIMD inštrukcie na základe CPU, ktoré kód kompiluje.
-fast Kombinácia -Ofast, -ipo, -static (pre statické prepojenie) a -xHost.
-march Musí sa používať aspoň s -O2 a určuje typ SIMD inštrukcií, ktoré sa majú generovať. V kombinácii s flagom -ax stanoví minimálny SIMD inštrukčný set. Hodnoty tohto flagu napodobňujú tie z GNU kompilátorov: sse4.2,avx, avx2 a veľké množstvo avx512 flagov.
-axarch Tento sa musí používať aspoň s -O2 a -march. Flag -march vytvorí konkrétne SIMD inštrukcie a ďalšie SIMD inštrukcie sa dajú podporiť pridaním flagu -axarch. Pre každú funkciu, ktorú možno kompilovať s SIMD inštrukciami, sa vytvoria samostatné kópie pre každý inštrukčný set. Spustiteľný súbor automaticky detekuje podporu inštrukcií CPU v čase behu a určí, ktorú verziu spustiť. Časy kompilácie môžu byť veľmi dlhé, keďže funkcie sa budú kompilovať viackrát za sebou a výsledná binárka bude veľká. Viac inštrukčných setov sa dá do tohto príkazu zahrnúť oddelených čiarkou.

Jednoduchý test kompilátora

Kompilátor si môžete jednoducho otestovať nasledujúcim kódom Hello World!:

Jednoduchý test kompilátora

  1. Skopírujte nasledujúci kód do súboru:
    #include <stdio.h>
    int main() {
    printf("Hello, World!");
    return 0;
    }
    
  2. Skompilujte kód:
    icc hello.c -o hello.x
    
  3. Spustite binárku:
    ./hello.x
    
Created by: Marek Štekláč