2015-08-13 68 views
0

我有一個啓用了超線程的多核心。每個物理核心有兩個邏輯核心。現在我可以用1個內核和它的邏輯內核來運行我的程序嗎?意味着我們的程序使用這個核心的2個邏輯核心運行,但其他核心處於空閒狀態。用邏輯線程運行程序

+0

從應用程序的角度來看,邏輯核心只是一個核心,線程是一個線程。線程將如何分配給內核取決於操作系統。如果你想讓一個線程在特定的核心上,你必須[設置它的親和力](http://man7.org/linux/man-pages/man3/pthread_setaffinity_np.3.html)。 –

回答

1

現在我可以運行我的程序與1核心及其邏輯核心?

是的,但要利用比1多的內核,您必須在多個線程中執行您的應用程序。 IE瀏覽器。如果您正在使用pthread,則使用pthread_setaffinity_np指定線程應執行的內核。

如果您想讓您的算法並行運行,那麼請考慮使用OpenMP或TBB(線程構建模塊)。這些庫允許很容易地將順序執行的應用程序轉換爲並行應用程序IE瀏覽器。而不是使用for您使用parallel_for。此外,您的代碼將自動使用所有可用(或配置)的內核數 - 無論CPU是2個內核還是16個內核。

+0

您可能還會發現Ulrich Drepper的可擴展並行化講座:https://www.youtube.com/watch?v = jfimI7UC9Pg – aho