multicore相关内容
快速问题:允许 g++ 生成多个自身实例以更快地编译大型项目(例如,对于多核 CPU,一次 4 个源文件)的编译器标志是什么? 解决方案 你可以用 make 做到这一点 - 用 gnu make 它是 -j 标志(这对单处理器机器也有帮助). 例如,如果您想要 make 的 4 个并行作业: make -j 4 您也可以使用 在管道中运行 gcc gcc -pipe 这将流
..
如果给定处理器上有多个内核可用,当 JVM 运行用户编写的 java 代码时,它们会自动使用吗?还是必须专门编写代码才能利用多核? 我的意思是,我们是否必须为 JVM 创建不同的代码才能在运行时利用多个内核,例如通过程序员在用户代码中创建多个线程?并且说如果我们在 java 代码中不使用多线程,那么无论有多少内核可用,JVM 都将无法利用多个内核.可能是这种情况——但我不确定. 解决方
..
在单核计算机上,一次执行一个线程.在每次上下文切换时,调度程序都会检查要调度的新线程是否与前一个线程在同一进程中.如果是这样,则无需对 MMU(页表)进行任何操作.在另一种情况下,需要使用新的进程页表来更新页表. 我想知道在多核计算机上会发生什么事情.我猜每个核心上都有一个专用的MMU,如果同一进程的两个线程同时在2个核心上运行,那么这个核心的每个MMU都只是引用同一个页表.这是真的 ?你能
..
假设我运行一个简单的单线程进程,如下所示: 公共类 SirCountALot {公共静态无效主要(字符串[]参数){整数计数 = 0;而(真){计数++;}}} (这是 Java,因为这是我熟悉的,但我怀疑这并不重要) 我有一个 i7 处理器(4 核,或 8 个计数超线程),我运行的是 64 位 Windows 7,所以我启动了 Sysinternals Process Explorer
..
我最近开始深入研究低级操作系统编程.我(非常缓慢)目前正在阅读两本较旧的书籍,XINU 和 Build Your Own 32 Bit OS,以及一些优秀的 SO 人在我之前的问题中建议的一些资源,如何开始操作系统开发. 可能只是我还没有在这些资源中遇到过它,但这可能是因为这些资源中的大多数是在无处不在的多核系统之前编写的,但我想知道的是中断在多核中是如何工作的/多处理器系统. 例如,
..
在单核 CPU 上,每个进程都在操作系统中运行,并且 CPU 从一个进程跳到另一个进程以充分利用自身.一个进程可以有很多线程,在这种情况下,CPU 在各个进程上运行时会通过这些线程运行. 现在,在多核 CPU 上: 核心是在每个进程中一起运行,还是核心可以在一个特定时间点在不同进程中单独运行?例如,您有程序 A 运行两个线程.双核 CPU 可以运行这个程序的两个线程吗?如果我们使用 O
..
是否可以在使用 Android NDK 编译的本机 C 代码中设置 CPU 亲和性?由于系统使用的是 Linux 内核,应该可以使用 sched_setaffinity/sched_getaffinity 函数,但是当我使用 NDK 编译时,我收到错误消息,抱怨 cpu_set_t 类型未知(用作函数的参数).有没有其他方法可以做到这一点?当我使用 CodeSourcerys ARM 编译器 (a
..
前一周,我写了一个小线程类和一个单向消息管道来允许线程之间的通信(显然,每个线程两个管道,用于双向通信).在我的 Athlon 64 X2 上一切正常,但我想知道如果两个线程都在查看同一个变量并且每个内核上该变量的本地缓存值不同步,我是否会遇到任何问题. 我知道 volatile 关键字会强制一个变量从内存中刷新,但是在多核 x86 处理器上有没有办法强制所有内核的缓存同步?这是我需要担心的
..
我想知道 OpenCV 库是否有多核支持.我正在试验 Haar 级联,它在具有四个内核的 Raspberry 2 上非常慢,但我的应用程序目前仅在一个内核上运行. 有什么想法吗? 解决方案 CascadedDetect 具有多核支持. 使用 WITH_TBB 或 WITH_OPENMP(或 OpenCV 支持的任何其他线程框架)标志重新编译 OpenCV 以启用它.
..
我正在尝试在运行 mako 内核的 Nexus 4 上的所有 CPU 上设置性能监视器用户模式启用寄存器. 现在我正在可加载模块中设置寄存器: void enable_registers(void* info){无符号整数集 = 1;/* 启用用户模式访问性能计数器*/asm volatile ("mcr p15, 0, %0, c9, c14, 0\n\t" : : "r" (set)
..
我有一个 Visual Studio 2008 C++ 项目,它支持在编译时使用多个 CPU/内核.在 VCPROJ 文件中,我看到:
..
我很困惑,但以下线程消除了我的疑虑: 多处理、多线程、超线程、多核 但它从硬件的角度解决了查询.我想知道这些硬件功能是如何映射到软件上的? 显而易见的一件事是 MultiProcessor(=Mutlicpu) 和 MultiCore 之间没有区别,除了在多核中所有 cpus 都驻留在一个芯片(die)上,而在 Multiprocessor 中,所有 cpus 都在自己的芯片上连接在
..
我在某处读到函数式编程适合利用计算中的多核趋势.我没有真正明白这个想法.和 lambda 演算和冯诺依曼架构有关系吗? 解决方案 函数式编程可以最小化或消除副作用,因此更适合分布式编程.即多核处理. 换句话说,可以在不同的内核上同时独立解决许多难题,而不必像在其他编程风格中一样担心一个操作对另一个操作的影响.
..
有谁知道如何让 cabal install 来利用并行性?我正在使用 GHC 进行编译,虽然我不知道 GHC 本身是否可以进行并行构建,但 cabal install 肯定可以并行运行多个编译,不是吗?至少对于不同的、独立的包? 有谁知道这是否可能以及如何去做? 解决方案 有一个 今年夏天的 Google Summer of Code 项目,以并行化 cabal-install.虽然
..
我对“火花"的概念感到困惑 它是 Haskell 中的一个线程吗?或者是产生新线程的动作? 谢谢大家: 总而言之,sparks 不是线程,而是更多的计算单元(用 C#/Java 术语来说是任务).所以这是实现任务并行的 Haskell 方式. 解决方案 Sparks 不是线程.forkIO 引入了 Haskell 线程(映射到较少的真实操作系统线程上).Sparks 为每
..
如果在给定的处理器上有多个内核可用,当 JVM 运行用户编写的 Java 代码时,它们会被自动使用吗?还是必须专门编写代码才能利用多核? 我的意思是,我们是否必须以任何不同的方式为 JVM 创建代码才能在运行时利用多个内核,例如通过程序员在用户代码中创建多个线程?并且说如果我们不在 java 代码中使用多线程,那么无论有多少个内核可用,JVM 都无法利用多个内核.可能是这种情况——但我不确定
..
是否有一些 map 的替代品来并行评估列表?我不需要它偷懒. 类似:pmap :: (a -> b) ->[a] ->[b] 让我 pmap 昂贵的函数 big_list 并让我的所有内核都达到 100%. 解决方案 是的,参见 并行包: ls `using` parList rdeepseq 将通过 rdeepseq 策略并行评估列表中的每个元素.请注意,如果您的元素太便宜而无
..
如果您今天从头开始编写一个新应用程序,并希望它扩展到明天可以投入的所有内核,您会选择哪种并行编程模型/系统/语言/库?为什么? 我对这些轴上的答案特别感兴趣: 程序员生产力/易用性(凡人能成功使用吗?) 目标应用领域(它(不)擅长什么问题?) 并发风格(它是否支持任务、管道、数据并行、消息...?)可维护性/面向未来(20 年后还会有人使用它吗?) 性能(它如何在何种硬件上扩展?
..
我正在 VirtualBoxed Ubuntu 11.4 上测试此 Go 代码 包主导入(“fmt";“时间";“大")var c chan *big.Intfunc sum(开始,停止,步骤int64){bigStop := big.NewInt(stop)bigStep := big.NewInt(step)bigSum := big.NewInt(0)对于 i := big.NewInt(
..
我知道现在大多数处理器都有两个或更多内核,多核编程风靡一时.是否有在 Java 中使用它的功能?我知道 Java 有一个 Thread 类,但我也知道这是在多核流行之前的很长一段时间.如果我可以在 Java 中使用多个内核,我会使用什么类/技术? 解决方案 Java 是否支持多核处理器/并行处理? 是的.它也是其他编程语言的平台,其中的实现增加了“真正的多线程"或“真正的线程"卖
..