Hlavní navigace

Názor k článku Rychlost CPythonu 3.11 a 3.12 v porovnání s JIT a AOT překladači Pythonu (2) od ZmatenejStrejda - To asi záleží jestli potřebujete paralelismus rychle a...

  • Článek je starý, nové názory již nelze přidávat.
  • 24. 11. 2023 19:37

    ZmatenejStrejda

    To asi záleží jestli potřebujete paralelismus rychle a jednoduše, nebo jste ochotný si to udělat sám efektivněji.

    Navíc omp neumí jen hloupé rozbalování smyček ale i má nástroje na synchronizaci a něco jako vlastní obal vláken a mutexů. A kdo ví co dalšího.

    Zde jednoduchá ukázka vláken

    void mujprint(int k){
            usleep(k * 1000);
            printf("%d\n", k);
    }
    int main (int argc, char** argv){
            #pragma omp parallel //paralelní sekce
            {
                    #pragma omp master //pouze vlákno 0
                    {
                            mujprint(5);
    
                            #pragma omp task //spawn tasku
                            mujprint(4);
    
                            #pragma omp task
                            mujprint(3);
    
                            #pragma omp task
                            mujprint(2);
    
                            #pragma omp taskwait //počká na všechny tasky
                            mujprint(1);
                    }
            }
            return 0;
    }

    Výstup toho to programu je při kompilaci s -fopenmp

    5
    2
    3
    4
    1

    a s vypnutým OpenMP

    5
    4
    3
    2
    1

    Další výhodou použití OpenMP je možnost si zvoli při kompilaci jestli poběží paralelně, nebo ne. Bez přepínače -fopenmp se omp makra ignorují.