MPI java多线程
我的计算机是24核的工作站,想进行并行计算。现在有两种选择:java的多线程和MPICH+mpiJava的MPI编程。请问二者有什么区别呢?哪个会更快一点?我搜了一下,好像说MPI是多进程的,这是不是说MPI能更好的利用多个CPU?假如我用了20个线程的话,java多线程编程能不能把计算任务分配到20个CPU上啊?
如果bai是单节点的,利用多线程的就du可以了。mpi一般zhi使用在多dao节点上的,就zhuan是好几个工作站一起计shu算的时候,采用mpi实现。
多线程操作系统是自动分配cpu的,可以实现一台电脑上的分配。
mpi的通讯在以电脑上的速度肯定比不上多线程的,因为线程的通讯可以基于共享内存的。
java并行计算 JAVA的MPI---MPJ
mpirun -np部分决定vasp程序实际使用多少个节点并行
1.MPI全称是message passing interface,即信息传递接口,是用于跨节点通讯的基础软件环境。它提供让相关进程之间进行通信,同步等操作的API,可以说是并行计算居家出游必备的基础库。
一个 MPI 程序包含若干个进程。每个 mpi 进程都运行一份相同的代码,进程的行为由通讯域(communication world)和该通讯域下的 id(rank id)所决定。
MPI的编程方式,是“一处代码,多处执行”。编写过多线程的人应该能够理解,就是同样的代码,不同的进程执行不同的路径。
2.它是一个库,不是一门语言。可以被fortran,c,c++等调用。MPI允许静态任务调度,显示并行提供了良好的性能和移植性,用MPI编写的程序可直接在多核集群上运行。在集群系统中,集群的各节点之间可以采用 MPI 编程模型进行程序设计,每个节点都有自己的内存,可以对本地的指令和数据直接进行访问,各节点之间通过互联网络进行消息传递,这样设计具有很好的可移植性,完备的异步通信功能,较强的可扩展性等优点。
3.MPI常用命令
对于登录集群计算而言,我们只需要掌握两种mpi运行指令即可,它们分别是:mpirun、mpiexec。
简而言之mpirun和mpiexec均是MPI程序运行命令:
mpirun:MPI程序快速执行命令,运行前不必运行mpdboot开启守护进程。mpiexec:MPI程序运行命令,运行前必须开启mpd守护进程。
守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务。很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭。另一些只在需要的时候才启动,完成任务后就自动结束。
简单来说,在服务器配置良好的情况下,绝大多数情况不需要考虑选项的配置,基本语句如下:
mpirun -n 20 vasp_std //20核心并行vasp_std程序,vasp_std需要加入环境变量
mpiexec.hydra -n 20 vasp_std //20核心并行vasp_std程序,vasp_std需要加入环境变量
此时节点和核心的分配完全由PBS系统进行分配,跨节点运行时也会自动进行核心和节点的匹配
另外,在实际操作过程中,我发现部分同学对于PBS和mpirun -np的作用可能不太理解,在这里想简单解释如下:
- PBS是作业分配系统,通过.pbs脚本像PBS作业管理软件申请相应的核心数量和节点数量。
- 但要注意,这并不意味着通过分配的作业会完全按照申请的资源运行。下面看一个小小的例子:
1 |
#PBS -l nodes=2:ppn=20 |
这意味着#PBS -l命令部分决定问集群申请多少计算资源。
MPI java多线程的更多相关文章
- 40个Java多线程问题总结
前言 Java多线程分类中写了21篇多线程的文章,21篇文章的内容很多,个人认为,学习,内容越多.越杂的知识,越需要进行深刻的总结,这样才能记忆深刻,将知识变成自己的.这篇文章主要是对多线程的问题进行 ...
- Java多线程基础知识篇
这篇是Java多线程基本用法的一个总结. 本篇文章会从一下几个方面来说明Java多线程的基本用法: 如何使用多线程 如何得到多线程的一些信息 如何停止线程 如何暂停线程 线程的一些其他用法 所有的代码 ...
- Java多线程系列--“JUC锁”03之 公平锁(一)
概要 本章对“公平锁”的获取锁机制进行介绍(本文的公平锁指的是互斥锁的公平锁),内容包括:基本概念ReentrantLock数据结构参考代码获取公平锁(基于JDK1.7.0_40)一. tryAcqu ...
- Java多线程系列--“JUC锁”04之 公平锁(二)
概要 前面一章,我们学习了“公平锁”获取锁的详细流程:这里,我们再来看看“公平锁”释放锁的过程.内容包括:参考代码释放公平锁(基于JDK1.7.0_40) “公平锁”的获取过程请参考“Java多线程系 ...
- Java多线程--让主线程等待子线程执行完毕
使用Java多线程编程时经常遇到主线程需要等待子线程执行完成以后才能继续执行,那么接下来介绍一种简单的方式使主线程等待. java.util.concurrent.CountDownLatch 使用c ...
- Java多线程 2 线程的生命周期和状态控制
一.线程的生命周期 线程状态转换图: 1.新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态.处于新生状态的线程有自己的内存空间,通过调用start方法进入就 ...
- java 多线程 1 线程 进程
Java多线程(一).多线程的基本概念和使用 2012-09-10 16:06 5108人阅读 评论(0) 收藏 举报 分类: javaSE综合知识点(14) 版权声明:本文为博主原创文章,未经博 ...
- 一起阅读《Java多线程编程核心技术》
目录 第一章 Java多线程技能 (待续...)
- 第一章 Java多线程技能
1.初步了解"进程"."线程"."多线程" 说到多线程,大多都会联系到"进程"和"线程".那么这两者 ...
- java从基础知识(十)java多线程(下)
首先介绍可见性.原子性.有序性.重排序这几个概念 原子性:即一个操作或多个操作要么全部执行并且执行的过程不会被任何因素打断,要么都不执行. 可见性:一个线程对共享变量值的修改,能够及时地被其它线程看到 ...
随机推荐
- vivo 互联网研发效能关键技术与实践
作者: vivo 互联网研发效能团队 Yang Peng.Huang Fengjin 本文为2024年 vivo 开发者大会互联网技术专场分享内容之一,在公众号对话框回复[2024VDC]获取 202 ...
- C#之依赖注入DI(DependencyInjection)
依赖注入实际上是一种设计模式,它可以有效降低模块之间的耦合度. 基本思路: 创建ServiceCollection对象 用ServiceCollection对象进行注册服务 用ServiceColle ...
- Mac Adobe Photoshop 2025 安装与激活保姆级教程
为什么选择Photoshop? 作为全球顶尖的图像处理软件,Adobe Photoshop凭借其强大的功能和生态兼容性,成为设计师.摄影师.创意工作者的必备工具.本文以最新版Photoshop 202 ...
- 企业级MediaWiki知识库系统搭建部署指南(CentOS 8)
## 一.高级环境准备 ### 1. 系统优化与安全加固 ```bash # 系统更新与内核优化 sudo dnf update -y --security sudo dnf install kern ...
- 代码随想录第六天 | 哈希表part02
454.四数相加II 建议:本题是 使用map 巧妙解决的问题,好好体会一下 哈希法 如何提高程序执行效率,降低时间复杂度,当然使用哈希法 会提高空间复杂度,但一般来说我们都是舍空间 换时间, 工业开 ...
- Spring Boot 启动优化实践
作者:vivo 互联网服务器团队- Liu Di 本文系统性分析并优化了一个Spring Boot项目启动耗时高达 280 秒的问题.通过识别瓶颈.优化分库分表加载逻辑.异步初始化耗时任务等手段,最终 ...
- 数栈xAI:轻量化、专业化、模块化,四大功能革新 SQL 开发体验
在这个数据如潮的时代,SQL 已远远超越了简单的查询语言范畴,它已成为数据分析和决策制定的基石,成为撬动企业智慧决策的关键杠杆.SQL 的编写和执行效率直接关系到数据处理的速度和分析结果的深度,对企业 ...
- 上线啦丨FlinkX1.12 Beta版正式在Github开源
万众期待的FlinkX1.12的Beta版今天正式在Github社区开源上线啦!这是FlinkX技术团队潜心打造的新版本的FlinkX,设计文档和使用文档已在社区中推送,大家可以随时下载查阅,喜欢的同 ...
- Eplan教程:主数据创建
从今天开始,Eplan团队将带着大家一起,从项目早期的规划报价设计开始,经历原理图设计.PLC设计.盘柜三维设计.线束三维设计,直至输出供生产所需的各类报表. 该系列共分为几个部分 1.设计主数据-部 ...
- 在x86的window安装arm64虚拟机
安装qemu msys2:官网 按照下图步骤下载文件并安装 打开下面终端 根据:qemu官网 在终端执行安装命令:pacman -S mingw-w64-ucrt-x86_64-qemu 下载系统镜像 ...