问题标签 [cilk]
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 - 在多线程程序中访问文件指针时出错
我想问的是一些大代码的一部分,但我会尽量缩短它。我将首先解释我的代码中的相关代码片段,然后是我得到的错误。
从main.c
主函数内部:
bf_dup_eleminate
文件中的函数bloom-filter.c
:
bf_dup_eleminate_read
从bloom-filter.c
文件:
这是一个多线程应用程序(我通过强制它使用两个线程来运行它),并且我可以确定第一个线程到达printf
语句(因为它与线程信息一起输出)。现在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 )
错误消息很清楚,但我不明白为什么会这样。我想不出为什么会发生这种情况。确定文件已打开(因为bf_dup_eleminate
未打印函数中的错误消息)。我也相信,如果两个线程正在执行相同的代码行,那么它们将对所有局部变量进行单独的实例化。鉴于这可能是什么问题。
任何帮助表示赞赏!
PS:cilk_for
关键字只是在运行时生成线程的构造。
当要使用的线程数为 1 时,程序运行。
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 一起使用?
- 在这种情况下我应该使用什么线程库?
linux - Linux上的cilk和glibc
我想在我的 linux 机器(Ubuntu 12.04 LTS)上安装 Cilk,在 README 文件中他们说我需要在我的机器上安装 glibc,我下载了 2.16 版本,经过多次尝试安装后,我弄乱了一些文件即使我有很多错误也安装make check
(在多次尝试解决它们失败后,我还是安装了)。现在我在我的机器上重新安装了 Ubuntu,我可以编译和构建 glibc 代码而不在机器上安装它(做所有事情,直到make check
没有make install
),但是在构建 Cilk 时,我可以告诉它使用 glibc 文件夹(已经编译和构建)我在桌面上的例子?
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++ 采用缓慢/很少的可能原因是什么?