问题标签 [supercomputers]

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 回答
1522 浏览

python - 超级计算机:在超级计算机中运行的程序的简单示例

我正在学习如何使用超级计算机来充分利用资源。假设我有一个 python 脚本,它将创建一个具有给定随机数的文本文件。

我的文件.py

这将在本地机器上只创建一个文本文件。
有什么方法可以使用该程序的多个实例,使用多个节点并获得多个输出?

我在 C 程序中得到了一个 mpiexec 的模板,看起来像这样,但是我找不到任何 python 程序的模板。

注意: 在使用多个内核的单个节点上,我可以编写如下 bash 脚本:

但我想利用不同的节点
所需输出: 输出/out1.txt、out2.txt、out3.txt 等

一些相关链接如下:
https://www.osc.edu/sites/osc.edu/files/documentation/Batch%20Training%20-%2020150312%20-%20OSC.pdf
https://www.osc.edu /~kmanalo/多线程提交

0 投票
1 回答
5835 浏览

linux - 运行数十小时后,远程集群上出现奇怪的“陈旧文件句柄,errno=116”

我现在正在远程集群上运行一个名为 CMAQ 的模拟代码。我首先连续运行基准测试以查看软件的性能。但是,该作业总是运行数十个小时,然后崩溃并出现以下“ Stale file handle, errno=116 ”错误消息:

PBS 作业 ID:91487.master.cluster 作业名称:cmaq_cctm_benchmark_serial.sh 执行主机:hs012/0 处理您的作业时发生错误,请参见下文。发布作业文件处理错误;job 91487.master.cluster on host hs012/0Unknown resource type REJHOST=hs012.cluster MSG=invalid home directory '/home/shangxin' 指定,errno=116 (旧文件句柄)

这很奇怪,因为我从不修改主目录,而这个“/home/shangxin/”肯定是我代码所在的永久目录......

此外,在标准输出 .log 文件中,作业失败时始终显示以下消息:

总线错误 100247.930u 34.292s 27:59:02.42 99.5% 0+0k 16480+0io 2pf+0w

这个消息具体是什么意思?

我曾经认为这个错误是由于作业消耗了 RAM,这是一个内存溢出问题。但是,当我在运行时登录计算节点使用“free -m”和“htop”命令检查内存使用情况时,我注意到RAM和交换内存占用都没有超过10%,处于非常低的水平,所以内存使用不是问题。

因为我使用“tee”将作业运行记录到一个日志文件中,这个文件最多可以包含几万行,大小超过1MB。为了测试这个标准输出是否会压倒集群系统,我运行了另一个相同的作业,但没有标准输出日志文件。数十小时后,新作业仍然失败,并出现相同的“Stale file handle,errno=116”错误,因此标准输出也不是原因。

我还尝试与多个内核并行运行该作业,运行数十小时后仍然失败并出现相同的错误。

我可以确保我正在使用的代码没有问题,因为它可以在其他集群上成功完成。该集群的管理员正在调查该问题,但目前还无法找出具体原因。

有没有人遇到过这个奇怪的错误?我们应该怎么做才能解决集群上的这个问题?任何帮助表示赞赏!

0 投票
1 回答
413 浏览

r - 如何在 R 中保存大型模拟的输出?(多节点,安全访问)

我正在为一个研究项目进行大型模拟——模拟 1,000 个足球赛季并分析结果。由于季节将分布在多个节点上,我需要一种简单的方法将我的输出数据保存到一个文件(或多个文件)中以便以后访问。由于我无法控制节点何时完成,我不能让它们都尝试同时写入同一个文件,但如果它们都保存到不同的文件,我需要一种方法来聚合所有之后的数据很容易。想法?

0 投票
0 回答
287 浏览

linux - 如何在 mpich 集群中运行正常程序?

我正在用我安装了 ubuntu 的计算机制作一个集群网络(一种超级计算机,但“超级快”),以运行GIMPS Project的 mprime 。我使用了本教程。但是,我不知道如何在我的集群中运行 mprime。

mpi exec -n 4 -f /home/user1/mpi/hosts ./mprime

此代码有效,但我不确定 mprime 是否会使用每个节点并通过执行此代码快速工作。也许它只是使用一个节点,不是吗?因为看起来 mprime 不是为 mpich 制作的。

请告诉我是否有一些解决方案。

0 投票
1 回答
239 浏览

matlab - 同时循环遍历目录中的所有文件

我在一个循环中有一个循环外部循环只是遍历目录中的每个文件并运行内部循环

我可以选择多个文件并同时在这些文件上运行内部循环吗

我正在使用 32 核 100gb 内存服务器。而且我目前只使用 1% 的 CPU 通过 1 x 1

我想通过同时运行多个文件来加快速度,能够充分利用我的超级计算机并减少时间

0 投票
2 回答
2093 浏览

python - 使用 qsub 提交作业时,如何包含本地安装的 python 包?

我在一个超级计算集群上有一个帐户,我使用例如“pip install --user keras”安装了一些软件包。

使用 qsub 向队列提交作业时,我尝试通过设置“export PYTHONPATH=$PYTHONPATH:[$HOME]/.local/lib/python2.7/site-packages/keras”来确保系统可以看到我的本地包“在脚本中。

但是,生成的日志文件仍然抱怨没有名为 keras 的包。如何确保系统找到我的包裹?

0 投票
0 回答
383 浏览

performance - 构建屋顶线模型

我正在尝试为正在运行模拟的超级计算机中的节点构建屋顶线模型。该节点具有 2 个 Intel Xeon E5-2650 v2 (Ivy Bridge) 8 核 2.6 GHz 处理器(每个节点 16 个内核),总共 64GB RAM(每个 4GB)。Intel Xeon E5-2650 的最大内存带宽在此处显示为 59.7 GB/s。

实现的 GFLOPS = 最大内存带宽 x 算术强度。

最大 GFLOPS = 核数 x 时钟频率(以 GHz 为单位) x ops/cycle。

我的代码的算术强度为 1/3,并使用双精度浮点。

以下是我计算不同类型程序的峰值 GFLOP 的计算方法:

  • 顺序程序(单核)无矢量化:

    • 1x2.6x1(我假设没有矢量化,我们只能实现 1 个操作/周期?)= 2.6 GFLOPs
  • 带有矢量化 (SSE) 的顺序程序(单核):

    • 1x2.6x8 = 20.8 GFLOP
  • 具有矢量化 (SSE) 功能的一台 Xeon 上的所有内核:

    • 8x2.6x8 = 166.4 GFLOP
  • 所有内核都带有矢量化 (SSE) 的两个 Xeon:

    • 2x 8x2.6x8 = 332.8 GFLOP

在上面显示的不同类型的程序之间,程序可用的内存带宽如何变化?我知道 1 Xeon E5-2650 的最大内存带宽是 59.7 GB/s,但是这可以在单核上实现吗?使用 2 个 Xeon E2650 会变成 119.4 GB/s 吗?

所获得的 GFLOP(使用峰值带宽 x 算术强度)也会是:

  • 不带矢量化的顺序程序:

    • 59.7 * 1/3 = 19.9 GFLOPs,但是因为我们的屋顶线是 2.6 GFLOPs,我们被限制为 2.6 GFLOPs?
  • 带有矢量化的顺序程序:

    • 59.7 * 1/3 = 19.9 GFLOP。这是可以实现的,因为我们的屋顶线是 20.8 GFLOPs。
  • 一个带有矢量化的 Xeon(使用所有 8 个内核):

    • 59.7 * 1/3 = 19.9 GFLOP。我对此表示怀疑,因为我们的并行程序肯定能够比顺序程序产生更多的内存请求,而且顺序程序肯定不会使内存系统饱和?
  • 两个具有矢量化功能的 Xeon(共 16 个内核):

    • 119.4 * 1/3 = 39.8 GFLOP。

我觉得所达到的 GFLOP 有问题,我是不是在某个地方犯了错误?

0 投票
0 回答
1032 浏览

server - fortran:重定位被截断以适应,我无法在服务器上创建大数组

我在 fortran 中为更复杂的程序编写了一个简单的子程序。我需要读取一个包含 3 列数字(X_halo、Y_halo、Z_halo)的文件,并将 3 列数据输入到 3 个数组中。在这个子程序中,我将数据写入一个文件,看看我是否可以真正读取它。我有一个 5000000(500 万)行的文件。

问题是在我的 Mac 上它可以工作,但我必须在给我错误的服务器(超级计算机)上启动它:

但是,如果我将行数减少到 5000,它就可以工作。这怎么可能?有没有办法创建一个同样适用于该服务器的 500 万行数组?

# 更新:

使用 ALLOCATE 子程序单独工作(如果用作程序),但如果我将它作为子程序插入程序中(它也单独工作),我又遇到了同样的问题。

是不是所有的代码都太重了?我该如何解决?

0 投票
0 回答
40 浏览

parallel-processing - 哪些寻址范式被用于高性能计算?

用于高性能计算的“活动全局地址空间 ( AGAS )”和“分区全局地址空间 ( PGAS )”有什么区别?

这不是关于实施的具体问题,所以我认为这些信息就足够了。

例如:(
基于软件)HPX c++ 运行时系统使用 AGAS,Chapel、UPC

并行编程语言使用 PGAS。

0 投票
2 回答
2392 浏览

qsub - 为什么 Torque qsub 不创建输出文件?

我尝试使用命令通过 Torque PBS 在集群上启动任务

文件 a.sh 包含单个字符串:

在命令 qsub 之后,我制作 qstat 命令,给出下一个输出:

5 秒后,命令 qstat 返回空输出(队列中没有作业)。命令

给出输出:版本:2.5.13

命令

输出:/usr/bin/qsub

问题是没有创建文件 a.txt(来自命令 qsub -o a.txt a.sh)!在终端仅返回作业 id,没有任何错误。命令

具有相同的行为。我该如何解决?qsub 有错误的日志文件在哪里?

如果我使用命令

然后输出我可以在文件夹中找到的文件

在 node36 上(在 ssh 登录后)。输出文件包含字符串“node36”,错误文件为空。为什么我的文件“未送达”?