openMP是一個(gè)編譯器指令和庫(kù)函數(shù)的集合,主要是為共享式存儲(chǔ)計(jì)算機(jī)上的并行程序設(shè)計(jì)使用的。

  • 當(dāng)計(jì)算機(jī)升級(jí)到多核時(shí),程序中創(chuàng)建的線程數(shù)量需要隨CPU核數(shù)變化,如在CPU核數(shù)超過(guò)線程數(shù)量的機(jī)器上運(yùn)行,則不能很好的完全利用機(jī)器性能,雖然通過(guò)可以通過(guò)操作系統(tǒng)的API創(chuàng)建可變化數(shù)量的線程,但是比較麻煩,不如openMP方便

  • 操作系統(tǒng)API創(chuàng)建線程時(shí),需要線程函數(shù)入口,如pthread編程。對(duì)于同一函數(shù)或者同一循環(huán)內(nèi)的并行非常不利,函數(shù)入口非常之多,而openMP不需要函數(shù)入口。

  • 現(xiàn)在主流的操作系統(tǒng)的API 互不兼容,移植性非常差。openMP是標(biāo)準(zhǔn)規(guī)范,支持它的編譯器都執(zhí)行同一套標(biāo)準(zhǔn),很好的解決了這個(gè)問(wèn)題。

openMP的庫(kù)函數(shù)和指令

指令的格式: #pragma omp 指令 [字句]

常見(jiàn)庫(kù)函數(shù):

  • <pre id="2iwig"><object id="2iwig"></object></pre>
    指令含義庫(kù)函數(shù)含義
    parallel所表示的代碼將被多個(gè)線程并行執(zhí)行omp_set_num_threads(parameter)設(shè)置線程數(shù)目
    parallel for

    網(wǎng)友評(píng)論

    <rt id="2iwig"><tr id="2iwig"></tr></rt>
    • <option id="2iwig"></option>