Cilk中的数组符号是否并行运行?

时间:2014-04-23 23:11:04

标签: arrays notation cilk

即。对

int A[100]
A[:] = 1;

这会尝试创建100个线程吗?或者它与执行for循环相同?

我认为它是并行化的,但我只是对它进行了测试,它看起来并不像。

有没有办法让它使用多个线程,或者只是那种符号表示符号?

1 个答案:

答案 0 :(得分:0)

没有。 Cilk Plus支持两种并行性;数据并行和任务并行。

数据并行性同时对多个值执行相同的操作。它有时被称为SIMD - 单指令,多数据。数组表示法是一个"提示"编译器这是一个数据并行操作,应该使用CPU的向量单元来执行。当向量单元中有更多元素时,编译器将生成一个循环操作。如果编译器可以检测到多行在同一组数据上运行,那么它将围绕整个计算进行循环。

任务并行性同时执行多个任务,其中每个任务都在执行自己的指令流。如果您想并行执行计算,则需要在计算周围使用cilk_for循环。如果您愿意,也可以使用TBB或OpenMP。

  • 百里