问题标签 [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.

0 投票
1 回答
1239 浏览

stream - STREAM 和 GUPS(单 CPU)基准测试能否在 NUMA 机器中使用非本地内存

我想从 HPCC、STREAM 和 GUPS 运行一些测试。

他们将测试内存带宽、延迟和吞吐量(在随机访问方面)。

我可以在启用内存交错的 NUMA 节点上启动单 CPU 测试 STREAM 或单 CPU GUPS 吗?(HPCC - 高性能计算挑战赛的规则是否允许?)

使用非本地内存可以增加 GUPS 的结果,因为它将增加 2 或 4 倍的内存库数量,可用于随机访问。(GUPS 通常受到非理想内存子系统和缓慢的内存库打开/关闭的限制。随着更多的银行,它可以对一个银行进行更新,而其他银行正在打开/关闭。)

谢谢。

更新:

(您也不能重新排序程序进行的内存访问)。

但是编译器可以重新排序循环嵌套吗?例如 hpcc/RandomAccess.c

这里的主循环是for (i=0; i<NUPDATE/128; i++) {,嵌套循环是for (j=0; j<128; j++) {。使用“循环交换”优化,编译器可以将此代码转换为

可以这样做,因为这个循环嵌套是完美的循环嵌套。HPCC的规则是否禁止这种优化?

0 投票
4 回答
9657 浏览

c++ - C++ programming for clusters and HPC

I need to write a scientific application in C++ doing a lot of computations and using a lot of memory. I have part of the job but due to high requirements in terms of resources I was thinking to start moving to OpenMPI.

Before doing that I have a simple curiosity: If I understood the principle of OpenMPI correctly it is the developer that has the task of splitting the jobs over different nodes calling SEND and RECEIVE based on node available at that time.

Do you know if it does exist some library or OS or whatever that has this capability letting my code reamain as it is now? Basically something that connects all computers and let share as one their memory and CPU?

I am a bit confused because of the huge volume of material available on the topic. Should I look at cloud computing? or Distributed Shared Memory?

0 投票
14 回答
2201 浏览

arrays - 如何操作*大量*数据

我有以下问题。我需要存储大量信息(约 32 GB)并能够尽可能快地操作它。我想知道最好的方法是什么(编程语言+操作系统+任何你认为重要的组合)。

我使用的信息结构是双精度浮点数(8 字节)的 4D 数组(NxNxNxN)。现在我的解决方案是将 4D 数组分割成 2D 数组,并将它们存储在我计算机 HDD 中的单独文件中。这真的很慢,而且对数据的操作令人难以忍受,所以这根本不是解决方案!

我正在考虑搬到我国家的超级计算设施并将所有信息存储在 RAM 中,但我不确定如何实现应用程序以利用它(我不是专业程序员,所以任何书/reference 对我有很大帮助)。

我正在考虑的另一种解决方案是购买具有大量 RAM 的专用服务器,但我不确定这是否能解决问题。所以现在我的无知并没有让我选择最好的方式进行。

如果你处于这种情况,你会怎么做?我对任何想法都持开放态度。

提前致谢!


编辑:抱歉没有提供足够的信息,我会尝试更具体。

我正在存储一个离散的 4D 数学函数。我想要执行的操作包括数组的转置(更改 b[i,j,k,l] = a[j,i,k,l] 等)、数组乘法等。

由于这是对提议的实验的模拟,因此这些操作将只应用一次。一旦获得结果,就无需对数据执行更多操作。


编辑(2):

我还希望将来能够存储更多信息,因此该解决方案应该具有某种可扩展性。当前的 32 GB 目标是因为我想要 N=256 点的数组,但是如果我可以使用 N=512 会更好(这意味着 512 GB 来存储它!!)。

0 投票
2 回答
2771 浏览

c - 使用许多互斥锁

我有一个大树结构,多个线程同时在其上工作。理想情况下,我想为每个单元格设置一个单独的互斥锁。

我查看了pthread_mutex_tin的定义,bits/pthreadtypes.h它相当短,所以在我的情况下内存使用应该不是问题。

pthread_mutex_t但是,当只为 8 个线程使用许多(比如说几千个)不同的 s 时,是否有任何性能损失?

0 投票
4 回答
879 浏览

java - 高性能计算(主要在 Java 上)

除了使用目标机器拥有的多个内核之外,我还在寻找某种使用 GPU 的数字运算能力(也许是 Java?)的方法。我将致力于实现(目前)A* 算法,但在未来我希望用某种遗传算法代替它。我看过Project Fortress,但是当我在 JavaFX 中构建我的 GUI 时,我不希望离 JVM 太远。

当然,如果没有可行的解决方案,我将迁移到最容易实施的解决方案。

0 投票
2 回答
1852 浏览

c# - BCP 任务在执行时挂起

我们有一个 HPC 节点,可以在其中运行我们的一些任务。我的 .net 项目中有一个任务,它在 HPC 节点上启动 bcp 实用程序,并且我运行的查询输出达到 9 Mb。

当 HPC 节点运行这个任务时,查询的输出被转储到一个文件中,然后在它转储大约 5mb 的数据后,它突然停止转储任何更多的数据,这种情况一直都在发生。(请注意,这不是任何数据问题,因为它不会每次都在特定行上崩溃)。这可能重要也可能不重要,但我将数据转储到具有足够权限集的不同服务器中。

我已经直接在 hpc 节点和其他 comps 上运行具有相同查询的命令,它给出了正确的输出。

我正在运行 bcp 命令,如下所示:

var processInfo = new ProcessStartInfo("bcp.exe", argument) { RedirectStandardOutput = true, RedirectStandardError = true, CreateNoWindow = true, UseShellExecute = false };

因此,我的代码实际上会等待每个 bcp 任务运行,因为我多次调用它。

仅供参考,再次提醒您,它仅在我的 o/p 超过一定字节数(在这种情况下约为 5mb)时才会失败。

任何帮助深表感谢。

PS:我想添加 bcp 实用程序安装在所有 hpc 节点上

0 投票
1 回答
532 浏览

.net - Microsoft HPC 任务的错误处理策略

我有一个 .NET 应用程序,它将生成要在 MS HPC 集群上运行的任务。我们没有使用任何花哨的 DryadLINQ 东西,只是在集群上远程执行一个 exe 并通过命令行传递参数。该任务将是 .NET 代码,我希望调用应用程序在 HPC 发生错误时获取实际的异常对象。

完成此任务的最佳通用技术是什么?

如果您需要更多信息,请告诉我。

谢谢!

0 投票
4 回答
5503 浏览

c - 程序何时会受到内存带宽的限制?

我想知道我正在使用的需要大量内存的程序是否受到内存带宽的限制。

你预计这会在什么时候发生?你有没有在现实生活中发生过这种情况?

我找到了几篇讨论这个问题的文章,包括:

第一个链接有点旧,但建议您需要对每个浮点变量执行少于 1-40 次浮点运算才能看到这种效果(如果我错了,请纠正我)。

如何测量给定程序正在使用的内存带宽以及如何测量我的系统可以提供的(峰值)带宽?

我不想在这里讨论任何复杂的缓存问题。我只对CPU和内存之间的通信感兴趣。

0 投票
2 回答
2967 浏览

.net - .net 4.0 任务并行库与 MPI.NET

.net 4.0 任务并行库是否会取代 MPI.NET 进行高性能计算?

MPI.NET 在这里http://www.osl.iu.edu/research/mpi.net/svn/是用于 Microsoft .NET 环境的消息传递接口 (MPI) 的高性能、易于使用的实现. MPI 是编写在分布式内存系统(例如计算集群)上运行的并行程序的事实标准。

.NET 4 TPL 说:“任务并行库 (TPL) 是 .NET Framework 版本 4 中 System.Threading 和 System.Threading.Tasks 命名空间中的一组公共类型和 API。TPL 的目的是使通过简化向应用程序添加并行性和并发性的过程来提高开发人员的工作效率。TPL 动态扩展并发度以最有效地使用所有可用的处理器。此外,TPL 处理工作的分区,线程的调度关于线程池、取消支持、状态管理和其他低级细节。通过使用 TPL,您可以最大限度地提高代码的性能,同时专注于您的程序旨在完成的工作。

我的目标是构建一个可以在 Windows HPC 2008 上运行的应用程序 ……走哪条路?

0 投票
8 回答
3642 浏览

windows - 请推荐 Microsoft HPC 的替代方案

我们的目标是在集群上实现一个分布式系统,该系统将执行具有大量存储 I/O 的基于图像的资源消耗计算,具有以下特点:

  1. 有一个专用的管理器计算机节点和多达 100 个计算节点。集群必须易于扩展。
  2. 它是围绕工作任务概念构建的。一个作业可能有 1 到 100,000 个任务。
  3. 由用户在管理节点上发起的作业会导致在计算节点上创建任务。
  4. 任务动态创建其他任务。
  5. 一些任务可能会运行几分钟,而另一些可能需要几个小时。
  6. 任务根据依赖层次结构运行,可以动态更新。
  7. 该作业可能会暂停并稍后恢复。
  8. 每个任务都需要特定的资源,如 CPU(内核)、内存和本地硬盘空间。经理在安排任务时应该意识到这一点。
  9. 这些任务将他们的进度和结果告诉经理。
  10. 经理知道任务是活动的还是挂起的。

我们发现 Windows HPC Server 2008 (HPCS) R2 在概念上非常接近我们的需求。但是,有一些关键的缺点:

  1. 随着任务数量的增加,任务的创建速度呈指数级增长。提交超过数千个任务在时间上是难以忍受的。
  2. 任务无法将其进度报告给经理,只有作业可以。
  3. 在任务运行期间没有与任务通信,这使得无法检查任务是否正在运行或可能需要重新启动。
  4. HPCS 只知道节点、CPU 内核和内存作为资源单元。我们不能引入我们自己的资源单元(如可用磁盘空间、自定义硬件设备等)。

这是我的问题:是否有人知道和/或有分布式计算框架的经验可以帮助我们?我们正在使用 Windows。