org.glite.wms.client/src/services/jobsubmit.cpp:                        // MPICH ==================================================
org.glite.wms.client/src/services/jobsubmit.cpp:                        if (  jobAd->hasAttribute(JDL::JOBTYPE,JDL_JOBTYPE_MPICH)){
org.glite.wms.client/src/services/jobsubmit.cpp:                                // MpiCh Job:
org.glite.wms.helper/src/jobadapter/JobAdapter.cpp:  /* lrms type is mandatory for the mpich job */
org.glite.wms.helper/src/jobadapter/JobAdapter.cpp:  if (ljobtype == "mpich") {
org.glite.wms.helper/src/jobadapter/JobAdapter.cpp:    // node number is mandatory for the mpich job 
org.glite.ce.cream/src/org/glite/ce/cream/connector/blah/StreamBlahpConnector.java:        if(job.isMpich()) {
org.glite.ce.cream/src/org/glite/ce/cream/connector/pbs/PBSConnector.java:       if(job.isMpich()) {
org.glite.ce.cream-api-java/src/org/glite/ce/creamapij/Job.java:        public boolean isMpich() {
org.glite.ce.cream-api-java/src/org/glite/ce/creamapij/Job.java:                return jobType != null && jobType.equals(Jdl.JOBTYPE_MPICH);
org.glite.ce.cream-api-java/src/org/glite/ce/creamapij/JobWrapper.java:        if( nodes==0 && job.isMpich() )
org.glite.ce.cream-api-java/src/org/glite/ce/creamapij/JobWrapper.java:            throw new IllegalArgumentException("Missing node number for mpich job");
org.glite.ce.cream-api-java/src/org/glite/ce/creamapij/JobWrapper.java:        if( job.isMpich() ){
org.glite.ce.cream-cli/src/util/jdlHelper.cpp:    if( !boost::iequals(jtype.at(0), "Normal") && !boost::iequals(jtype.at(0), "Mpich") )
org.glite.ce.cream-cli/src/util/jdlHelper.cpp:      throw JDLJOBTYPEError("CREAM only supports 'Normal' and 'Mpich' as values of 'JobType' attribute");
org.glite.ce.cream-cli/src/util/jdlHelper.cpp:    if( boost::iequals(jtype.at(0),"Mpich") ) {
org.glite.ce.cream-cli/src/util/jdlHelper.cpp:          throw JDLMPIError("Declared Mpich JobType requires specification of CPUNumber or NodeNumber attribute");
org.glite.ce.cream-cli/src/util/jdlHelper.cpp:   return job.hasAttribute("Mpich");
org.glite.wms.wmproxy/src/server/wmpstructconverter.cpp:                                type |= AdConverter::ADCONV_JOBTYPE_MPICH;
org.glite.wms.wmproxy-api-cpp/interface/glite/wms/wmproxyapi/wmproxy_api.h:     JOBTYPE_MPICH=8,
org.glite.wms.wmproxy-api-cpp/src/wmproxy_api.cpp:      } if ( type & JOBTYPE_MPICH ) {



$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
In jobsubmitter van WMS-client wordt het LRMS-attribuut expliciet ingesteld, zoals "lsf" of "pbs":
(org.glite.wms.client/src/services/jobsubmit.cpp)
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
// MPICH ==================================================
if (  jobAd->hasAttribute(JDL::JOBTYPE,JDL_JOBTYPE_MPICH)){
     // MpiCh Job:
     if (lrmsOpt){
         // Override previous value (if present)
         if (jobAd->hasAttribute(JDL::LRMS_TYPE)){jobAd->delAttribute(JDL::LRMS_TYPE);}
         jobAd->setAttribute(JDL::LRMS_TYPE,*lrmsOpt);
      }
 }
                        
                       
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
In WMS helper klasse JobAd worden de JobTypes afgeknepen tot 5 mogelijkheden:
(org.glite.wms.jdl/src/requestad/JobAd.cpp)
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
WMS_JDLMISMATCH,JDL::JOBTYPE,"MpiCh | Normal | Partitionable | Parametric | Checkpointable") ;



$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
In jobadapter van WMS-server wordt het LRMS-attribuut alleen goedgekeurd indien "lsf" of "pbs".
Hoewel ietwat inconsistent, wordt het JobType voor "lsf" gewijzigd in "MPI_LSF" en voor "pbs", maar ook 
voor "torque" (onmogelijke situatie!), in "MPI_PBS".
(org.glite.wms.helper/src/jobadapter/JobAdapter.cpp)
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

  /* Mandatory */
  /* lrms type is mandatory for the mpich job */
  /* and forwarded to Condor-C in any case.   */
  std::string lrmstype(jdl::get_lrms_type(*m_ad));
  
 .....8<...........8<..........8<.............
 
  if (ljobtype == "mpich") {
    // lowercase all lrmstype characters
    std::string llrmstype(lrmstype);
    std::transform(llrmstype.begin(), llrmstype.end(), llrmstype.begin(), ::tolower);
    if (llrmstype != "lsf" && llrmstype != "pbs") {
      throw helper::InvalidAttributeValue(jdl::JDL::LRMS_TYPE,
                                          lrmstype,
                                          "lsf or pbs",
                                          helper_id);
    }

    // Mandatory
    // node number is mandatory for the mpich job
    int nodenumber;
    try {
      nodenumber = jdl::get_cpu_number(*m_ad);
    } catch (jdl::CannotGetAttribute& a) {
      nodenumber = jdl::get_node_number(*m_ad);
    }

    if (is_blahp_resource || is_condor_resource) {
      jdl::set_remote_remote_nodenumber(*result, nodenumber);
    }

    std::string nn(boost::lexical_cast<std::string>(nodenumber));

    globusrsl.append("(count=");
    globusrsl.append(nn);
    globusrsl.append(")(hostCount=");
    globusrsl.append(nn);
    globusrsl.append(")");

    std::string exec;
    std::string::size_type pos = executable.find("./");
    if (pos == std::string::npos) {
      exec.append(executable);
    } else {
      exec.append(executable.substr(pos+2));
    }

    jw.reset(new JobWrapper(exec));
    if (llrmstype == "lsf") {
      jw->set_job_type(MPI_LSF);
    }
    else if ((llrmstype == "pbs") || (llrmstype == "torque")) {
      jw->set_job_type(MPI_PBS);
    } else {
      // not possible;
    }
    jw->nodes(nodenumber);
  }

-- RichardDeJong - 14 Jun 2006

Edit | Attach | Watch | Print version | History: r1 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r1 - 2006-06-14 - unknown
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    LCG All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback