问题标签 [hpc]
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.
appfabric - App Fabric 能够缓存文件还是仅是数据库查询?
我有一个驻留在我们每个节点上的函数。该功能需要访问文件夹路径以访问文件(不是数据库)。目前,我同步每个节点上的文件夹,以避免访问单个共享驱动器。我可以避免此同步步骤并在文件夹上使用 App Fabric 缓存吗?还是缓存仅用于正式的数据库查询?任何帮助,将不胜感激。
configuration - Hadoop节点&核心分配策略
我有一个有 50 个节点的集群,每个节点有 8 个计算核心。如果我有一份计划强加 200 个减速器的工作,那么什么是好的计算资源分配策略可以获得更好的性能?
我的意思是在每个节点上分配 50 个节点和 4 个内核,还是为每个节点分配 25 个节点和 8 个内核更好?在什么情况下哪个更好?
c# - 单线程程序的 C# 事件订阅限制
我正在尝试监视在单线程程序中并行运行的许多 HPC 作业的状态,我正在订阅 OnJobState 引发的事件,并且当监视少至三个作业时,事件状态更改将丢失并且作业被卡住运行.
我假设每个作业都需要一个线程来捕获所有事件,但我找不到有关单线程程序中事件下标限制的任何信息。
我原以为 .net 平台会将这一切都排队,但似乎并非如此。
cuda - 高性能计算术语:什么是 GF/s?
我正在阅读Dobb 博士关于 CUDA 的文章
在我的系统中,全局内存带宽略高于 60 GB/s。在您考虑到此带宽必须为 128 个硬件线程提供服务之前,这非常好——每个线程都可以提供大量的浮点运算。由于 32 位浮点值占用四 (4) 个字节,因此此硬件上的全局内存带宽受限应用程序将只能提供大约 15 GF/s - 或仅占可用性能能力的一小部分。
问题:GF/s 表示每秒 Giga flops?
gpu - NVIDIA Quadro 6000 和 Tesla C2075 显卡有什么区别?
我正在研究 GPU 计算,但我无法弄清楚NVIDIA Quadro 6000 和 NVIDIA Tesla C2075 显卡之间的技术/性能差异是什么。它们都有 6GB 的 RAM 和相同数量的计算核心。那么有什么区别呢?我想用卡做 CUDA 计算。
编辑: 拜托,如果 Nvidia 说卡 X 对气候计算有好处,卡 y 对地震处理很好,那么这只不过是 PR。没有用于气候计算的图形卡。卡适用于单精度或双精度计算,或者适用于 FFT 等。这正是我的问题:技术差异是什么以及我应该期望哪种计算在一张卡上比另一张卡上获得更快的结果。
performance - 提高 Fortran 代码性能的提示和技巧
作为我博士学位的一部分。研究方面,我正在开发大气和海洋环流的数值模型。这些涉及在约 10^6 个网格点的数量级上以约 10^4 个时间步长对 PDE 系统进行数值求解。因此,在数十个 CPU 上以 MPI 运行时,典型的模型模拟需要数小时到数天才能完成。自然,尽可能提高模型效率很重要,同时确保结果字节与字节相同。
虽然我对我的 Fortran 编程感到很自在,并且知道一些使代码更高效的技巧,但我觉得仍有改进的空间,以及我不知道的技巧。
目前,我确保我使用尽可能少的除法,并尽量不使用文字常量(我很早就被教导要这样做,例如在实际计算中使用 half=0.5 而不是 0.5),使用尽可能少的超越函数尽可能等
还有哪些其他性能敏感因素?目前,我想知道一些:
1)数学运算的顺序重要吗?例如,如果我有:
d会根据乘法的顺序以不同的效率进行评估吗?如今,这必须是特定于编译器的,但有直接的答案吗?我注意到 d 根据顺序(精度限制)获得(略微)不同的值,但这会影响效率吗?
2) 将大量(例如几十个)数组作为参数传递给子程序,而不是从子程序中的模块访问这些数组?
3) Fortran 95 构造(FORALL 和 WHERE)与 DO 和 IF?我知道这些在 90 年代很重要,当时代码向量化是一件大事,但是现在现代编译器能够向量化显式 DO 循环有什么不同吗?(我在工作中使用 PGI、Intel 和 IBM 编译器)
4)将数字提高到整数幂与乘法?例如:
或者
我被教导在可能的情况下总是使用后者。这会影响效率和/或精度吗?(可能也依赖于编译器)
请讨论和/或添加您知道的有关提高 Fortran 代码效率的任何技巧和提示。还有什么?如果您知道上述每个编译器与此问题相关的具体内容,请也包括在内。
补充:请注意,我本身没有任何瓶颈或性能问题。我在问是否有任何一般规则来优化操作意义上的代码。
谢谢!
c++ - MPI 如何发送和接收未知数据类型
我们用 C++ 开发了一个算法库,它允许用户实现自己的数据类型,以便在各个算法之间共享数据(也由用户实现)。这很好用,但我们希望在库级别提供并行化。各个算法应该在分布式内存机器的不同节点上并行执行。
我们决定使用 MPI 进行并行化,因为它可以用于分布式和共享内存机器而无需更改代码。不幸的是,我们现在正在解决如何在节点之间分配用户实现的数据类型的问题。我们有以下问题:
- 我们不知道数据可能有多大,它甚至可能会随着运行而变化。
- 我们不知道数据结构中的数据是什么。
- 数据量可以很大到1GB(这个用MPI应该没问题)
- 用户在实现并行执行的数据类型或算法时不应该看到任何差异(对于算法实际上没有问题)
是否有可能使用 MPI 在节点之间共享这些数据,或者是否有可用的方法,这可能更适合此类问题。我们希望有一个至少可以在共享内存机器上工作的解决方案,但是我们希望有一个在共享和分布式内存机器上无需更改代码即可工作的解决方案。
java - HPC + Oracle 连接 = 灾难的秘诀?
我在 HPC(高性能计算)集群上运行 Java 应用程序。该应用程序通过与 Oracle 11.2.0 数据库建立 JDBC 瘦连接。鉴于这是在集群上,因此会同时建立和维护大量连接(尽管与数据库的实际交互相对较少)。潜在的最大并发连接数将是 4500(尽管它永远不会达到那么高)。
该应用程序工作正常,直到第 125 个并行连接失败并出现以下错误。此错误消息在后续连接尝试中仍然存在:
我是否认为这与数据库允许的连接数限制有关?或者这与数据库上的负载有关吗?
有没有人知道我可以如何解决这个问题,以便我能够并行建立更多数量的连接?
提前谢谢了。
cluster-computing - CentOS 是否支持 Condor?
我计划使用 Condor 作为中间件来制作 HPC 集群。CentOS 是作为操作系统的一个不错的选择吗?我的意思是它是否支持 condor?是否有任何教程对安装过程有帮助?
问候,
c - GCC SSE 代码优化
这篇文章与我几天前发布的另一篇文章密切相关。这一次,我编写了一个简单的代码,它只是添加了一对元素数组,将结果乘以另一个数组中的值并将其存储在第四个数组中,所有变量都是浮点双精度类型。
我制作了该代码的两个版本:一个带有 SSE 指令,使用调用,另一个没有它们,然后我使用 gcc 和 -O0 优化级别编译它们。我把它们写在下面:
当使用 -O0 编译它们时,gcc 使用 XMM/MMX 寄存器和 SSE 指令,如果没有特别给出 -mno-sse(和其他)选项。我检查了为第二个代码生成的汇编代码,我注意到它使用了movsd、addedd和mulsd指令。所以它使用 SSE 指令,但只使用那些使用寄存器最低部分的指令,如果我没记错的话。正如预期的那样,为第一个 C 代码生成的汇编代码使用了addp和mulpd指令,尽管生成了相当大的汇编代码。
无论如何,据我所知,第一个代码应该从 SIMD 范式中获得更好的收益,因为每次迭代都会计算两个结果值。尽管如此,第二个代码的执行速度比第一个代码快 25%。我还用单精度值进行了测试并得到了类似的结果。这是什么原因?