问题标签 [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.
parallel-processing - Cilk 或 Cilk++ 或 OpenMP
我正在 Linux 中创建一个多线程应用程序。这是场景:
假设我有一个类的 x 实例BloomFilter
并且我有一些 y GB 的数据(大于可用内存)。我需要在每个布隆过滤器实例中测试这 y GB 数据的成员资格。很明显,并行编程将有助于加快任务速度,因为我只读取数据,因此它可以在所有进程或线程之间共享。
现在我对使用 Cilk、Cilk++ 还是 OpenMP(哪个更好)感到困惑。此外,我对多线程或多处理选择哪一个感到困惑
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 行)。有人可以帮我解决这个问题。
gcc - 使用 gcc-4.7 编译 cilk plus 时出错
我收到以下错误
相关线路是:
Line 107
对应于 cilk_for 循环的右大括号。
任何帮助表示赞赏!
thrust - cilk::reducer_list_append 的推力等效项
我有一个 n 间隔或域的列表。我想将每个间隔并行细分为 k 个部分,创建一个新列表(无序)。但是,大多数细分不会通过某些标准,不应添加到新列表中。
cilk::reducer_list_append 将并行归约的想法扩展为使用 push_back 形成一个列表。这样我只能并行收集有效的子间隔。
完成任务的推力方式是什么?我怀疑一种方法是形成一个大的 nxk 列表,然后使用并行过滤器和流压缩?但我真的希望有一个减少列表追加操作,因为 nxk 确实可以非常大。
c - 并行编程中的一个奇怪案例
我有一个并行程序,有时运行,有时只是给出分段错误。强制使用 3 个线程运行时,可执行文件运行良好(基本上它也使用串行的单线程运行),但是当强制使用任何其他线程值运行时,它会出现分段错误。这是场景:
从main.c
主函数内部:
bf_dup_eleminate
文件中的函数bloom-filter.c
:
bf_dup_eleminate_read
从bloom-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 536
是int bf_dup_eleminate_read ( const bloom_filter *bf, FILE *fp, int j )
额外细节:
现在我的bloomfilter是一个定义为的结构
它的内存分配如下:
只有一个副本,bloom_filter
每个线程都应该访问相同的(因为我没有修改任何内容,只是阅读)。
谁能帮助我,因为我在过去的 4 天里被困在这里,我只是想不出办法。最糟糕的是它运行 3 个线程!!!
注意:cilk_for 只是在 cilk 中生成线程的关键字。
c++ - libstdc++.so.6:无法打开共享对象文件:没有这样的文件或目录
我想用 cilk++ 程序运行 Cilkscreen 命令,但出现此错误
/usr/local/cilk/bin/../lib32/pinbin:加载共享库时出错:libstdc++.so.6:无法打开共享对象文件:没有这样的文件或目录
你能帮我吗
multithreading - LLVM 中的多线程
我需要生成将服务于大量线程/任务(数十万)的 LLVM 代码。这些线程应该是轻量级的,如 Intel TBB 的任务、golang gorutines 或其他。当然,它们可以使用外部 C++ 库来实现,例如提到的 Intel TBB(如果它与 LLVM 兼容)。
我一直在寻找有关 LLVM 中的线程的任何信息,但我没有找到太多。在LLVM 的文档中描述了一些 API 调用,但我认为这不是我想要的。
所以有几个问题:
- 是否可以将英特尔的 TBB 或 Cilk 等技术与 LLVM 一起使用?
- 在这种情况下我应该使用什么线程库?
c++ - 这个foreach宏实现有什么问题吗
在英特尔 Cilk Plus 扩展中,有这个关键字 cilk_for(或实际上是 _Cilk_for)。它类似于 for 的关键字,但更具限制性,并且它的迭代并行运行。我本着 BOOST_FOREACH 的精神写了一个便利宏,它在内部使用了 cilk_for。你能看出以下实现有什么问题吗?
你会像这样使用它:
编辑
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++ 采用缓慢/很少的可能原因是什么?
linux - linux系统上的cilk++
我在使用在 Windows 系统上运行良好但在 linux 系统上运行良好的 cilk++ 程序时遇到了一些问题:
在windows系统上,增加线程数会减少执行时间,而在linux系统上,增加线程数会增加执行时间。
我使用 linux ubuntu 2.6.35-22-generic x86_64 GNU/Linux
我无法理解问题的根源。有人可以帮我吗?