簡體   English   中英

tbb:task_scheduler_init自定義分配器?

[英]tbb:task_scheduler_init custom allocator?

所以我試圖為每個使用並行。

Source s;..
parallel_for_each(begin(_allocs), end(_allocs), [&s] (Allocs_t::value_type allocation) {
  // cool stuff with allocation
}

這行得通,而且效果很好。 但是,我在很多帖子中都看到在計划任務之前應該調用tbb:task_scheduler_init。

問題是我覆蓋了malloc和calloc,而無法進行init調用malloc和calloc(確實如此。)所以問題是:

  1. 為什么運作良好? 它運作良好嗎?
  2. 有沒有辦法為所有目的賦予Intel特定的分配器?

謝謝

tbb:task_scheduler_init對象的實例化是可選的。 TBB具有惰性自動初始化機制,該機制可在首次調用TBB算法/調度程序時構造所有內容。 自動初始化等於在您首次調用TBB之前構造一個全局task_scheduler_init對象。

當然,如果您需要覆蓋默認的線程數,指定應初始化TBB的范圍或為工作人員指定堆棧的大小,則顯式初始化是不可避免的。

如果在tbb二進制文件附近發現,TBB調度程序將使用其自己的可擴展分配器(tbbmalloc.dll,libtbbmalloc.so ..),否則將退回使用malloc。 無法顯式指定調度程序要使用的任何其他分配器(與具有相應模板參數的TBB容器不同)。

鑒於以上所有,我認為您有兩個[combinable]選項:

  1. 確保TBB調度程序使用其自己的分配器,因此您不必擔心為TBB正確替換malloc。
  2. 或/並且,請確保在malloc / free處於一致狀態的點(作用域)上創建並銷毀了唯一的task_scheduler_init。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM