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
Topic revision: r1 - 2006-06-14
- unknown