[問題] 請問如何將OpenMP的程式改為pthread ?

看板C_and_CPP (C/C++)作者 (交換關聯)時間16年前 (2010/06/17 19:43), 編輯推噓1(1011)
留言12則, 5人參與, 最新討論串1/1
原本的程式是這樣(OpenMP版本): #pragma omp parallel { int id = omp_get_thread_num(); if(numThread -1 == id ) height = Height - (Height/numThread)*(numThread-1) ; else height = (Height/numThread); int shift = nSrcWidth*(nSrcHeight/numThread)*(id); SomeImageProcessingFunction(Src + shift ,Width, height*PIXELSIZE, Dst); }/*#pragma omp parallel */ 簡單講就是:若這為雙核CPU,一張圖拿來,強制 A核做上半部,B核做下半部,這在電腦沒有做其他事時是極何理的。 與同事討論後,同事說可以用pthread,讓OS自己去分配執行任務的 核是誰。 也就是說,假若A核在忙,B核很閒,則影像處理的兩部份都會被OS 交給B核做。 爬了爬文還有網上找不到資料,發現還真不好入手。。 對pthread完全不熟,那請問我要怎修改原本的程式為pthread呢? 謝謝大大幫忙。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.158.204

06/17 19:45, , 1F
囧,程式有錯,在SomeImageProcessingFunction該改為:
06/17 19:45, 1F

06/17 19:46, , 2F
SomeImageProcessingFunction(Src + shift ,Width,
06/17 19:46, 2F

06/17 19:46, , 3F
height*PIXELSIZE, Dst+ shift);
06/17 19:46, 3F

06/17 19:57, , 4F
OpenMP不是可以設section分配給不同thread嗎?
06/17 19:57, 4F

06/17 19:57, , 5F
還是說一定要改成pthread啊?
06/17 19:57, 5F

06/17 20:00, , 6F
我意思是,交給os分配工作給那個thread作
06/17 20:00, 6F

06/17 20:01, , 7F
而不是像上面,寫死成平均分配給每個core
06/17 20:01, 7F

06/17 20:55, , 8F
openMP也是弄成thread阿XD?
06/17 20:55, 8F

06/17 20:57, , 9F
強制那兩個字的的觀念是哪弄來的阿
06/17 20:57, 9F

06/17 21:49, , 10F
有沒有什麼資料是在講OpenMP的底層實作呢?
06/17 21:49, 10F

06/17 22:18, , 11F

06/17 22:20, , 12F
感謝樓上 XD
06/17 22:20, 12F
文章代碼(AID): #1C6Wff1Q (C_and_CPP)
文章代碼(AID): #1C6Wff1Q (C_and_CPP)