java - Jit Compiler 是否了解 NUMA 架构?
问题描述
目前,我一直在 Windows Google Compute Engine VM 上测试我的高性能计算并行算法。但是,Google 虚拟机(可能还有大多数虚拟机)不能正确提供物理主机的“真正”NUMA 架构。(例如,如果物理主机有 2 个 CPU 插槽、8 个 CPU 核心/插槽和每个 CPU 核心 2 个超线程,则虚拟机会简单而错误地报告 - 根据我的侦探工作 - 有 32 个 CPU 核心来自单插槽....它还会报告每个 CPU 内核的 L1/L2 缓存的“奇怪”结果,因为它会“双重计数”等)
无论如何,关键问题是:JIT 编译器是否利用了所有这些 NUMA 架构信息,特别是在使用 jdk8 并行流期货时,例如“收集器”?(例如,尝试在收集器协议中首先对芯片上彼此“接近”的线程执行“组合”步骤,然后再处理“远”的线程(例如在不同的 CPU 插槽上)彼此远离。(此外,基于真正的 L2 缓存大小等,基于真正的 L2 缓存大小等以某种方式提取数据会更有意义。)我假设这是JIT 与 C++ 等静态编译语言相比的主要优势,如果我是对的,那么当我们在“非 VM”计算机上测试我们的代码时,
解决方案
推荐阅读
- r - 将字符格式的时间列转换为R中的可操作时间格式
- python - 如何从 Python 中的字符串中删除 NUL 字符?
- git - 在 Github 上用另一个替换主分支
- qml - 使用 QML Stackview 滑动手势
- ruby-on-rails - Rails:从后台工作人员访问属性(Stripe charge_id)
- rust - 如何让 impl Trait 使用适当的生命周期来可变引用具有另一个生命周期的值?
- ios - AppDelegate 多个通知
- visual-studio - 如何从“开始”菜单中删除由 Visual Studio 创建的 Windows 10 临时应用程序
- pyspark - Pyspark 窗口函数
- python - 如何在 django 中格式化数字并尊重本地化