问题标签 [multiprocessor]
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 - 多处理问题:不同系统上的不同行为,从正确到绝对不正确
我正在处理数据(> 40MB)的大型文本文件,并且连续执行需要很多时间。我决定使用 python 3.5 多处理器包。当它起作用时,它会明显更快,但我得到的结果好坏参半。
我在两个系统上运行以下代码,第一个是非常规范的双 xeon 服务器,第二个是我的 X1 Carbon thinkpad。两者都在运行 ubuntu16.04 和普通的 python 3.5。
双至强提供以下输出。
16686 的块大小与 166886 的队列计数相匹配,这表明工作函数的每个参数都已被处理,并且相应的数据点已添加到队列中。
笔记本电脑在完全相同的文件/数据上运行,程序快速终止并给出以下输出:
这表明由于某种原因,传递给 getBLockData 的 16686 个参数几乎没有被处理。
我希望笔记本电脑的运行速度比 Xeon 慢得多,但我也希望它已经处理了传递到池中的所有数据。我很困惑……有人能从经验中汲取经验吗?
worker 函数如下所示:
linux - Linux:信号对多线程的影响
我不认为这是重复的。关于调用信号处理程序时其他线程会发生什么,我有一个非常具体的问题。
我有一个使用硬件的多线程程序。在获得 SIGTERM(来自父进程)时,我希望信号处理程序将硬件状态设置为给定状态,然后退出(1)。我明白,由于我没有使用信号掩码,主线程将处理信号。但它是一个多处理器系统(树莓派),其他线程都以相对于 main 的高优先级运行。他们可能睡着了,但他们也可能正在触摸硬件。
如果所有其他线程在信号到达时冻结,我很好 - 我直接从信号处理程序调用 exit() 并且其他线程将永远不会再次运行。但是,如果它们可以独立运行,那么在我在处理程序中设置所需状态之后,但在我退出之前,它们可能会对硬件大惊小怪。而且我找不到描述效果的文档。如果“冻结除信号处理程序之外的所有内容”不是默认设置,有没有办法获得这种行为?
我可以重新设计代码,将所有硬件处理放在一个线程中,并让该线程处理中断,但这很不方便——我现在拥有的线程布局做了很好的分工,每个线程都知道它可以接触什么硬件以及何时接触。我宁愿不重新设计。
python - 在多处理器机器上使用 scipy odeint 计算时间很慢
我在两台不同配置的计算机上运行 python 脚本:PC-1 比 PC-2 更强大。问题是 PC-1 的计算时间是 PC-2 的两倍……显然我的预期正好相反!
我认为问题来自我用来在我的 python 脚本中求解普通方程的 scipy odeint 包。确实,我使用 cProfile 比较了两台计算机,PC-1 进入 odeint 函数的时间是 PC-2 的两倍。
以下是两种配置: PC-1:
- 2 个处理器 Intel Xeon E5-2609 v4(1,7GHz,8C,20Mo 缓存,85W),1866MHz
- 32Go RDIMM (4x8Go), 2400MHz, DDR4
- AMD FirePro W4100, 2Go
- Windows 10 专业版 64 位
PC-2:
- 酷睿 i5 6200U(2.30-2.40 GHz,2C,3Mo 缓存)
- 8GB (1x8GB) 2133 DDR4
- 英特尔核芯显卡 520
- Windows 10 专业版 64 位
会不会是多核架构、编译等问题?
谢谢
operating-system - SMP 系统的可扩展性是什么意思?
我目前正在为操作系统的期末考试学习,但我被早期考试中的一个(可能非常简单的)问题困住了。问题是,我们在讲座中从未有过这个话题,我不太确定我的教授想听什么……但他几乎在每次考试中都会问这个问题!
“ SMP 系统的‘可扩展性’是什么意思? ” -> 我知道 SMP 系统是什么,但仅此而已。
最重要的是,他想知道是什么硬件(和软件!)因素限制了 SMP 系统的可扩展性(一个关键字足以作为答案)。我的想法:
硬件 -> 处理器数量,软件 -> ?
我希望你能帮助我解决这个问题。
先感谢您!
茅场
python - 通过管道发送数据(BytesIO 缓冲区)可以工作,但会导致致命的 Python 异常
在 Windows 上使用 Python 2.7,以下代码可以工作,但会导致 msvc 出现问题。
这是错误:
随后是 pythonw.exe 已停止工作的消息:
python - 多处理图像和管道通信
考虑到两个处理器,我正在尝试加速成像管道。
- 拍摄图像并将其写入管道
- 读取图像并计算
因此,我读过一些关于管道的东西:
然后我有一个包含两个进程的代码片段:
我想在获取一张图像后立即将图像发送到特征提取处理器。因此,我想使用上面的管道示例。但是,我无法将这两个示例放在一起。我会感谢一些建议:) 亲切的问候
atomic - 原子操作定义和多处理器
我正在学习同步,现在我对原子操作的定义感到困惑。通过搜索,我只能发现原子操作是不间断操作。
那么,原子操作是否只对单处理器系统有效,因为对于多处理器系统,许多操作可以同时运行?
python - 多处理未在双处理器 Windows 机器上实现完整的 CPU 使用率
我正在使用双处理器 Windows 机器,并尝试使用多处理库运行几个独立的 python 进程。当然,我的目标是最大限度地利用两个 CPU,以加快计算时间。我的机器的详细信息如下:
- 操作系统:适用于工作站的 Windows 10 Pro
- 内存:524 GB
- 硬盘:三星 SSD PRO 960 (NVMe)
- CPU:Xeon Gold 6154(2倍)
我使用 Python 3.6 执行一个主脚本,然后使用多处理库生成 72 个独立于内存的工作程序。最初,我机器的所有 72 个内核都以 100% 的速度使用。然而,大约 5-10 分钟后,我的第二个 CPU 上的所有 36 个内核的使用率都降至 0%,而第一个 CPU 上的 36 个内核仍保持在 100%。我无法弄清楚为什么会这样。
关于双处理器 Windows 机器中两个 CPU 的利用率,我有什么遗漏吗?如何确保充分利用机器的潜力?作为旁注,我很好奇如果我使用的是 Linux 操作系统,这是否会有所不同?预先感谢任何愿意为此提供帮助的人。
我的 python 主脚本的表示如下:
centos7 - 如何在 CentOS 7 上为单节点机器配置 slurm 工作负载管理器
我们刚刚购买了具有 2x18=36 核和 200 Gb 内存的单节点服务器,用于科学计算。有几个用户,很难跟踪作业并在用户之间安排它们。这是我第一次管理服务器。
根据我使用超级计算机的经验,有 PBS 和 SLURM 等工作负载调度程序。
是否可以使用某种虚拟登录节点为单节点 mashine 配置 SLURM,比如说使用 4 个内核并分配具有不同数量处理器的多个作业,例如运行两个作业,每个作业具有 16 个内核。
如果是这样,请给我提示如何做到这一点:)。
multithreading - OpenMP 的循环调度如何影响 ccNUMA 的性能?
我正在尝试了解 ccNUMA 系统,但我对 OpenMP 的调度如何损害性能有点困惑。假设我们有以下代码。如果 c1 小于 c0 或更大会发生什么?我理解一般的想法不同的块大小导致远程访问,但我在某处读到,对于小块大小,缓存行正在发生一些事情,我真的很困惑。