亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mpjrun.java

?? MPI for java for Distributed Programming
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
/*
 The MIT License

 Copyright (c) 2005 - 2007
   1. Distributed Systems Group, University of Portsmouth (2005)
   2. Aamir Shafi (2005 - 2007)
   3. Bryan Carpenter (2005 - 2007)
   4. Mark Baker (2005 - 2007)

 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
 "Software"), to deal in the Software without restriction, including
 without limitation the rights to use, copy, modify, merge, publish,
 distribute, sublicense, and/or sell copies of the Software, and to
 permit persons to whom the Software is furnished to do so, subject to
 the following conditions:

 The above copyright notice and this permission notice shall be included
 in all copies or substantial portions of the Software.

 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
 NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
 THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/*
 * File         : MPJRun.java 
 * Author       : Aamir Shafi, Bryan Carpenter
 * Created      : Sun Dec 12 12:22:15 BST 2004
 * Revision     : $Revision: 1.35 $
 * Updated      : $Date: 2006/10/20 17:24:47 $
 */


package runtime.starter;

import java.nio.channels.*;
import java.nio.*;
import java.net.*;
import java.io.*;
import java.util.*;

import org.mortbay.http.HttpServer;
import org.mortbay.http.SocketListener;
import org.mortbay.http.HttpListener;
import org.mortbay.http.HttpContext;
import org.mortbay.http.handler.ResourceHandler;

import org.apache.log4j.Logger ;
import org.apache.log4j.PropertyConfigurator ;
import org.apache.log4j.PatternLayout ;
import org.apache.log4j.FileAppender ;
import org.apache.log4j.Level ;
import org.apache.log4j.DailyRollingFileAppender ;
import org.apache.log4j.spi.LoggerRepository ;

import runtime.MPJRuntimeException ;

public class MPJRun {

  private static int MPJ_SERVER_PORT = 20000 ; 
  private static int mxBoardNum = 0 ; 
  private static int D_SER_PORT = 10000 ;
  int S_PORT = 15000; 
  String machinesFile = "machines" ; 
  ArrayList<String> jvmArgs = new ArrayList<String>() ; 
  ArrayList<String> appArgs = new ArrayList<String>() ; 
  String[] jArgs = null ;  
  String[] aArgs = null ;
  private int psl = 128*1024 ;  //128K 
  static Logger logger = null ; 
  FileOutputStream cfos = null;
  File CONF_FILE = null;
  private volatile boolean wait = true;
  private Vector<SocketChannel> peerChannels;
  private InetAddress localaddr = null;
  private Selector selector = null;
  private volatile boolean selectorFlag = true;
  private String LOG_FILE = null;
  private String hostName = null;
  private String hostIP = null;
  private Thread selectorThreadStarter = null;
  private Vector machineVector = new Vector();
  int nprocs = 1;
  String spmdClass = null;
  String mpjURL = null;
  String deviceName = "niodev";
  String applicationArgs = "default_app_arg" ;
  String mpjHomeDir = null;
  byte[] urlArray = null;
  Hashtable procsPerMachineTable = new Hashtable();
  int endCount = 0; 
  int streamEndedCount = 0 ;
  String wdir;
  String jarName = null;
  String className = null ; 
  String codeBase = null;
  String mpjCodeBase = null ; 
  HttpServer server = null;
  HttpServer mpjServer = null; 
  ByteBuffer buffer = ByteBuffer.allocate(1000);
  String loader = "useRemoteLoader";

  private static final boolean DEBUG = false ; 

  /**
   * Every thing is being inside this constructor :-)
   */
  public MPJRun(String args[]) throws Exception {
		  
    Map<String,String> map = System.getenv() ;
	    mpjHomeDir = map.get("MPJ_HOME");

    createLogger(args) ; 

    if(DEBUG && logger.isDebugEnabled()) {
      logger.info(" --MPJRun invoked--"); 
      logger.info(" adding shutdown hook thread"); 
    }

	    
    if(DEBUG && logger.isDebugEnabled()) {
      logger.info("processInput called ..."); 
    }

    processInput(args);
    //System.exit(0) ; 
    readMachineFile();
    machinesSanityCheck() ;
	    
    CONF_FILE = new File( codeBase+"/mpjdev.conf");
    mpjCodeBase = mpjHomeDir+"/lib"; 
/*
    if(CONF_FILE.exists()) {
      throw new RuntimeException("Another mpjrun module is already running "+
		      "on this machine"); 
    }
*/    
	    
    CONF_FILE.deleteOnExit() ;

    if(DEBUG && logger.isDebugEnabled()) { 
      logger.debug("CONF_FILE_PATH <"+CONF_FILE.getAbsolutePath()+">");
    }
    assignTasks();

    try {

      localaddr = InetAddress.getLocalHost();
      hostName = localaddr.getHostName();
      hostIP = localaddr.getHostAddress(); 

      if(DEBUG && logger.isDebugEnabled()) {
	logger.debug("Address: " + localaddr);
	logger.debug("Name :" + hostName);
      }

    }
    catch (UnknownHostException unkhe) {
      throw new MPJRuntimeException(unkhe);  
    }


    if(jarName != null) {
      spmdClass = "http://"+hostIP+":"+S_PORT+"/"+jarName;
    }
    else {
      spmdClass = "http://"+hostIP+":"+S_PORT+"/";
    }

    mpjURL = "http://"+hostIP+":"+(S_PORT+1)+"/mpj.jar";
	    
    if(DEBUG && logger.isDebugEnabled()) {
      logger.debug("spmdClass<"+spmdClass+">");
    }

    urlArray = spmdClass.getBytes();

    peerChannels = new Vector<SocketChannel>();

    selector = Selector.open();

    clientSocketInit();

    startHttpServer();

    selectorThreadStarter = new Thread(selectorThread);

    if(DEBUG && logger.isDebugEnabled()) {
      logger.debug("Starting the selector thread ");
    }

    selectorThreadStarter.start();

    /* 
     * wait till this client has connected to all daemons
     */
    Wait();

    buffer.clear();

    for (int j = 0; j < peerChannels.size(); j++) {

      SocketChannel socketChannel = peerChannels.get(j);
      
      if(DEBUG && logger.isDebugEnabled()) { 
	logger.debug("procsPerMachineTable " + procsPerMachineTable);
      }
	      
      String hName = socketChannel.socket().getInetAddress().getHostName();

      /* 
       * It can't be a good assumption that procsPerMachineTable contains
       * hostNames as keys ..can be it an IP????
       */
      int nProcesses = ((Integer) procsPerMachineTable.get(hName)).intValue();

      pack(nProcesses); 

      if(DEBUG && logger.isDebugEnabled()) { 
	logger.debug("Sending to " + socketChannel);
      }

      int w = 0 ; 
      while(buffer.hasRemaining()) {
	if((w += socketChannel.write(buffer)) == -1) {
	  //throw an exception ...
	} 
      }
      if(DEBUG && logger.isDebugEnabled()) { 
	logger.debug("Wrote bytes-->"+w+"to process"+j);
      }

      buffer.clear();

    }

    if(DEBUG && logger.isDebugEnabled()) { 
      logger.debug("procsPerMachineTable " + procsPerMachineTable);
    }

    addShutdownHook();

    /* 
     * waiting to get the answer from the daemons that the job has finished.
     */ 
    Wait();

    logger.debug("Calling the finish method now");

    this.finish();

  }
  private void startHttpServer() throws Exception {

    server = new HttpServer();
    SocketListener listener = new SocketListener();
    listener.setPort(S_PORT);
    server.addListener(listener);
    HttpContext context = new HttpContext();
    context.setContextPath("/");
    context.setResourceBase(codeBase);
    context.addHandler(new ResourceHandler());
    server.addContext(context);
    server.start();
    
    mpjServer = new HttpServer();
    SocketListener listener2 = new SocketListener();
    listener2.setPort(S_PORT+1);
    mpjServer.addListener(listener2);
    HttpContext context2 = new HttpContext();
    context2.setContextPath("/");
    context2.setResourceBase(mpjCodeBase);
    context2.addHandler(new ResourceHandler());
    mpjServer.addContext(context2);
    mpjServer.start();
  }
	  
  /* 
   * 1. URL [http://holly:port/codebase/test.jar]
   * 2. NP  [# of processes]
   * 3. args to JVM
   * 4. device to use 
   * 5. application arguments ..
   * 6. GO_FOR_IT_SIGNAL 
   */ 
  private void pack(int nProcesses) {
    if(DEBUG && logger.isDebugEnabled()) {
      logger.debug("buffer (initial)" + buffer);
    }
    buffer.put("url-".getBytes());

    if(DEBUG && logger.isDebugEnabled()) {
      logger.debug("buffer (after putting url-) " + buffer);
    }
    buffer.putInt(urlArray.length);

    if(DEBUG && logger.isDebugEnabled()) {
      logger.debug("buffer urlArray.length)" + buffer);
    }

    buffer.put(urlArray, 0, urlArray.length);

    if(DEBUG && logger.isDebugEnabled()) {
      logger.debug("buffer urlArray itself " + buffer);
    }

    buffer.put("num-".getBytes());
	 
    if(DEBUG && logger.isDebugEnabled()) {
      logger.debug("buffer " + buffer);
    }

    buffer.putInt(4);

    if(DEBUG && logger.isDebugEnabled()) {
      logger.debug("buffer(after writing 4) " + buffer);
      logger.debug("nProcesses " + nProcesses);
    }

    buffer.putInt(nProcesses);

    if(DEBUG && logger.isDebugEnabled()) {
      logger.debug("buffer(after nProcesses) " + buffer);
    }

    buffer.put("arg-".getBytes());
    buffer.putInt(jArgs.length); 
    for(int j=0 ; j<jArgs.length ; j++) {
      buffer.putInt(jArgs[j].getBytes().length);
      buffer.put(jArgs[j].getBytes(), 0, jArgs[j].getBytes().length);
    }

    if(wdir != null) {
      buffer.put("wdr-".getBytes());
      buffer.putInt(wdir.getBytes().length);
      buffer.put(wdir.getBytes(), 0, wdir.getBytes().length); 
    }
    
    if(className != null) {
      buffer.put("cls-".getBytes());
      buffer.putInt(className.getBytes().length);
      buffer.put(className.getBytes(), 0, className.getBytes().length); 
    }

    buffer.put("mul-".getBytes()); //mpj URL ..
    buffer.putInt(mpjURL.getBytes().length);
    buffer.put(mpjURL.getBytes(), 0, 
		    mpjURL.getBytes().length); 
    
    buffer.put("dev-".getBytes());
    buffer.putInt(deviceName.getBytes().length);
    buffer.put(deviceName.getBytes(), 0, deviceName.getBytes().length); 

    buffer.put("ldr-".getBytes());
    buffer.putInt(loader.getBytes().length);
    buffer.put(loader.getBytes(), 0, loader.getBytes().length); 
	    
    buffer.put("app-".getBytes());
    buffer.putInt(aArgs.length); 

    for(int j=0 ; j<aArgs.length ; j++) {
      buffer.putInt(aArgs[j].getBytes().length);
      buffer.put(aArgs[j].getBytes(), 0, aArgs[j].getBytes().length);
    }

    buffer.put("*GO*".getBytes(), 0, "*GO*".getBytes().length);

    buffer.flip();
  }

  private void createLogger(String[] args) throws MPJRuntimeException {
  
    if(logger == null) {

      DailyRollingFileAppender fileAppender = null ;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91网站在线播放| 国产日韩欧美不卡在线| 91亚洲精品乱码久久久久久蜜桃 | 久久精品久久99精品久久| 91猫先生在线| 91在线视频官网| 免费在线看成人av| 国产精品素人视频| 欧美日韩精品福利| 国产一区二区视频在线播放| 亚洲人成伊人成综合网小说| 欧美日韩dvd在线观看| 欧美影院一区二区三区| 国产九色sp调教91| 日韩精彩视频在线观看| 国产精品美女久久久久久久| 国产精品第一页第二页第三页| 欧美日产国产精品| 日韩欧美自拍偷拍| 欧美日韩国产一级| 日韩一区二区免费高清| 国产欧美日韩三区| 一区二区三区国产精华| 国产精品伦理一区二区| 夜夜揉揉日日人人青青一国产精品| 亚洲va欧美va人人爽午夜| 国产精品你懂的在线欣赏| 亚洲视频狠狠干| 国产精品女主播在线观看| 亚洲一区在线视频观看| 亚洲四区在线观看| 日本亚洲欧美天堂免费| 亚洲国产精品久久久男人的天堂| 亚洲欧美日韩人成在线播放| 日产精品久久久久久久性色| 国产精品一区二区黑丝| 欧美日韩日日夜夜| 欧美电影一区二区三区| 欧美三级电影网| 久久久99精品免费观看| 国产亚洲欧美激情| 天堂成人国产精品一区| 岛国一区二区三区| 成人高清伦理免费影院在线观看| 国产成人av电影在线观看| 亚洲女人****多毛耸耸8| 美女尤物国产一区| 国内精品伊人久久久久影院对白| 狠狠色综合日日| 欧美伊人久久久久久久久影院| 久久人人超碰精品| 久久精品男人天堂av| 亚洲18色成人| 91麻豆福利精品推荐| 欧美videofree性高清杂交| 精品理论电影在线观看| 亚洲va中文字幕| 在线精品观看国产| 91精品麻豆日日躁夜夜躁| 精品国产一二三| 亚洲欧洲日产国产综合网| 亚洲婷婷在线视频| 福利一区在线观看| 精品精品欲导航| 免费在线看成人av| 欧美丰满一区二区免费视频| 一区二区三区美女| 在线亚洲精品福利网址导航| 国产精品久久久99| fc2成人免费人成在线观看播放| 在线日韩av片| 一区二区三区四区在线免费观看| 国产99久久久国产精品潘金| 国产日韩欧美在线一区| 国产精品自拍网站| 久久日一线二线三线suv| 亚洲免费av高清| 色综合网站在线| 欧美电视剧免费全集观看| 亚洲国产精品v| 亚洲v精品v日韩v欧美v专区| 欧美日韩精品一区二区三区蜜桃| 亚洲成人福利片| 欧美日韩不卡一区二区| 日韩av在线播放中文字幕| 欧美一级欧美三级在线观看| 成人免费小视频| 色婷婷综合激情| 国产欧美日韩精品在线| 成人av集中营| 夜夜嗨av一区二区三区网页 | 日韩一级二级三级精品视频| 日韩电影在线免费| 精品少妇一区二区三区视频免付费 | 7777精品伊人久久久大香线蕉经典版下载 | 久久新电视剧免费观看| 国产成人精品免费| 亚洲男人的天堂av| 欧美精品vⅰdeose4hd| 日本午夜一本久久久综合| 精品sm捆绑视频| 一本大道久久a久久综合| 午夜视黄欧洲亚洲| 91色porny在线视频| 午夜久久久久久| 久久久久久久性| 97久久超碰国产精品| 亚瑟在线精品视频| 久久久亚洲欧洲日产国码αv| 波多野结衣在线一区| 亚洲一二三级电影| 久久九九全国免费| 欧美色图第一页| 国产乱妇无码大片在线观看| 一区二区三区精品在线观看| 精品欧美一区二区久久| 91麻豆自制传媒国产之光| 久久精品国产一区二区三区免费看| 亚洲国产精品ⅴa在线观看| 精品视频1区2区| 成人h版在线观看| 美女性感视频久久| 一区二区三区不卡在线观看 | 国产精品久久久久三级| 欧美放荡的少妇| 99久久精品国产一区| 国产在线播放一区二区三区| 亚洲主播在线观看| 欧美国产成人精品| 欧美电视剧在线看免费| 欧美日韩久久一区| 97精品国产露脸对白| 国产一区二区视频在线| 日本在线不卡视频| 亚洲一区二区三区四区五区黄| 久久奇米777| 精品日产卡一卡二卡麻豆| 欧美男女性生活在线直播观看| 一本久久精品一区二区| 国产iv一区二区三区| 狠狠久久亚洲欧美| 精油按摩中文字幕久久| 久久综合九色综合欧美98| 欧美高清性hdvideosex| 欧洲av在线精品| 色屁屁一区二区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 日韩欧美一卡二卡| 91精品国产手机| 欧美一区二区三区在| 欧美绝品在线观看成人午夜影视| 在线观看视频一区二区| 色婷婷国产精品综合在线观看| 99久久99久久免费精品蜜臀| a在线播放不卡| 972aa.com艺术欧美| 一本色道久久加勒比精品| 91免费观看在线| 欧美亚洲综合一区| 欧美日韩国产一二三| 91精品国产91久久久久久一区二区 | 精品国产一区二区三区四区四| 91麻豆精品国产91久久久更新时间 | 91精品婷婷国产综合久久性色| 欧美丝袜丝交足nylons图片| 欧美日韩免费观看一区三区| 欧美美女直播网站| 日韩一本二本av| 国产欧美日本一区视频| 国产精品毛片大码女人| 自拍偷拍亚洲激情| 国产高清不卡一区| 91丨国产丨九色丨pron| 欧美三级在线视频| 欧美刺激脚交jootjob| 欧美高清在线一区| 亚洲精品午夜久久久| 久久久国产一区二区三区四区小说| 国产日产精品1区| 亚洲黄色片在线观看| 免费久久精品视频| 成人免费的视频| 777久久久精品| 日本一区二区视频在线观看| 一区二区三区鲁丝不卡| 蜜臀va亚洲va欧美va天堂| 成人久久18免费网站麻豆| 欧洲精品在线观看| 久久亚洲精精品中文字幕早川悠里 | 久久精品男人天堂av| 有码一区二区三区| 看电影不卡的网站| www.欧美日韩国产在线| 6080国产精品一区二区| 国产精品久久三| 久久福利资源站| 欧美亚洲国产一区二区三区| 国产亚洲综合在线| 热久久国产精品| 欧美午夜在线一二页|