簡體   English   中英

在並行for循環中調用函數

[英]Calling a function in a parallel for loop

我試圖在Cilk plus中的並行for循環內調用函數。 如果我在調用的函數中聲明一個數組,是否會出現競爭問題? 在運行某些循環后,出現分段錯誤或中止(Core dumped)錯誤。

PScan()
{
    // Would working on w create race issues?
    double *w = calloc(num,sizeof(double));
}

如果從cilk_for循環調用了PScan(),則使用w數組將不是一個競賽。 所有平行的鏈都將有自己分配的w副本。 完成使用后,請確保釋放該內存。

但是,請注意,調用諸如calloc之類的內存分配例程可能涉及鎖定,這可能會限制性能。 諸如tbbmalloc之類的備用內存分配器可以緩解這種情況。

您可以使用Cilkscreen工具搜索種族。 可從http://cilkplus.org/download免費獲得Cilk工具(Cilkscreen種族檢測器和Cilkview可擴展性分析器)

- Barry Tannenbaum
  Intel Cilk Plus Runtime Development

暫無
暫無

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

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