julia - 如何选择工作站以获得最佳性能
问题描述
我正在寻找一些关于如何选择工作站的建议。我的预算大约是5000美元。
我使用 Julia 模拟结构经济模型。我的代码通常使用大数组(通过它我使用 for 循环进行迭代),涉及大型 Monte Carlo 模拟和最小化算法。我尽可能地并行化。
据我了解,拥有一台具有尽可能多的内核和大量 RAM 的机器对我来说是有益的。但是,我不确定如何平衡这两者。什么是权衡?另外,核心的质量重要吗?
除了 RAM 和内核/CPU 之外,我还有什么需要考虑的吗?
任何帮助表示赞赏。
谢谢!
解决方案
这取决于您的算法是否可并行化,如果可以,它是否受内存带宽或计算能力的限制。大多数算法都有带宽限制。大型阵列听起来也是 GPU-) 可并行化的,前提是阵列组件彼此独立。这里最大的性能为 CPU 提供了尽可能多的内存通道。普通台式机 CPU 通常有 2 通道内存,AMD Threadripper 有 4 通道,Threadripper Pro 有 8 通道。因此,具有 8x8GB /8x16GB 内存的 ~24 核 Threadripper Pro 可能适合您的预算。
如果你并行化很多,也许考虑使用 GPU。Julia 还支持 GPU 并行化。当运行非常可并行化的代码时,单个 GPU 的功能可能与 2000 个 CPU 内核一样强大。加速确实是可观的。GPU 的内存带宽也比 CPU 大几个数量级。主要症结在于 GPU 的内存非常有限且不可扩展,而拥有大量内存的 GPU 往往会变得异常昂贵。如果 24GB 足以满足您的工作负载,请选择 RTX3090。如果你在 GPU 上并行化大部分代码,CPU 几乎没有那么重要,你可以选择普通的桌面 CPU,例如 16 核 AMD Ryzen 5950X 和 4x16GB(2 通道),并完全坚持使用消费/游戏玩家硬件,功能更强大,花费更少。
推荐阅读
- javascript - 如何命名 JSON 对象并将其写入 .json 文件?
- javascript - 角度编程导航 - 为什么路由器不在提供者数组中
- java - 无法在 java 中使用 docx4j WordprocessingMLPackage 创建包
- flutter - Flutter/Dart - 为什么我的 iconButton 上的 onPressed 会起作用
- java - 如果存在则计算地图
- python - python中的页眉详细页脚报告,如ibm中的outfil
- db2 - 摄取实用程序不会在整数类型的列中插入 NULL 值
- c - 线程意外等待不确定是什么原因造成的
- c# - 如何避免这段代码中的重复语句?
- django - 为什么我使用 Nginx 总是收到 403 错误?