问题标签 [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 回答
4659 浏览

parallel-processing - Cilk 或 Cilk++ 或 OpenMP

我正在 Linux 中创建一个多线程应用程序。这是场景:

假设我有一个类的 x 实例BloomFilter并且我有一些 y GB 的数据(大于可用内存)。我需要在每个布隆过滤器实例中测试这 y GB 数据的成员资格。很明显,并行编程将有助于加快任务速度,因为我只读取数据,因此它可以在所有进程或线程之间共享。

现在我对使用 Cilk、Cilk++ 还是 OpenMP(哪个更好)感到困惑。此外,我对多线程或多处理选择哪一个感到困惑

0 投票
1 回答
177 浏览

gcc - 无法为 cilk 构建 gcc 分支

我正在尝试通过以下命令从下载的 svn 分支中构建 cilk 分支: svn co http://gcc.gnu.org/svn/gcc/branches/cilkplus-4_7-branch/

我用来安装的教程是:这个

在第 5 步第 9 行中,我收到此错误:

ar: elem-function-common.o: No such file or directory

尽管该错误本身很容易解释,但我无法在 make -j3 的命令日志中找到任何此类文件“elem-function-common.o”的创建(步骤 5 第 9 行)。有人可以帮我解决这个问题。

0 投票
2 回答
572 浏览

gcc - 使用 gcc-4.7 编译 cilk plus 时出错

我收到以下错误

相关线路是:

Line 107对应于 cilk_for 循环的右大括号。

任何帮助表示赞赏!

0 投票
1 回答
150 浏览

thrust - cilk::reducer_list_append 的推力等效项

我有一个 n 间隔或域的列表。我想将每个间隔并行细分为 k 个部分,创建一个新列表(无序)。但是,大多数细分不会通过某些标准,不应添加到新列表中。

cilk::reducer_list_append 将并行归约的想法扩展为使用 push_back 形成一个列表。这样我只能并行收集有效的子间隔。

完成任务的推力方式是什么?我怀疑一种方法是形成一个大的 nxk 列表,然后使用并行过滤器和流压缩?但我真的希望有一个减少列表追加操作,因为 nxk 确实可以非常大。

0 投票
1 回答
868 浏览

c - 并行编程中的一个奇怪案例

我有一个并行程序,有时运行,有时只是给出分段错误。强制使用 3 个线程运行时,可执行文件运行良好(基本上它也使用串行的单线程运行),但是当强制使用任何其他线程值运行时,它会出现分段错误。这是场景:

main.c主函数内部:

bf_dup_eleminate文件中的函数bloom-filter.c

bf_dup_eleminate_readbloom-filter.c文件:

我报告的这个错误intel inspector是:

调用堆栈是:

同样gdb也在同一个位置报错,就是:

现在gdb告诉我你有以下错误

0x0000000000406fc4 in bf_dup_eleminate_read (bf=<error reading variable: Cannot access memory at address 0x7ffff7edba58>, fp=<error reading variable: Cannot access memory at address 0x7ffff7edba50>, j=<error reading variable: Cannot access memory at address 0x7ffff7edba4c>) at bloom-filter.c:536

Line 536int bf_dup_eleminate_read ( const bloom_filter *bf, FILE *fp, int j )

额外细节:

现在我的bloomfilter是一个定义为的结构

它的内存分配如下:

只有一个副本,bloom_filter每个线程都应该访问相同的(因为我没有修改任何内容,只是阅读)。

谁能帮助我,因为我在过去的 4 天里被困在这里,我只是想不出办法。最糟糕的是它运行 3 个线程!!!

注意:cilk_for 只是在 cilk 中生成线程的关键字。

0 投票
5 回答
240326 浏览

c++ - libstdc++.so.6:无法打开共享对象文件:没有这样的文件或目录

我想用 cilk++ 程序运行 Cilkscreen 命令,但出现此错误

/usr/local/cilk/bin/../lib32/pinbin:加载共享库时出错:libstdc++.so.6:无法打开共享对象文件:没有这样的文件或目录

你能帮我吗

0 投票
1 回答
3445 浏览

multithreading - LLVM 中的多线程

我需要生成将服务于大量线程/任务(数十万)的 LLVM 代码。这些线程应该是轻量级的,如 Intel TBB 的任务、golang gorutines 或其他。当然,它们可以使用外部 C++ 库来实现,例如提到的 Intel TBB(如果它与 LLVM 兼容)。

我一直在寻找有关 LLVM 中的线程的任何信息,但我没有找到太多。在LLVM 的文档中描述了一些 API 调用,但我认为这不是我想要的。

所以有几个问题:

  1. 是否可以将英特尔的 TBB 或 Cilk 等技术与 LLVM 一起使用?
  2. 在这种情况下我应该使用什么线程库?
0 投票
2 回答
252 浏览

c++ - 这个foreach宏实现有什么问题吗

在英特尔 Cilk Plus 扩展中,有这个关键字 cilk_for(或实际上是 _Cilk_for)。它类似于 for 的关键字,但更具限制性,并且它的迭代并行运行。我本着 BOOST_FOREACH 的精神写了一个便利宏,它在内部使用了 cilk_for。你能看出以下实现有什么问题吗?

你会像这样使用它:

编辑

0 投票
1 回答
560 浏览

c++ - 在 pthreads 上采用 Cilk++

我有这个问题有一段时间了。我看到了关于 Cilk++ 的 MIT 开放课件讲座。
使用线程的界面看起来很简单,工具似乎很有用。讲师解释了使用 Cilk++ 代替 pthread 或 OpenMP 的优点。通过一般的书店浏览,我曾经遇到过一本关于 Cilk++ 的书。

但是,尽管麻省理工学院对 Cilk++(现在归英特尔所有)说了很多好话,但似乎很少有人采用它。

这方面的证据,无论它可能多么小或有偏差,都将是缺乏出版书籍以及关于 SO 的数量或追随者或标记的问题。(在撰写本文时)

亚马逊搜索给出
1. Cilk++ 2 个结果
2. pthreads 166 个结果
3. OpenMP 278 个结果

SO 标签
1. Cilk 11 位关注者
2. OpenMP 242 位关注者
3. pthreads 258 位关注者

Cilk++ 采用缓慢/很少的可能原因是什么?

0 投票
1 回答
124 浏览

linux - linux系统上的cilk++

我在使用在 Windows 系统上运行良好但在 linux 系统上运行良好的 cilk++ 程序时遇到了一些问题:

在windows系统上,增加线程数会减少执行时间,而在linux系统上,增加线程数会增加执行时间。

我使用 linux ubuntu 2.6.35-22-generic x86_64 GNU/Linux

我无法理解问题的根源。有人可以帮我吗?