java mpj,Win7下搭建JAVA並行開發環境MPJ Express(PART3)

2023-11-23 15:50

本文主要是介绍java mpj,Win7下搭建JAVA並行開發環境MPJ Express(PART3),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在前面的兩個PART中,我們分別搭建了並行開發環境,並小試牛刀實踐了簡單的並行開發。

http://blog.csdn.net/baimafujinji/article/details/45195159

http://blog.csdn.net/baimafujinji/article/details/45195285

當然在這個過程中,出現這樣或那樣的問題是在所難免的,這一部分我們就來討論一下其中可能會遇到的問題。

問題1:當我們搭建好開發環境后,我們需要試用一下mpjdaemon批處理命令,此時可能遇到的一個問題是: Port is not available,如下圖所示。

5cb5adad16f33412fbd725fd2aea375c.jpe

問題在於端口不可用。我們根據提示找到配置文件mpjexpress.conf所在的文件夾,然后用記事本把它打開,如下所示。可見,默認情況下port.1=10000,port.2=10001。

1453a9c6d0c0ff10733a00991d5051cc.jpe

此時,我們只需對端口進行調整,例如修改為下面這種結果(當然,應該保證8888和8889並沒有被占用)

8f1e75fd6c3e7278c489c5b53cfdd8a7.jpe

修改完成后保存文件,問題即得到解決。

問題2:注意到我們把解壓后的MPJ Express文件存於路徑“D:\mpj-v0_43”下,並相應的將環境變量MPJ_HOME賦值為D:\mpj-v0_43。如果我們將文件存於路徑“D:\Program Files\mpj-v0_43”下,並相應的修改環境變量賦值,將會有什么變化?

3aa4e97b464c25bb256549598079a1c1.jpe

這似乎是一個看起來完全不是問題的問題,但是一旦我們這樣做了,當再使用mpjdaemon批處理命令時,就會遇到下面這種情況。

f6423082cbd61bcfd7e7324c29e9ac4c.jpe

結果顯示報錯了!

Error: Unable to access jarfile D:\Program

系統沒有辦法訪問相應的jar文件。但是為什么?這是因為Program Files這個文件夾的名字不合法。這種文件夾的名字在Windows中當然沒有任何問題,對於我們日常的大多數應用開發而言這也不會成為一個問題。但是在MPJ Express中,文件夾的名字中間是不能包含有“空格”的。我們都知道,在控制台中輸入一條指令時,空格通常是用來間隔操作符與操作數的,或者可以認為空格也是有意義的,因此MPJ Express中的批處理命令在解析一個帶有空格的路徑名的時候就會產生混亂。這就是問題所在。所以只要我們把MPJ Express文件的存放路徑稍作調整即可消除此類問題。

此外,在命令行中查看當前環境變量設置情況的一個簡單方法是使用echo指令,例如

4f621e2d4fe55658b81cbe61376a6a09.jpe

問題3:上一個問題除了會發生在控制台操作界面上以外,在Eclipse中也會出現。回想在PART2中,我們設置VM arguments參數時是這樣寫的

-jar D:/mpj-v0_43/lib/starter.jar

-np 4

可見我們使用了一個絕對路徑!而更多的時候我們都習慣於寫相對路徑,此時用戶需要在菜單欄中選擇"Window",然后在下拉菜單中選擇"Preferences",如下所示。

064da1c71ade58c5537ddd8ddca42df7.jpe

然后在從左側的列表中選擇“String Substitution”,並新建一個“變量替換”,如下所示。

3fab24c2cae2360144e25adfbe303e25.jpe

完成上述步驟后,我們就可以使用形如下面這種情況的相對路徑了。

-jar ${MPJ_HOME}/lib/starter.jar

e2d9c156298a6a8b07a8c51174935ca0.jpe

這里我們需要注意,MPJ_HOME的值仍然不能等於一個有空格的路徑,否則就會出現下面這個錯誤,原理與問題2相同,這里不再贅述。

784112a9ad0245d1ba836fab21b8bf9d.jpe

問題4:最后我們討論一下在命令下編譯運行並行程序的方法。

首先編輯下列代碼並將其存入一個名為HelloWorld.java的文件中。

import mpi.*;

public class HelloWorld{

public static void main(String[] args) throws Exception

{

MPI.Init(args);

int me = MPI.COMM_WORLD.Rank();

int size = MPI.COMM_WORLD.Size();

System.out.println ("Hi from " + me + " of " + size + "\n");

MPI.Finalize();

}

}

編譯指令示例: javac -cp .;%MPJ_HOME%/lib/mpj.jar HelloWorld.java

執行指令示例: mpjrun.bat -np 4 HelloWorld  a //其中a是一個任意指定的參數

執行結果,如下所示。

bdfa24fa29390433f8c29c8b28bb268e.jpe

上面這種情況是執行並行計算的第一種場景,即在多核配置下執行MPJ Express 程序。

我們通過mpjrun.bat -np 后面的數字來指定核的數量。

另外一種場景是在集群(Cluster)配置下執行MPJ Express 程序。

集群配置: 如果開發人員期望在分布式內存平台(包括集群和計算機網絡)上執行並行JAVA程序,那么他們就會采樣這種配置場景。

對於這種集群配置,一共有四種選項,如下:

1) niodev - 使用 Java NIO Sockets

2) mxdev - 使用 Myrinet eXpress (MX) library for Myrinet networks

3) hybdev - 針對多核處理的集群

4) native - 使用一個 native MPI library (curretly only tested under MS-MPI for Windows)

具體使用時寫一個名為"machines"的文件,並在其中指定用於並發執行的所有主機名或IP地址。

執行方法

對於 niodev, hybdev and mxdev

1) 開啟守護: mpjdaemon.bat -boot

- 你將需要在每一個開啟守護的機器上手動地執行該命令。

2) 執行指令示例: mpjrun.bat -np 4 -dev niodev HelloWorld

-- 其中 -dev 里面的 device可以是 niodev, hybdev 或 mxdev

3) 終止守護指令: mpjdaemon.bat -halt

對於 native

1) 編譯 JNI wrapper library(具體編譯方法請參見MPJ Express的相關幫助文檔)

2) 執行指令示例: mpjrun.bat -np 4 -dev native HelloWorld

全文完。

这篇关于java mpj,Win7下搭建JAVA並行開發環境MPJ Express(PART3)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/419027

相关文章

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Spring 中的切面与事务结合使用完整示例

《Spring中的切面与事务结合使用完整示例》本文给大家介绍Spring中的切面与事务结合使用完整示例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录 一、前置知识:Spring AOP 与 事务的关系 事务本质上就是一个“切面”二、核心组件三、完

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J