parallel-processing相关内容

c#中异步和并行编程之间的关系是什么?

我很困惑,因为异步编程是一种异步执行代码块的方法,它调用一个方法而不等待结果.同样,并行编程是一种同时执行多个任务的方法,但所有这些任务都是异步执行的.所以想知道/困惑这两种 C# 编程范式之间的关系是什么. 解决方案 并行编程 是一种我们使用多线程更快地执行任务的技术.这意味着在现代多核架构上,我们可以利用更多可用资源来执行任务. 一个很好的例子是使用快速排序对列表进行排序. ..
发布时间:2021-12-30 21:47:04 C#/.NET

为什么异步进程不称为同步?

所以我对这个术语有点困惑. 每个人都将“异步"计算称为在单独的线程上运行不同的进程,这给人一种这些进程同时运行的错觉. 这不是异步这个词的定义. a⋅syn⋅chro⋅nous-形容词1. 不同时发生.2.(计算机或其他电机的)在前一个操作完成后才开始每个操作. 我在这里不明白什么? 解决方案 表示两个线程没有同步运行,也就是它们不在同一时间线上运行. 我认为这是计算 ..
发布时间:2021-12-30 21:46:56 其他开发

我可以使用“cabal install"来使用多核吗?

有谁知道如何让 cabal install 来利用并行性?我正在使用 GHC 进行编译,虽然我不知道 GHC 本身是否可以进行并行构建,但 cabal install 肯定可以并行运行多个编译,不是吗?至少对于不同的、独立的包? 有谁知道这是否可能以及如何去做? 解决方案 有一个 今年夏天的 Google Summer of Code 项目,以并行化 cabal-install.虽然 ..
发布时间:2021-12-30 21:46:47 其他开发

nodejs 并行回调设计模式

我正在努力寻找一种好的模式来执行一堆并行任务. 让我定义一些任务来举例说明.任务 a, b, c, d, e, f, g 执行为 a(function(er, ra){//task a 返回,ra 是结果}),b 到 g 也是如此 还有一些任务是在某个任务完成后才执行的,我们称它们为ab, bc, abc, bd, bcd, af, fg,意思是当a 和 b 已经返回 ab(ra, rb ..

TParallel.For default ThreadPool 的奇怪行为

我正在试用 Delphi XE7 Update 1 的并行编程功能. 我创建了一个简单的 TParallel.For 循环,它基本上会执行一些虚假操作来打发时间. 我在 AWS 实例 (c4.8xlarge) 的 36 个 vCPU 上启动了该程序,以尝试了解并行编程的好处. 当我第一次启动程序并执行 TParallel.For 循环时,我看到了显着的收益(尽管使用 36 个 v ..
发布时间:2021-12-30 21:46:26 其他开发

Common Lisp 并行编程

我想在 Common Lisp 中并行实现我的粒子过滤算法.粒子过滤和采样可以并行化,我想为我的 4 核机器执行此操作.我的问题是在 CL 中并行编程是否可行,如果可行,是否有任何关于 CL 中并行计算入门的好读物和教程. 解决方案 绝对可行! 波尔多线程项目为许多实现提供线程原语;我建议使用它而不是 SBCL 的特定于实现的原语(特别是如果您不在 SBCL 上!). bt 提 ..
发布时间:2021-12-30 21:46:17 其他开发

Clojure 中 pmap 的更好替代方案,用于在大数据上并行化适度廉价的函数?

使用 clojure,我在一个序列中有大量数据,我想以相对较少的内核(4 到 8 个)并行处理它. 最简单的方法是使用 pmap 而不是 map,将我的处理函数映射到数据序列上.但在我的情况下,协调开销导致净损失. 我认为原因是 pmap 假设跨数据映射的函数非常昂贵.查看 pmap 的源代码,它似乎依次为序列的每个元素构造了一个 future,因此函数的每次调用都发生在单独的线程上( ..
发布时间:2021-12-30 21:46:11 其他开发

使用 >> 将多个并行进程的输出通过管道传输到一个文件是否安全?

我正在从网络上抓取数据,并且我的抓取器有多个并行运行的进程. 我希望每个进程的输出都在同一个文件中.只要文本行保持完整并且不会相互混淆,行的顺序无关紧要.在 UNIX 中,我可以使用 >> 操作符将每个进程的输出通过管道传送到同一个文件吗? 解决方案 没有.不保证线路将保持完整.它们可以混合在一起. 根据 liori 的回答进行搜索,我找到了this: {PIPE_BUF ..
发布时间:2021-12-30 21:46:05 服务器开发

什么是“火花"?在哈斯克尔

我对“火花"的概念感到困惑 它是 Haskell 中的一个线程吗?或者是产生新线程的动作? 谢谢大家: 总而言之,sparks 不是线程,而是更多的计算单元(用 C#/Java 术语来说是任务).所以这是实现任务并行的 Haskell 方式. 解决方案 Sparks 不是线程.forkIO 引入了 Haskell 线程(映射到较少的真实操作系统线程上).Sparks 为每 ..
发布时间:2021-12-30 21:45:55 其他开发

如何使已编写的并发程序在 GPU 阵列上运行?

我有一个用 Erlang 编写的神经网络,我刚买了一块 GeForce GTX 260 卡,上面有 240 核 GPU.使用 CUDA 作为胶水在显卡上运行它是否微不足道? 解决方案 不,使用 CUDA 不是一件小事. CUDA 编程模型基本上使用 C(有一些附加功能),但为了充分利用 GPGPU 的功能,您必须确保您的算法遵循 CUDA 指南.(请参阅 NVidia CUDA 编程 ..
发布时间:2021-12-30 21:45:38 其他开发

什么是最好的 MPI 实现

我必须在集群中实现 MPI 系统.如果这里有人对 MPI (MPICH/OpenMPI) 有任何经验,我想知道哪个更好,以及如何在 x86_64 机器集群上提高性能. 解决方案 MPICH 已经存在了很长时间.它非常便携,您可以在网上找到多年的提示和技巧.这是一个安全的选择,它可能与更多的 MPI 程序兼容. OpenMPI 较新.虽然它不是那么便携,但它非常好地支持最常见的平台.大 ..
发布时间:2021-12-30 21:45:30 其他开发

从长格式到宽格式重塑海量数据的有效方法 - 类似于 dcast

这个问题与创建“宽"表有关,类似于您可以使用 reshape2 中的 dcast 创建的表.我知道这之前已经讨论过很多次了,但我的问题是关于如何使这个过程更有效率.我在下面提供了几个示例,这些示例可能会使问题看起来很冗长,但其中大部分只是用于基准测试的测试代码 从一个简单的例子开始, >z 我们需要创建一个“宽"表,它将 col4 列的值作为列名,以及 col1 和 col2 的每个组 ..
发布时间:2021-12-30 21:45:23 其他开发

使用 AWS 与 R 进行并行处理

我想通过为每个客户构建模型来参加 Kaggle Dunnhumby 挑战.我想将数据分成十组,并使用亚马逊网络服务 (AWS) 在十组上并行使用 R 构建模型.我遇到的一些相关链接是: segue 包; 关于使用 Amazon 的并行网络服务的演示. 我不明白的是: 如何将数据放入十个节点? 如何在节点上发送和执行 R 函数? 如果您能分享建议和提示以指明正确的方向,我 ..
发布时间:2021-12-30 21:45:15 其他开发

从另一个线程更新 ObservableCollection 的最佳方法是什么?

我正在使用 BackgroundWorker 来更新 ObservableCollection 但它给出了这个错误: "这种类型的 CollectionView不支持更改其SourceCollection 来自一个线程与 Dispatcher 线程不同." 以最少的工作量解决此问题的最佳和最优雅的方法是什么.我不想写低级基于锁的多线程代码. 我在网上看到了一些解决方案,但它们已经 ..

Task.WaitAll 和异常

我在异常处理和并行任务方面遇到问题. 下面显示的代码启动 2 个任务并等待它们完成.我的问题是,如果任务抛出异常,则永远不会到达 catch 处理程序. 列表任务 = 新列表();尝试{tasks.Add(Task.Factory.StartNew(TaskMethod1));tasks.Add(Task.Factory.StartNew(TaskMethod2));var arr = ..
发布时间:2021-12-30 21:44:49 C#/.NET

使用 numpy 数组和共享内存并行化 python 循环

我知道有关此主题的几个问题和答案,但尚未找到对此特定问题的满意答案: 在其中通过 numpy/scipy 函数操作 numpy 数组的 Python 循环中执行简单共享内存并行化的最简单方法是什么? 我不是在寻找最有效的方法,我只是想要一些简单的实现,当循环不并行运行时不需要大量重写.就像 OpenMP 在低级语言中实现一样. 我在这方面看到的最佳答案是这个,但这是一种相当笨拙的 ..

openmp中的并行for循环

我正在尝试并行化一个非常简单的 for 循环,但这是我很长时间以来第一次尝试使用 openMP.我对运行时间感到困惑.这是我的代码: #include #include 使用命名空间标准;int主(){int n=400000,m=1000;双 x=0,y=0;双 s=0;向量 我用 编译它 g++ -O3 testMP.cc -o testMP -I/opt/boost_1_48_0/i ..