问题标签 [cilk-plus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1116 浏览

c - 为什么使用 GCC 5 和 cilk-plus 时会出现此编译错误?

由于某种原因 cilk_spawn 不适用于 x86 内在函数。每次尝试将两者组合到同一函数的主体中时,都会出现错误。(请注意 cilk_for 工作正常)。如果我删除所有 SIMD 指令,它会编译并运行良好。

这是 gcc 输出:

我刚刚注意到这是 GCC 4.9 但错误消息与 GCC 5 相同。

0 投票
1 回答
235 浏览

c++ - cilk reduce是如何完成的(thread vs smid)

我有类似的东西:

我想使用 cilk 进行并行化。我写了以下代码:

但问题是,我可以在主循环上使用 cilk_for,但如果 reduce 操作已经在生成线程,那么 cilk_for 不会增加线程开销并减慢整个过程吗?我应该在destsrc args 中添加限制以进一步帮助编译器吗?还是在这种情况下是隐含的?

(ps:我现在无法尝试代码,因为

内部编译器错误:在 find_rank 中,位于 c-family/array-notation-common.c:244

我也在努力解决。)

0 投票
1 回答
421 浏览

c++ - 使用 Cilk 数组表示法和 STL 向量

我正在学习使用 C++ 的 Cilk Plus 扩展(在 gcc 上)进行并行编程。我读过的最简单的重构之一是使用 Cilk 数组表示法,即使用它执行与顺序无关的向量运算。

IE:c[:] = a[:] + b[:]

而不是:for (unsigned i = 0; i < a.size(); ++i) c[i] = a[i] + b[i];

我有一个大量使用std::vector对象而不是数组的大型代码。是否可以将这个概念与std::vector?

考虑到a,bcstd::vector<double>长度相等,我尝试了这些但没有成功:

1.

2.

两者都返回

在指针或记录中使用数组表示法所需的起始索引和长度字段

我知道方法 #2 使指针指向没有长度信息的向量,但是有什么解决方法吗?

编辑:

一个有效的解决方案是首选。例如,可以定义一个数组并使用std::copy将值从向量复制到数组,使用 Cilk 数组表示法执行加法,然后将值复制回向量。这可能比仅仅做原始的元素加法更昂贵。

0 投票
2 回答
305 浏览

c - 使用 Cilk 嵌套并行执行

我正在尝试实现一个操纵矩阵的二维模板算法。对于矩阵中的每个字段,将其上、下、左、右的字段相加并除以 4 以计算新值。对于给定的矩阵,这个过程可能会重复多次。

该程序是用 C 语言编写的,并使用 cilkplus gcc 二进制文件进行编译。

**编辑:我认为您可能对编译器标志感兴趣:

请注意,实际代码涉及一些指针算法以保持一切一致。顺序实现有效。我在这里省略了这些步骤以增强可理解性。

伪代码看起来像这样(没有边缘情况处理):

然后将模板计算本身移至函数apply_stencil(...)

并尝试并行化:

Floating point exception此版本编译时没有错误/警告,但在执行时会直接产生一个。如果您想知道:将哪个 for 循环制成 cilk_for 循环并不重要。所有配置(除了没有 cilk_for)都会产生相同的错误。

可能的其他方法:

这会在编译时产生 3 个警告:i, j并且k似乎未初始化。尝试执行时,执行该matrix = result_matrix;步骤的函数似乎未定义。

现在是实际问题:Cilk 为什么以及如何破坏我的顺序代码;或者更确切地说,我怎样才能阻止它这样做?

如果您有兴趣,实际代码当然也可用。然而,这个项目是针对大学课程的,因此会受到其他学生的抄袭,这些学生发现了这个线程,这就是为什么我不想公开分享它。

**更新:

正如建议的那样,我尝试仅使用 1 个工作线程运行该算法,从而有效地使 cilk 实现顺序化。令人惊讶的是,这确实很好。但是,一旦我将工人的数量更改为两个,熟悉的错误就会返回。

我不认为这种行为是由竞争条件引起的。由于工作矩阵在每次迭代后都会更改cilk_sync并被调用,因此实际上没有临界区。所有线程不依赖于其他人在同一迭代中写入的数据。

我将尝试的下一步是尝试其他版本的 cilkplus 编译器,看看它是否可能是他们一方的错误。

0 投票
1 回答
816 浏览

c++ - 在 Mac OS X 上的 Cilk Plus 上安装

如何在 Mac OS X 上安装 CilkPlus?

当我在我的 Mac 上检查 g++ 版本时,它显示以下内容:

我确实从他们的网站下载了 Intel Cilk Plus SDK build 4421 。

但我不知道如何进行。

0 投票
1 回答
136 浏览

c++ - 在 Mac OS X (El Capitan) 上安装 Cilk Plus 时出错

在此处输入图像描述我在 Mac OS X 上安装 CilkPlus 时遇到了问题。在安装页面之后,我按以下顺序执行了以下命令:

然后,

然而,它以错误结束。错误日志 ErrorLog3。如果有人可以让我知道我错在哪里,那就太好了。我正在尝试编译和执行 CilkPlus 代码。

0 投票
1 回答
512 浏览

visual-studio-2015 - 包括 Visual Studio 2015 中的 Cilk

如何在 Visual Studio 2015 中包含用于并行编程的 Cilk?因为只有 Visual Studio 2010 的默认安装。

0 投票
1 回答
1118 浏览

c++ - 编译cilk加代码centos 7 gcc-5.2 devtoolset-4

像这样编译找不到库

所以我尝试使用 -L 开关查找并添加它

$ find /opt/rh/devtoolset-4 -name " cilkrts " /opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/5.2.1/32/libcilkrts.a /opt/ rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/5.2.1/32/libcilkrts.so /opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat- linux/5.2.1/libcilkrts.spec

指针赞赏

0 投票
2 回答
182 浏览

c++ - gcc-5.2 cilk plus 卸载到英特尔 gfx 硬件

我们可以使用 cilk plus 和 gcc-5.2 卸载到图形硬件吗

编译器对以下测试代码给出上述警告:

编译

0 投票
1 回答
148 浏览

c++ - 用于检测竞争条件的 g++ 和 cilkscreen

我试图用它cilkscreen来检测代码中的一些竞争条件。我正在编译我的代码

但是,当我启动时,cilkscreen我收到以下错误消息:

我应该添加更多选项g++吗?或者cilkscreen仅适用于编译的代码icc

FWIW:我正在使用