问题标签 [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 投票
1 回答
202 浏览

c - 英特尔数组符号向量操作

英特尔文档没有说明是否有,例如数组的乘法和加法:

它会执行以下操作:

或者

对于大型阵列,存在显着的性能差异。据我所知,当使用 STL 向量完成此类向量运算时,前者已完成。

预先感谢您的回答!

0 投票
1 回答
491 浏览

multithreading - Cilk中给线程分配任务,给NUMA节点分配线程

例如,有三个线程。

  • 线程 1 被分配了任务 1、2 和 3。
  • 线程 2 被分配了任务 4、5 和 6。
  • 线程 3 被分配了任务 7、8 和 9。

任务规模不统一。分配给一个线程的任务具有非常相似的工作集,因此当这三个任务都由同一个线程执行时,缓存将得到有效利用。我还应该注意,这些任务将在具有四个节点的 NUMA 系统上运行。四个线程中的每一个都必须分配给系统的一个节点。

我的问题是关于负载平衡。例如,如果线程 1 在其他任务之前完成其任务并且任务 9 未启动,我希望 Cilk 调度程序将任务 9 分配给线程 1。

欢迎所有解决方案,包括 Cilk Plus、OpenMP 或网络上免费提供的其他调度程序。

更新:线程必须分配给 NUMA 系统的节点,并且这些线程使用的内存位置必须分配在特定节点上。我已经成功地使用libnuma了 OpenMP。但是,我无法找到如何使用 Cilk、TBB 等将线程映射到节点。如果可以在 Cilk Plus 中获取生成的工作线程 id,我会使用numa_run_on_node(nodeid).

有关 NUMA 架构上 Cilk 可扩展性问题的更多信息:http ://www.sciencedirect.com/science/article/pii/S0167739X03001845#

0 投票
1 回答
103 浏览

c++ - 是否可以使用 Cilk Plus 数组表示法在 `if` 块语句中使用`__sec_implicit_index`?

icc我的目标是使用 Cilk Plus Array Notation 和 Intel 的编译器 version ,根据隐式索引值有条件地将值分配给数组13.1.3 20130607

考虑以下代码:

这段代码编译得很好,但是当我尝试运行它时,我收到以下错误:

注意虽然这看起来像是一个链接错误,但实际上并非如此,因为以下代码编译并运行良好(条件已被删除)

所以,我的问题是:是否可以使用 Cilk Plus Array Notation 来完成下面条件代码的行为?

0 投票
1 回答
102 浏览

gcc - 有没有更快速的下载 gcc-cilkplus 的方法?

我正在尝试在 C++ 中创建一个并行应用程序,因此我选择使用英特尔 Cilk-Plus 库

我的问题只是我仍在尝试下载 g++ 的扩展并在我的机器上编译它,但这需要很长时间。如英特尔 Cilk 库安装文档中所述,我正在尝试获取编译器源来编译它们。我实际上正在尝试发布 GCC 4.9。

尝试SVN...

我确实尝试过使用svn,但这非常慢,而且很多时候程序失败并迫使我从中断的地方重新启动。

正在尝试 GIT...

当我尝试 git 时,情况更糟。该命令执行但程序未能告诉我服务器端有一些损坏的东西......猜猜他们的git存储库格式不正确。

蛮力:WGET

所以我决定把头切到鸡上,并使用以下方法进行直接递归下载wget

从昨天开始就一直在下载...我有一个该死的压缩包要下载,或者我真的需要在wget没有任何进度信息的情况下下载?谢谢

0 投票
1 回答
881 浏览

unix - 编译 GCC-CilkPlus 4.9 的问题

我正在尝试在我的 x86_64 RHEL 机器(CentOS 6.4)上编译带有Intel CilkPlus(v4.9)模块的 GCC 编译器,用于编译针对并行多核平台的应用程序。

我正在按照GNU GCC Doc进行安装,这与带有 CilkPlus 扩展的 GCC 非常相似。我特别关注前面提到的文档的先决条件配置部分。

1) 下载

我确实按照说明页面中的说明使用此快照下载了我需要的所有内容。下载成功,也解压了。我确实将文件夹重命名为并将其放在我的目录下。cilkplus-gcc$HOME

我还创建了另一个目录:$HOME/b-gcc我打算​​从该目录运行configure命令,然后运行make命令。这将防止安装到同一目录中(此过程不希望将所有内容构建在不同的目录中)。

2) 初始配置

按照文档中的说明,我移入该$HOME/cilkplus-gcc/contrib目录是为了构建安装过程所需的三个最重要的库(即:编译 GCC):

  • GMP:位于$HOME/cilkplus-gcc/contrib/gmp-4.3.2目录中。
  • MPFR:位于$HOME/cilkplus-gcc/contrib/mpfr-2.4.2目录中。
  • MPC:位于$HOME/cilkplus-gcc/contrib/mpc-0.8.1目录中。

我按照出现的顺序构建它们,因为 MPFR 依赖于 GMP,而 MPC 依赖于 GMP 和 MPFR。我想将所有需要的文件放入$HOME/cilkplus-gcc目录中,因此我指示这些库的安装程序将所有内容放入$HOME/cilkplus-gcc/contrib/tmp目录中。所以:

作为直接结果,我的$HOME/cilkplus-gcc/contrib/tmp目录中充满了目录lib、、includeshare里面bin的这三个库。

3) 安装

是时候忙于编译所有内容了。我进入$HOME/b-gcc目录并从那里发出以下命令:

配置进行得很顺利,并在我当前的文件夹 ( $HOME/b-gcc) 中创建了一些东西。制作时间和我发出:sudo make

两分钟,我得到这个错误

g++ -c -g -DIN_GCC -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wwrite-strings -Wcast-qual -fno-common -DHAVE_CONFIG_H -I。-Ic-family -I/home/andry/cilkplus-gcc/gcc -I/home/andry/cilkplus-gcc/gcc/c-family -I/home/andry/cilkplus-gcc/gcc/../include -我/home/andry/cilkplus-gcc/gcc/../libcpp/include -I/home/andry/cilkplus-gcc/contrib/tmp//include -I/home/andry/cilkplus-gcc/contrib/tmp/ /include -I/home/andry/cilkplus-gcc/contrib/tmp//include -I/home/andry/cilkplus-gcc/gcc/../libdecnumber -I/home/andry/cilkplus-gcc/gcc/。 ./libdecnumber/bid -I../libdecnumber -I/home/andry/cilkplus-gcc/gcc/../libbacktrace /home/andry/cilkplus-gcc/gcc/c-family/cppspec.c -o c-家庭/cppspec。3* [规格] 错误 127 make 3:离开目录 /home/andry/b-gcc/gcc' make[2]: *** [all-stage1-gcc] Error 2 make[2]: Leaving directory/home/andry/b-gcc' make 1:* [stage1-bubble] 错误 2 make 1:离开目录 `/home/andry/b-gcc'

但是我检查了我的/usr/local/lib文件夹,我可以清楚地看到它libiconv.so.2在那里!所以我理解安装过程(即GCC编译本身)找不到库(明确引用,因为我可以看到-liconv标志)。所以我删除所有内容$HOME/b-gcc并发出修改后的configure命令:

当我再次发出sudo make时,不再遇到以前的错误并且时间过去了。5/6 分钟后,我收到此错误:

检查 x86_64-unknown-linux-gnu-ar... ar 检查 x86_64-unknown-linux-gnu-lipo... lipo 检查 x86_64-unknown-linux-gnu-nm... /home/andry/b -gcc/./gcc/nm 检查 x86_64-unknown-linux-gnu-ranlib... ranlib 检查 x86_64-unknown-linux-gnu-strip... 剥离检查 ln -s 是否有效... 是 检查x86_64-unknown-linux-gnu-gcc... /home/andry/b-gcc/./gcc/xgcc -B/home/andry/b-gcc/./gcc/ -B/home/andry/cilkplus- install/x86_64-unknown-linux-gnu/bin/ -B/home/andry/cilkplus-install/x86_64-unknown-linux-gnu/lib/ -isystem /home/andry/cilkplus-install/x86_64-unknown-linux- gnu/include -isystem /home/andry/cilkplus-install/x86_64-unknown-linux-gnu/sys-include
检查目标文件的后缀... configure: error: in /home/andry/b-gcc/x86_64-unknown-linux-gnu/libgcc': configure: error: cannot compute suffix of object files: cannot compile See config.log' 了解更多详情。制作2: * [configure-stage1-target-libgcc] 错误 1 ​​make 2 : 离开目录 /home/andry/b-gcc' make[1]: *** [stage1-bubble] Error 2 make[1]: Leaving directory/home/andry/b-gcc'

嗯,很奇怪的东西......所以我检查了$HOME/b-gcc/x86_64-unknown-linux-gnu/libgcc/config.log(将显示相关摘录):

-isystem /home/andry/cilkplus-install/x86_64-unknown-linux-gnu/sys-include
-c -g -O2 conftest.c >&5 /home/andry/b-gcc/./gcc/cc1: error while加载共享库:libmpc.so.2:无法打开共享对象文件:没有这样的文件或目录配置:3593:$?= 1 配置:失败的程序是:| /* confdefs.h */ | #define PACKAGE_NAME "GNU C 运行时库" | #define PACKAGE_TARNAME "libgcc" | #define PACKAGE_VERSION "1.0" | #define PACKAGE_STRING "GNU C 运行时库 1.0" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL " http://www.gnu.org/software/libgcc/ " | /* 结束 confdefs.h。*/ | | 整数 | 主要 () | { | | ; | 返回0;| } 配置:3607:错误:在 /home/andry/b-gcc/x86_64-unknown-linux-gnu/libgcc': configure:3610: error: cannot compute suffix of object files: cannot compile Seeconfig.log' 以获取更多详细信息。

说错误基本如下:

/home/andry/b-gcc/./gcc/cc1:加载共享库时出错:libmpc.so.2:无法打开共享对象文件:没有这样的文件或目录

libmpc.so.2但是我不是已经告诉它(在配置期间)去搜索$HOME/cilkplus-gcc/contrib/tmp???

我怎样才能把事情做好?

我怎样才能度过这个难关?谢谢

0 投票
5 回答
4210 浏览

c++ - 英特尔 TBB 与 CilkPlus

我正在开发针对 Intel x86_64 机器的 C++ 中要求时间的模拟。经过一番研究,我发现了两个有趣的库来实现并行化:

如文档中所述,它们都针对多核处理器上的并行性,但仍未确定哪一个是最好的。AFAIK Cilkplus 简单地实现了三个关键字以实现更轻松的并行性(这会导致重新编译 GCC 以支持这些关键字);而 TBB 只是一个促进更好并行开发的库。

你会推荐哪一个?

考虑到我在安装 CilkPlus 时遇到了很多很多问题(仍在尝试并仍在尖叫)。所以我想知道,我应该先检查 TBB 吗?Cilkplus 是否优于 TBB?你会推荐什么?

它们兼容吗?

我应该完成安装CilkPlus(仍在为此祈祷),是否可以与它一起使用TBB?他们可以一起工作吗?有没有人体验过 CiclkPlus 和 TBB 的软件开发?你会建议和他们一起工作吗?

谢谢

0 投票
1 回答
125 浏览

parallel-processing - 多项式乘法 CilkPlus

我正在尝试使用 cilk_for 制作此代码的并行 cilk 代码:

在串行代码中:

例如:

0 投票
2 回答
115 浏览

c++ - 找不到 reducer_min_index 的 calc_min 函数

嘿伙计们,我正在尝试使用 cilk plus 减速器进行简单的查找最小值操作。出于某种奇怪的原因,我能够包含 reducer_min 库,但我无法使用函数 calc_min。有谁知道我为什么会收到这个错误?

47:错误:“class cilk::reducer_min_index”没有名为“calc_min”的成员

任何建议将不胜感激!

0 投票
2 回答
673 浏览

c++ - 尝试使用 cilkplus 在 gcc 上运行 cilkscreen/cilkview

我目前正在尝试使用 cilkscreen 在 cilk 中查找竞争条件;但是,我有以下问题。

我究竟做错了什么?我已经下载并设置了 PATH 以引用下载的目录https://www.cilkplus.org/download。我在 64 位上运行 ubuntu 13.10。Cilkplus 本身运行良好。

0 投票
1 回答
241 浏览

c++ - 为什么它会在 cilk 中出现分段错误,我正在使用 ICC 编译器

我是 cilk 编程的新手。我正在尝试使用 cilk 进行块矩阵乘法。但由于某种原因,我遇到了分段错误。你能帮我解决这个问题吗?