Cilk中的数组表示法是并行运行的吗



即。对于

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

这会试图创建100个线程吗?还是和for循环一样?

我以为它是并行的,但我只是测试了一下,它看起来不像

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

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

数据并行同时对多个值执行相同的操作。它有时被称为SIMD——单指令多数据。数组表示法是编译器的一个"提示",它是一个数据并行操作,应该使用CPU的矢量单元执行。当向量单元中的元素数量超过所需数量时,编译器将围绕操作生成一个循环。如果编译器能够检测到多行正在对同一组数据进行操作,那么它将围绕整个计算进行循环。

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

  • 巴里

相关内容

  • 没有找到相关文章