0

IE。为了

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

那会尝试创建 100 个线程吗?还是与执行 for 循环相同?

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

有没有办法让它使用多个线程,或者数组符号就是这样,符号?

4

1 回答 1

0

不,Cilk Plus 支持两种并行度;数据并行和任务并行。

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

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

  • 巴里
于 2014-04-24T12:53:49.450 回答