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

0 投票
1 回答
1997 浏览

multicore - 多核处理器与多 CPU 中的内存访问

我有个问题,

多处理器机器是否可以从 RAM(单 ram 系统)访问数据?例如,机器有 2 个并行执行的处理器 p1、p2,它们是否有可能访问相同的 ram 进行读写(ofcos 写入不在同一位置)

我知道在多核机器中这是不可能的,因为数据总线是共享的。

0 投票
0 回答
51 浏览

process - 如何保护在不同内核中执行的进程的关键部分?

我已使用sched_setaffinity()将创建的进程分配给不同的核心,并将互斥锁创建为进程共享:

该互斥体存储在所有进程都可以访问的文件位置。它适用于同一核心中的进程,但不同核心中的进程正在执行,就好像没有关键部分一样。它们像正常情况一样并行执行。那么基本上,如何在多核系统中同步进程?

0 投票
2 回答
93 浏览

caching - 处理器如何知道多处理器系统中缓存行的最新副本

在每个处理器都有自己的缓存副本的多处理器系统中,处理器如何知道从哪里获取数据副本。因为它将存在于自己的缓存中,也存在于其他相应处理器或主内存的缓存中,即它将如何知道哪个副本是最新的

0 投票
4 回答
25058 浏览

android - Gradle android 为不同的处理器架构构建

我想使用 Gradle 为 4 个不同的 Android CPU 处理器架构(armeabi armeabi-v7a x86 mips)构建 4 个单独的 apk。

我在libs文件夹中有为 4 个 CPU 架构构建的原生 OpenCV 库。

我希望每个 apk 只包含对应正确 CPU 架构的 OpenCV 库。

当前的构建脚本如下:

有人可以帮我解决这个问题吗?

干杯,

0 投票
2 回答
413 浏览

java - 多核环境下的数据同步(基于Java)

这是我的第一个问题,所以请对我温柔一点。

当两个线程,比如 t1 和 t2,运行在不同的 CPU 内核上同时调用共享对象上的同步方法时,即在相同的纳秒/处理器周期内,会发生什么?锁是如何以及通过什么架构元素来解决的?

这似乎是一个显而易见的问题,但我在互联网上找不到任何东西。谢谢!

0 投票
2 回答
355 浏览

multiprocessing - 为什么在构造常规布尔 MRSW 寄存器时需要 2 个寄存器?

在上面的代码中,使用了 old 和 value 两个变量。然而,根据我的说法,只有一个变量可以做同样的事情,那就是价值。

0 投票
1 回答
152 浏览

multiprocessor - 分层 CLH 锁定行为

谁能解释在集群主控将本地队列合并到全局队列后,HCLH 锁如何处理在本地集群中创建的新节点?

0 投票
1 回答
955 浏览

multithreading - 具有超线程的多核处理器上的多线程程序(进程)

对于多核计算,一开始让我感到困惑的是,多核硬件的模型对真机过于抽象。

我在一台带有单个英特尔处理器的笔记本电脑上工作,包含4 个内核并支持超线程,这使得逻辑内核的数量为 8

假设我有一个Java程序实现了并发算法(据说Java会使用线程调度的OS规则,所以JVM不会影响调度),并且程序是纯CPU绑定的

我的观察:

  • 如果程序(进程)运行的线程数少于 8 个,则工作的并行度会随着线程数的增加而增加
  • 当总线程数大于 8 时,性能会变得复杂,但通常不会比运行 8 个线程有更多的改进;而对于某些特定的算法,它比运行8个线程更糟糕,即时间消耗大大增加。

我对此的了解: 据我所知,我运行的程序被操作系统视为用户进程,如果程序创建线程以尝试获得并行性,操作系统将尝试在可用内核中调度这些线程。同一内核上进程的任何线程都可以共享该内核上进程的总执行时间。

我的问题: 假设 CPU 只运行我的程序。即没有其他用户进程。

  • 如果 CPU 只有 1 个核心,则该进程将无法通过多线程获得并行性的好处,因为该进程的总执行时间不会改变。这是真的吗?

  • 如果有多个内核可用,操作系统将尝试在不同内核上均匀、公平地调度进程的线程,并且不同内核上的进程线程获得自己的(额外)执行时间,从而加快速度。这是真的吗?

  • 如果有 n 个线程和 m 个内核,其中 n>m,则某些内核可能会运行超过 1 个进程的线程,这甚至可能会因为同一内核上的线程之间的“上下文切换”而损害并行性的加速,并且以不同速度运行的进程线程的潜在副作用。这是真的?

非常感谢!

0 投票
3 回答
191 浏览

multithreading - Perl ithreads:共享变量 - 多处理器内核线程 - 可见性

perlthrtut 摘录:

请注意,共享变量保证如果两个或多个线程同时尝试修改它,变量的内部状态不会被破坏。但是,除此之外没有任何保证,如下一节所述。

在支持多处理器内核线程的 Linux 上工作。

是否保证所有线程都会看到更新的共享变量值?如上所述咨询 perlthrtut 文档没有这样的保证。

现在的问题是:可以以编程方式做些什么来保证这一点?

0 投票
3 回答
673 浏览

python - python中的多处理器是否需要同步?

当使用这样的代码时

假设线程修改list_out,它们是否以同步方式进行?