问题标签 [multicore]
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.
java - 多处理器编程课程反馈
我计划参加为期一周的关于这个主题的课程。我主要参与 Java 项目,并且对 C 和 C++ 也有相当的了解。而且,我有兴趣了解有关并发编程的更多信息,并希望获得有关本课程的反馈。有人读过这本书或发现这些概念与当代编程相关吗?
有关课程的更多信息:http: //www.amazon.com/Art-Multiprocessor-Programming-Maurice-Herlihy/dp/0123705916/
c# - 在多个线程上划分工作负载
我想知道是否有人知道一篇描述将工作负载划分为多个线程的好文章?最好它是为 C# 编写的,但它确实是我所追求的概念,所以如果它是为不同的、相似的语言编写的,这不是问题。
我有一个问题,我必须将大量计算分成几个线程,然后在一次迭代完成后对生成的数据求和(所以我需要知道所有线程都已完成),然后开始新的迭代,提供所有具有在最后一次迭代中生成的数据的线程(数据将在每次迭代结束之前被修改)。
我希望这是有道理的,并且是可能的。无论哪种方式,我都会很感激一些关于如何解决将大量数据划分为多个线程的问题的建议(这样我就可以使用多个处理器的内核)。
谢谢您的回答!
linux - 如何从用户空间应用程序(Linux、C)中获取 CPU 内核编号?
大概有一个库或简单的 asm blob 可以让我知道我正在执行的当前 CPU 的数量。
amazon-ec2 - 关于 Amazon EC2 的几个问题
亚马逊根据虚拟核心和 EC2 计算单元来衡量他们的 CPU 分配。EC2 计算单元定义为:
分配给特定实例的 CPU 量以这些 EC2 计算单元表示。我们使用多个基准和测试来管理 EC2 计算单元性能的一致性和可预测性。一个 EC2 计算单元可提供相当于 1.0-1.2 GHz 2007 Opteron 或 2007 Xeon 处理器的 CPU 容量。这也相当于我们原始文档中提到的 2006 年初 1.7 GHz Xeon 处理器。
我的问题是,假设我有一个“大型实例”,它带有“4 个 EC2 计算单元(2 个虚拟核心,每个核心有 2 个 EC2 计算单元)”。这是否意味着我在逻辑上基本上有 4 个核心?我想生成 4 个 CPU 绑定线程吗?还是计算单元只是功率的衡量标准,而我有 2 个内核?
另外,考虑到服务器的可扩展性,将单个机器的计算能力提高一倍并将数据库和服务器托管在同一个机器上会更好吗?还是我应该有 2 个单独的、较弱的盒子?
multithreading - 哪个操作系统上的线程编程足以利用多个内核?
我想使用我的多线程编程技能(我有技能),但我意识到这还不够。如果操作系统没有意识到这种潜力,我的线程可能仍会竞争相同的内核。我可以在英特尔至强架构上使用哪些操作系统/编译器/库组合来线程处理内核?
java - 有没有办法提高 Java 编译器的多核/多处理器性能?
我的同事注意到,当 javac 编译时,它只使用一个内核。有没有像 Java 的 gcc 中的 -j 命令一样的东西,可以让我们跨内核或处理器分配编译器工作负载?如果不是,您认为这将成为可能吗,或者由于 Java 的设计而存在某种基本限制?
环境是带有 Sun J2SE 1.6.0.11 jdk 的 Linux。
multicore - 你关心多核吗?
这是不可否认的:多核计算机将继续存在。
这也是如此:高效的多核编程非常困难。这不仅仅是理解 pthread 的情况。
这是有争议的:“街上的开发商”需要关注这些发展。
您在多大程度上担心必须扩展您的多核技能组合?您正在编写的软件是否适合并行化,如果是,您是否正在做任何事情来教育自己(如果您还不知道这些技术)?或者您是否相信操作系统会处理大部分工作,语言运行时会尽其所能,您的应用程序会愉快地坐在一个内核上,让其他人做他们的事情?
.net - 对 int[] 数组的并发读取访问:安全吗?快吗?
在四核机器上,我正在考虑 C#/.NET 算法的并行化,该算法涉及让多个线程同时读取小的 int[] 数组。到目前为止,它似乎工作得很好,但我不确定在哪里指定数组上的并发读取在 .NET 中是线程安全的。任何指针?
然后,我也想知道这种方法是否真的有效?在某些情况下,您最好为每个线程实际复制输入数据,这样就没有任何并发读取,并且每个数组(也许?)都有机会在关联 CPU 附近缓存?
关于多核 CPU 的最佳实践有什么想法吗?
c++ - 我可以在多核 x86 CPU 上强制缓存一致性吗?
另一周,我写了一个小线程类和一个单向消息管道来允许线程之间的通信(显然,每个线程有两个管道,用于双向通信)。在我的 Athlon 64 X2 上一切正常,但我想知道如果两个线程都在查看同一个变量并且每个内核上该变量的本地缓存值不同步,我是否会遇到任何问题。
我知道volatile关键字会强制变量从内存中刷新,但是多核 x86 处理器有没有办法强制所有内核的缓存同步?这是我需要担心的事情吗,或者轻量级锁定机制的volatile和正确使用(我使用 _InterlockedExchange 设置我的 volatile 管道变量)会处理我想为多核 x86 CPU 编写“无锁”代码的所有情况?
我已经知道并使用了关键部分、互斥体、事件等。我主要想知道是否有 x86 内在函数我不知道哪种力或可用于强制缓存一致性。