问题标签 [parallelism-amdahl]
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.
python - 使用 PyCuda(或其他?)在 Python 中的嵌套 for 循环上进行并行编程
我的 python 函数的一部分如下所示:
问题: len(longitude_aq)
大约。320klen(longitude_meo)
是 700 万。这使该代码的迭代次数接近 21000 亿次……
我必须迭代一个文件(那个longitude_aq
)然后计算一些平均值,迭代第二个文件(那个longitude_meo
)给定从第一个文件中提取的一些特征。
看来我不能以任何不同的方式进行。
可能的解决方案:并行编程。我的大学允许我访问他们的 HPC。他们有几个节点 + 几个 GPU 可访问(此处列出GPU,此处列出CPU)
目标:没有使用 Python 进行 CUDA 编程的经验,我想知道将我的代码转换为 HPC 可运行的东西的最简单方法是什么,从而使计算时间急剧下降。
performance - MQL5 中的 OpenCL 代码不会将分布式作业分配给每个 GPU 内核
我使用 OpenCL 和 MQL5 为 MetaTrader 终端平台创建了一个基于 GPU 的指标。
我已经努力让我的 [ MetaTrader Terminal: Strategy Tester ] 优化工作必须在 GPU 上传输到最大。大多数计算都是由指标完成的。因此,我对指标进行了更改,并已完全转移到 GPU 上。
但是当我尝试在策略测试器部分进行优化时,真正的问题就出现了。
我看到的过程同时使用了我的 GPU 和 CPU,但对整个过程没有影响。
我怀疑该进程没有分配给每个 GPU 核心进行处理,而是所有 GPU 核心都在同一个进程或函数上工作以执行。
请让我知道我需要做什么才能让单个 GPU 工作以执行单个函数以提供更快的输出。
这是我的代码链接:Expert 的完整代码
我的代码的内核是:
请建议我使用 OpenCL 上的 GPU 在 MQL5 中分配具有不同值或帧的函数的出路。
已编辑
对于寻求挑战的人来说,这是一个巨大的挑战……甚至我也很想知道 OpenCL 和 MQL5 是否可以为优化任务做任何事情。我希望我能得到我所寻求的答案。
再次 编辑MAGPU.mqh
文件
主要指标文件 CHECKMA.mq5
文件
parallel-processing - 在没有串行分数的情况下加速
我在一个并行包上进行了一组实验,比如说superlu-dist
,使用不同的处理器编号,例如:4, 16, 32, 64
我得到了每个实验的挂钟时间,比如:53.17s, 32.65s, 24.30s, 16.03s
加速公式为:
但是没有关于序列分数的信息。
我可以简单地取挂钟时间的倒数吗?
python - python joblib & random walk - [CONCURRENT] 进程调度的性能
这是我用于模拟一维反射随机游走的 python-3.6 代码,使用该模块在 Linux 集群机器上的工作人员joblib
之间同时生成 400 个实现。K
但是,我注意到 for 的运行时间K=3
比 for 更差K=1
,而且 for 的运行时间K=5
更差!
任何人都可以请参阅改善我使用的方法joblib
吗?
parallel-processing - 查找代码的串行和并行百分比
如果我知道 2 处理器系统和 4 处理器系统的作业完成时间,我如何计算 1 处理器系统所花费的时间(Ts)。我想知道这一点,所以我可以使用等式找到任何给定代码的序列百分比
其中 S 是代码的序列百分比和 N 个处理器
c - 并行化变量声明是否有益?
我想知道在编写并行程序以将变量声明插入并行部分时是否有益?因为阿姆达尔定律说,如果程序的更多部分是并行的,那就更好了,但我看不出并行化变量声明和返回语句的意义,例如,这是正常的并行代码:
写这个对 Amdahl 定律有好处吗(所以 100% 的程序是并行的):
multithreading - 针对特定繁重任务的阿姆达尔定律
我有一组可以完全并行执行的任务(通过 GSM 调制解调器发送短信),但一个短信任务不能。每个任务大约需要 10 秒才能执行。所以现在我正在尝试评估它在 4 个 GSM 调制解调器上的表现。
阿姆达尔定律
在我的情况下 p=1 因为任务是完全并行的,并且 s=4(GSM 调制解调器)
因此
问题 我怎样才能在我的计数中表示这种情况
例如,如果我有 5 个 GSM 调制解调器,但只有一个要发送的 SMS,我的任务根本不是并行的,但是根据这条定律,我知道加速比是 5。
所以它真的需要 10 秒,但根据阿姆达尔定律,我得到 10/5=2 秒
python-3.x - 我有一些算法,需要 5 个多小时才能给出输出。有什么办法可以减少处理时间?
我有一个由递归函数组成的确定性动态编程算法,当我增加数据点(下面代码中的 x 和 s)时,我的代码需要永远(超过 5 个小时)才能给我一个输出。
我听说有一种叫做并行计算的东西multiprocessing
在 python 中使用模块,但我不确定这是否能解决我的问题,如果是的话,我根本不知道。
如果有人可以帮助我了解如何multiprocessing
在 python 中使用模块或任何其他方式来减少处理时间,那就太好了。蒂亚:)
python - 如何在 Raspberry Pi3 上并行运行 TensorFlow 和其他一些处理
我想在 Raspberry Pi 3 上使用 PiCamera 运行连续流,并与该流并行执行其他计算。
我只需要从该流(进程)中获取它检测到的对象。我将在这里发布我到目前为止的代码。它没有进入computation()
函数。它只是启动相机并检测那里的物体并停留在该过程中。
我尝试过使用multiprocessing
Python 中的模块,但它似乎不起作用。
c++ - 查找点属于哪个三角形的优化技巧
我实际上在优化我的算法时遇到了一些麻烦:
我有一个磁盘(以 0 为中心,半径为 1)填充了三角形(不一定具有相同的面积/长度)。可能有大量的三角形(比如说从1k
到300k
三角形)
我的目标是尽快找到一个点属于哪个三角形。该操作必须重复很长时间(大约10k
times)。
现在我使用的算法是:我正在计算每个三角形中点的重心坐标。如果第一个系数介于 0 和 1 之间,我继续。如果不是,我就停下来。然后我用同样的想法计算第二个系数,第三个系数,我对每个三角形都这样做。
我想不出一种方法来使用我正在处理光盘的事实(以及我有一个欧几里得距离来帮助我直接“瞄准”好三角形的事实):如果我尝试计算距离我指向三角形的每个“中心”:
1)当我用重心坐标强制它时,它已经比我正在做的操作更多
2)我必须订购一个包含所有三角形的欧几里得距离的向量到我的点。
3)我绝对不能保证离我的点最近的三角形是好的三角形。
我觉得我错过了一些东西,我可以预先计算,一些东西可以帮助我在开始蛮力部分之前发现好的“区域”。
该算法已经并行化(使用 OpenMP):我正在并行调用以下函数。
下一步可能是查看 GPU 并行化,但我需要确保代码背后的想法足够好。
现在它大约2min30
需要75k
三角形和10k
点,但这还不够快。
编辑:Triangle2D
使用特征矩阵来存储坐标