问题标签 [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.

0 投票
1 回答
124 浏览

linux - linux系统上的cilk++

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

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

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

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

0 投票
3 回答
248 浏览

c++ - 为什么这段代码会导致死锁?

我很惊讶地看到pstack这段代码导致了死锁!我看不出有同样的原因。

我只是使用互斥锁来确保对 A 的访问是原子的和序列化的。

  • 这段代码有什么问题导致死锁?
  • 有没有更好的方法来实现这一点?
0 投票
3 回答
1571 浏览

c - 为什么我的快速排序在大输入时会崩溃?

我创建了一个中位数为 3 的标准快速排序实现,它对大量随机整数进行排序。我想增加到至少 1 亿个元素,但最好是 10 亿个。为了提高速度,我尝试在 Cilk++ 中并行化算法。该算法使用双递归,我生成 Cilk 任务来执行每个递归排序。

我的算法适用于最大为 10 000 000 的数组。没有 Cilk 关键字,我的顺序算法可以轻松处理 1 亿个元素,但是当我尝试使用 Cilk 时,程序崩溃到桌面。我现在想找出原因。我是否太快地生成了太多 Cilk 任务?

我正在使用 Windows 7 64 位、Intel++ 编译器和集成在 Visual Studio 2010 中的 Intel Parallel Studio XE 2013。该程序被编译为 32 位应用程序。存储随机数据的内存被分配为对 malloc 的单个调用,并检查指针。在中值计算中,在计算中间元素时也要注意整数溢出。

这很可能是缓冲区溢出问题。

这是我的分区:

0 投票
1 回答
150 浏览

boost - Cilk++ 与 Boost 库

使用 Boost Library 编译 Cilk++ 代码时遇到问题。

  1. Boost 库已安装在 /usr/include 之外。

在使用 cilk++ 编译时,我使用了 -I 选项来指定 boost 目录。我收到以下错误。

0 投票
0 回答
94 浏览

cilk - 在 cilk 中使用结构时出现语法错误

在尝试编译我的 cilk 程序时,我遇到了一个奇怪的语法错误。也许我错过了一些基本的东西,那就是 cilk 的怪癖。每当我使用结构(如下面的代码)时,程序都会产生语法错误。当我取出cilk关键字并正常编译+运行程序时,不会出现此错误。

其他一些可能会提供一些见解的注释是,如果我不尝试分配给结构中的任何变量(如大小),它编译得很好,错误总是显示在结构行下方的行号,但它那个特定的行是什么并不重要,正如我之前提到的,当结构方面被取出时,它编译得很好。

0 投票
1 回答
431 浏览

c - 如何让 Cilk 与 Cygwin 一起工作?

我已经下载了这两个程序,但我在谷歌上没有看到让 Cilk 在 Cygwin 上工作的说明。有没有可以工作的 Cygwin 软件包?我正在用 C 编程并安装了 gcc。

0 投票
1 回答
324 浏览

c - 使用 gcc 静态链接 Mac 上的 cilk 库

我正在尝试将 cilk 库静态链接到我的程序,以便能够在没有安装 cilk 库的环境中运行可执行文件(因为它并不常见)。

这是我能想到的最好的:

如前所述,我手动链接 libcilk.a 和 libcilkrt0.a 以防止 gcc 链接到共享库。这使得程序大小从 266Kb 增加到 344Kb,这让我觉得静态链接成功了。

可悲的是,当我使用 otool 检查可执行文件的依赖项时,我得到:

我了解 zlib 和 gcc,我还没有静态链接。但是,如果我手动链接到 libcilk.a,为什么 libcilk.0.dylib 依赖项仍然存在?

我实际上也尝试在另一台计算机上运行该程序,但在启动时程序终止并抱怨 /usr/local/lib/libcilk.0.dylib 无法加载。

所以我的问题是,明确指定 .a 到 gcc 不足以删除指定的库依赖项?我还应该怎么做才能让我的 libcilk 静态链接而不是在运行时加载?

我已经知道 -static 选项,但我不希望每个库(包括系统库)都被静态链接,我只希望 cilk 库被静态链接。
这可能吗?

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 回答
125 浏览

parallel-processing - 多项式乘法 CilkPlus

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

在串行代码中:

例如: