hpc相关内容
我已经在Linux上开发了一个应用程序,它将受益于一个具有更多RAM的进程,而不是将单个进程卸载到具有较少RAM的较小计算节点上。因此,这是我在这里研究的一个选项。 我希望在主节点上运行一个进程,同时以某种方式使所有计算节点上的所有可用RAM对主节点显示为一大块可用RAM(就像单个系统一样)。 据我所知,这种单一系统映像(SSI)的使用现在称为分布式共享内存(DSM)。我一直在查看单个系统映像
..
我下载了CUDA 6.0 RC,并在我的应用程序中使用cudaMalLocManaged测试了新的统一内存。但我发现这个内核变慢了。 使用cudaMalloc后跟cudaMemcpy比使用cudaMallocManaged(~0.63)更快(~0.56)。这是预期的吗? 其中一位website声称cudaMallocManged是为了“更快地对Cuda内核进行原型设计”,所以我在想,从
..
我有一个非常简单的C函数,将两个整数数组成对相加: void add_arrays(int* a, int* b, int* target, int size) { for(int i=0; i
..
我一直致力于使用CUDA加快作业的处理时间。通常这将是相当简单的,但是我遇到了一个相当有趣的问题。我们正在使用Slurm来调度我们的作业,通过添加CUDA代码并启用编译,它将单个作业的时间减少了一半。查看GPU上的负载时会出现此问题。在启用CUDA之前,我们可以在每个节点上运行6个作业。但是,启用CUDA后,我们只能在每个GPU上的每个节点上运行2个作业。 起初,我以为我的提交脚本有问题,于
..
我正在尝试设置一个简单的Slurm集群。设置如下:两个虚拟机,一个将是主(同时也是一个辅助),我们称其为主(ubu18gpu-210),另一个将是另一个辅助(ubu18gpu-211)。 两台计算机的名称都是hostname -s命令的确切输出。 所有要求和Slurm的安装都已在两台计算机上完成。我甚至可以在主节点上运行作业。然而,我面临的问题是,工人无法连接到主机。 我在主节点上运行
..
我想在我们的群集节点上运行jupyter笔记本,而不是在登录节点。我可以在登录节点上远程运行jupyter笔记本,但这会不必要地减慢集群的使用速度。请指导我如何从本地桌面启动节点上的jupyter笔记本。我们的集群使用PBS作业提交方式,例如使用qsub、qstat、qdel等命令来管理我们在集群上的作业。 推荐答案 您可以通过在作业脚本中运行jupyter笔记本来完成此操作。可以将j
..
与 MPICH 相比,我试图用 OpenMP 来证明一个观点,我编写了以下示例来演示在 OpenMP 中实现一些高性能是多么容易. Gauss-Seidel 迭代被分成两个独立的运行,这样在每次扫描中,每个操作都可以按任何顺序执行,并且每个任务之间不应该有依赖关系.所以理论上每个处理器都不应该等待另一个进程执行任何类型的同步. 我遇到的问题是,与问题大小无关,我发现只有 2 个处理器的
..
我开发了一个高性能 Cholesky 分解例程,它应该在单个 CPU(没有超线程)上达到大约 10.5 GFLOPs 的峰值性能.但是在我测试它的性能时,有一些我不明白的现象.在我的实验中,我测量了增加矩阵维数 N(从 250 到 10000)的性能. 在我的算法中,我应用了缓存(调整了阻塞因子),并且在计算过程中始终以单位步幅访问数据,因此缓存性能最佳;消除了 TLB 和分页问题; 我有
..
我正在使用 NUMA 机器(SGI UV 1000)同时运行大量数值模拟,每个模拟都是使用 4 个内核的 OpenMP 作业.但是,运行大约 100 个以上的这些作业会导致显着的性能下降.我们关于为什么会发生这种情况的理论是,软件所需的共享库只加载一次到机器的全局内存中,然后系统会遇到通信瓶颈,因为所有进程都在单个节点上访问内存. 这是一个旧软件,没有任何修改范围,并且静态 make 选项不
..
我想利用来自多个节点的 CPU 内核来执行单个 R 脚本.每个节点包含 16 个内核,并通过 Slurm 工具分配给我. 到目前为止,我的代码如下所示: ncores 我在 UNIX shell 中通过以下命令执行它: mpirun -np 1 R --no-save another_file_path.Rout 这在单个节点上运行良好
..
我发现 openmp 不支持 while 循环(或者至少不太喜欢它们).而且也不喜欢“!="操作符. 我有这段代码. int count = 1;#pragma omp 并行用于而 ( fgets(buff, BUFF_SIZE, f) != NULL ){len = strlen(buff);int sequence_counter = segment_read(buff,len,cou
..
我正在尝试打包一个数组,并将其从一个进程发送到另一个进程.我仅在2个进程上执行此操作.我已经编写了以下代码. #include#include#include#include"mpi.h"int main(int argc,char * argv []){MPI_Init(& argc,& argv);int myrank,大小;
..
我最典型的用例是在多个目录(通常是R或Matlab)上运行单个脚本.我可以访问高性能计算环境(基于SLURM).到目前为止,从我的研究来看,我尚不清楚哪种方式可以更有效地利用可用的CPU/内核.我还想确保我不会不必要地占用系统资源,所以我想仔细检查以下两种方法中哪一种最合适. 方法1: 在脚本(MPI)中并行化代码. 将其包装在将脚本应用于所有目录的循环中. 将其作为SLURM脚本
..
我想在集群上运行作业.在不同的节点上有不同数量的CPU,我不知道哪个节点将分配给我.有什么适当的选项可以使作业在所有节点上创建与CPU一样多的任务? #!/bin/bash -l#SBATCH -p正常#SBATCH -N 4#SBATCH -t 96:00:00srun -n 128 ./运行 解决方案 实现目标的一个肮脏技巧是使用SLURM提供的环境变量.对于样本文件: #!/bin
..
我正在编写一个用于高速计算程序的结果输出模块. 我的计划是: 我的任务是以相对较快的速度将结果插入数据库(PostgreSQL). 我使用libpq的[从STDIN复制],这被告知是最快的方法. 该方法需要将结果转换为char *格式. 结果看起来像这样: 接下来的106年的每月现金流(总计为1272倍). 每个条目大约有14个现金流. 大约2800个实体(用于测试
..
我有一个用Fortran编写的基于MPI的程序,该程序在每个节点(2D时间序列的各个部分)上生成复杂数据的3D数组.我想使用并行I/O将这些数组写入单个文件,可以在python中相对容易地打开该文件以进行进一步的分析/可视化.理想情况下,我希望该解决方案能够提高内存效率(即避免创建中间临时数组). 使用NetCDF,我设法调整了子例程可以实现3D实数数组.但是,对于复杂数组,我遇到了绊脚石.
..
我正在将作业提交给condor,但它说未安装tensorboard,这是错误的,因为我在一个交互式作业中遇到了,所以它被安装了. 我如何让秃鹰使用我当前的活动conda环境? 我的秃鹰提交脚本: ######################实验脚本#简单的HTCondor提交描述文件##参考:https://gitlab.engr.illinois.edu/Vision/vis
..
我在CUDA中有2个相同的内核,它们报告了50%的理论占用率,并且可以同时运行.但是,在不同的流中调用它们将显示顺序执行. 每个内核调用的网格和块尺寸如下: Grid(3,568,620)块(256,1,1)每个线程有50个寄存器. 这导致每个SM线程太多,每个块太多寄存器. 我接下来的优化工作应该集中在减少内核使用的寄存器数量上吗? 或者将网格划分为许多较小的网格是否有
..
我想用下面的C代码进行块矩阵矩阵乘法.在这种方法中,将大小为BLOCK_SIZE的块加载到最快的缓存中,以减少计算过程中的内存流量. void bMMikj(double ** A,double ** B,double ** C,int m,int n,int p,int BLOCK_SIZE){int i,j,jj,k,kk;寄存器double jjTempMin = 0.0,kkTempM
..
我正在尝试使用SIMD(在ARM CPU上)优化代码,并想知道其算术强度(触发器/字节,AI)和FLOPS. 为了计算AI和FLOPS,我必须计算浮点运算(FLOP)的数量.但是,我找不到FLOP的任何精确定义. 当然, mul , add , sub , div 显然是FLOP,但是移动操作,随机操作如何?(例如 _mm_shuffle_ps ),设置操作(例如 _mm_set1_ps
..