问题标签 [embarrassingly-parallel]
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 - opencl 分支与内存冗余
我正在处理网格中的项目,根据项目的类型,需要执行不同类型的计算/功能。但是我读过分支在做同样事情的工作项之间是一件非常糟糕的事情。为了避免这种情况,我可以将网格拆分为每种类型的网格(在这种特殊情况下我只需要两个)......
在这种情况下会更好吗?将分支留在那里,或者为每种类型制作两个网格?我知道这取决于分支内部发生的情况(计算界限)与网格的大小(内存/延迟界限)。
这些决定是否有一些基本规则要遵循,或者是否有共识总体上哪个更好?
编辑:(空间)网格并不像通常的空间网格那样稀疏,而是结构的密集数组(没有空元素)(每个结构约 200 个字节),最多可容纳约 500.000 个元素。
我从另一个源填充这个数组,使用那个源我把三角形或线段放在那里。
然后使用这个网格,我需要进行线段/线段或线段/三角形碰撞检测。所以问题是在这种情况下填充两个单独的数组是否会更有效(为了论证,让我们说 250.000 个元素 x 200 字节)并让工作项仅对线/线或线/三角形进行批量计算..或者有一个大的 500.000x200 字节,并让每个工作项找出给定类型要执行的计算。
python - 多处理 - 读取大输入数据 - 程序挂起
我想对从文件加载的一些输入数据运行并行计算。(文件可能非常大,所以我为此使用了一个生成器。)
在一定数量的项目上,我的代码运行正常,但高于此阈值程序挂起(一些工作进程没有结束)。
有什么建议么?(我用 python2.7 运行这个,8 个 CPU;5000 行仍然可以,7500 行不行。)
首先,您需要一个输入文件。在 bash 中生成它:
然后,运行这个:
主要.py:
python - 使用 Python 多处理的令人尴尬的并行任务的预期加速
我正在学习使用 Python 的 Multiprocessing 包来解决令人尴尬的并行问题,因此我编写了串行和并行版本来确定小于或等于自然数n的素数的数量。根据我从博客文章和Stack Overflow 问题中读到的内容,我想出了以下代码:
串行
平行
这是我得到的n = 10000000 (对于并行我请求 8 个进程):
所以看起来我可以获得超过 3 倍的加速。这是我的问题:
- 显然这不是线性加速,所以我能做得更好(或者我应该实际期望什么样的加速)?
- 看起来阿姆达尔定律回答了这个问题,但我不知道如何确定我的程序的哪一部分是严格串行的。
任何帮助表示赞赏。
编辑:有 4 个物理内核,能够进行超线程。
c++ - 令人尴尬的并行代码的低性能
我有这个非常简单的并行代码,我用它来学习令人尴尬的并行 openmp。但是,我没有得到预期的超线性或至少线性的性能提升。
在使用英特尔 c++ 编译器 xe 15.0 并计算 288 x 288 矩阵的 sgemm(矩阵乘法)的 Visual Studio 上,我得到 350 微秒的核心 = 1 和 1177 微秒的核心 = 4,这看起来就像一个顺序代码。我将英特尔 MKL 属性设置为并行(也使用顺序测试),将语言设置设置为生成并行代码 (/Qopenmp)。无论如何要改善这一点?我在四核 haswell 处理器中运行
python-2.7 - 如何并行化这段代码?
我已经浏览了一段时间,但找不到任何我能理解的建设性答案。
我应该如何并行化以下代码:
或者我在哪里可以读到它?我什至不确定如何搜索它。
python-2.7 - 如何在并行化 For 循环的每次迭代中生成一组不同的随机数?
由于应用了这个问题的答案,直接出现了以下问题。在最小工作示例(MWE)中,myscript
定义中有一个地方我生成一些随机数,然后对它们执行一些操作,最后将输出写入文件。当此代码未并行化时,它可以正常工作。但是,如果它是并行的(我在 2 核机器上测试它,并且一次有两个线程),当我想执行 4 次迭代(boot
)时,我得到两倍的相同输出(即,在我得到的四个输出中只有两个不同的数字,而不是预期的四个)。如何解决这个问题?
MWE:
performance - Python - 为什么这段代码需要这么长时间?
我关心的是两条哈希线之间的部分。以下代码运行时间太长,我无法等待其输出。当我用另一段代码替换有问题的部分时,程序会在几秒钟内运行(见本文末尾)。我的目标是生成 90 个均匀分布在单位正方形 ( var1
, var2
) 中的数据点,然后生成 12 个随机放置在半径为 1/8 的圆中的点,该圆完全位于单位正方形 ( cir1
, cir2
) 内,最后加入这两组 ( sph1
, sph2
)。
自从昨天广告以来,我一直在研究这段代码,我真的很确定它是正确的(显然不是)。我可能错过了一些非常明显的东西......
这是我修改以创建上述代码的另一个(工作)块:
python - 并行化 pandas 应用
熊猫新手,我已经想并行化逐行应用操作。到目前为止,我发现Parallelize apply after pandas groupby但是,这似乎只适用于分组数据帧。
我的用例有所不同:我有一个假期列表,对于我当前的行/日期,我想找到这一天之前和之后到下一个假期的非工作日。
这是我通过应用调用的函数:
我怎样才能加快速度?
编辑
我对 pythons 池进行了一些试验——但这既不是好的代码,也没有得到我的计算结果。
parallel-processing - “要运行的最大作业数”不等于在远程服务器上使用 GNU Parallel 时指定的作业数?
我正在尝试在 PBS 集群上使用 GNU Parallel 运行许多小型串行作业,每个计算节点都有 16 个内核,因为我打算使用多个计算节点,因此我将选项 -S $SERVERNAME 传递给 GNUParallel,但是让我感到困惑的是使用节点上启动的作业数-S $SERVERNAME
不等于我打算生成超过 9 个作业时指定的作业数,以下是我的观察:
当使用 GNUParallel 作为本地主机而不使用 -S $SERVERNAME 时,没有问题,我打算生成 10 个作业,而 GNUParallel 启动了 10 个作业:
当我使用 GNUParallel 生成少于 10 个作业时-S $SERVERNAME
,仍然没有问题。
这让我感到困惑,当我尝试使用 >=10 的工作编号时,产生的工作数量总是比想要的少一个,这里我想产生 10 个,只开始了 9 个工作:
我使用“top”检查了计算节点的状态,它确实表明我使用seq 1 10
. 希望我已经把我的问题说清楚了,有人能指出这个问题的可能原因吗?欢迎任何建议。
非常感谢你!