2013-02-01 30 views
0

我想在多個核心中運行我的程序。我的桌面上有12個內核,並且希望計算機能夠逐個使用1,2,3,4,......,11,12,並且要測試程序在不同數量的內核中的執行情況。我嘗試使用-t4或-t 4之後的可執行文件。什麼是在多個核心運行進程的命令行參數(linux)

./a.out -t4 

但我不能確定它是否正好使用4。任何人都可以幫助我理解這一點,或者將我指向正確的方向。

+0

你想設置核心親和力嗎? http://stackoverflow.com/questions/8486314/setting-processor-affinity-with-c-that-will-run-on-linux和http://www.cyberciti.biz/tips/setting-processor-affinity- some-task-or-process.html – thang

+0

謝謝thang的鏈接..你看我正在使用線程,並希望這些線程使用從1 - 12的核心。我聽說我們可以做到這一點使用Linux中的命令行像 - t4 for four cores .. – pokche

+0

你不能真正控制你正在運行的是哪個核心,但是當你創建線程的時候,你可以在你的程序中設置親和力(我認爲api是sched_setaffinity) 。我認爲這是需要在代碼中完成的事情,而不是在命令行中。你的代碼可以通過命令輸入來控制線程/內核的數量。 – thang

回答

3

您的程序必須是多線程才能使用您的機器的多個核心。

這意味着程序的實際代碼必須知道線程並有效地使用它們。

你不能簡單地要求一個程序運行在給定數量的線程上。

您必須使用線程庫(例如pthread)來產生線程並通過它們分配工作。

+0

*你不能簡單地要求一個程序運行在給定數量的線程上。*啊,還沒有! – thang

+0

我目前正在使用多線程程序..我使用大量的線程..所以我想測試所有的核心,以找到多少個核心是最好的.. – pokche

+0

你使用線程池?然後,您可以通過給定的參數配置線程池的線程數。 – Intrepidd

0

你應該檢查出libnuma庫。

您可以設置您希望不同線程以編程方式運行的或通過使用命令行選項運行的核心。以下是一些詳細文檔的鏈接:http://www.halobates.de/numaapi3.pdf