void *single_kernel_launcher (void *data) { struct kernelLauncherData *kd = (struct kernelLauncherData *)data; cl_uint i; cl_uint j; unsigned int one = 1; unsigned int zero = 0; for(i = 0; i < 3; i++) { if (i < kd->work_dim) __real_clSetKernelArg (kd->kernel,kd->arg_num+1+i, sizeof(unsigned int), &(kd->global_work_size[i])); else __real_clSetKernelArg (kd->kernel, kd->arg_num+1+i, sizeof(unsigned int), &one); } for(i = 0; i < 3; i++) { if (i < kd->work_dim) { __real_clSetKernelArg (kd->kernel, kd->arg_num+7+i, sizeof(unsigned int), &(kd->num_groups[i])); } else __real_clSetKernelArg (kd->kernel, kd->arg_num+7+i, sizeof(unsigned int), &one); } for(j = 0; j < 3; j++) { if (j == kd->max_index) __real_clSetKernelArg (kd->kernel, kd->arg_num+4+j, sizeof(unsigned int), &zero); else __real_clSetKernelArg (kd->kernel, kd->arg_num+4+j, sizeof(unsigned int), &zero); } __real_clEnqueueNDRangeKernel (queue_GPUSparc[gpuid], kd->kernel, kd->work_dim, kd->global_work_offset, kd->global_work_size, kd->local_work_size, 0, NULL, kd->event); __real_clFinish (queue_GPUSparc[gpuid]); //printf("%d\n", gpuid); sendFinish('g', gpuid, 1); return NULL; }
void WorkerSlave::handleFinish() { cout << myRank << ": handle Finish from " << previousprocesor << endl; int cokoliv; running = false; MPI_Recv(&cokoliv, 1, MPI_INT, previousprocesor, MSG_FINISH, MPI_COMM_WORLD, &status); sendSolution(); sendFinish(); }
void *kernel_launcher (void *data) { struct kernelLauncherData *kd = (struct kernelLauncherData *)data; size_t *global_work = (size_t *)malloc(sizeof(size_t)*(kd->work_dim)); cl_uint i; for(i = 0; i < kd->work_dim; i++) { if (i != kd->max_index) global_work[i] = kd->global_work_size[i]; } unsigned int one = 1; unsigned int zero = 0; for(i = 0; i < 3; i++) { if (i < kd->work_dim) __real_clSetKernelArg (kd->kernel,kd->arg_num+1+i, sizeof(unsigned int), &(kd->global_work_size[i])); else __real_clSetKernelArg (kd->kernel, kd->arg_num+1+i, sizeof(unsigned int), &one); } for(i = 0; i < 3; i++) { if (i < kd->work_dim) { __real_clSetKernelArg (kd->kernel, kd->arg_num+7+i, sizeof(unsigned int), &(kd->num_groups[i])); } else __real_clSetKernelArg (kd->kernel, kd->arg_num+7+i, sizeof(unsigned int), &one); } cl_uint j; size_t remain = kd->size; size_t step = kd->step; if (kd->local_work_size != NULL) step /= kd->local_work_size[kd->max_index]; unsigned int off = kd->off; while (remain > 0) { size_t size = remain >= 2*step ? step : remain; if (kd->local_work_size != NULL) global_work[kd->max_index] = size*kd->local_work_size[kd->max_index]; else global_work[kd->max_index] = size; remain -= size; for(j = 0; j < 3; j++) { if (j == kd->max_index) __real_clSetKernelArg (kd->kernel, kd->arg_num+4+j, sizeof(unsigned int), &off); else __real_clSetKernelArg (kd->kernel, kd->arg_num+4+j, sizeof(unsigned int), &zero); } sendRequest('g', kd->index, 1); waitRequest('g', kd->index); __real_clEnqueueNDRangeKernel (queue_GPUSparc[kd->index], kd->kernel, kd->work_dim, kd->global_work_offset, global_work, kd->local_work_size, 0, NULL, kd->event); __real_clFinish (queue_GPUSparc[kd->index]); sendFinish('g', kd->index, 1); off += size; } free (global_work); return NULL; }
void WorkerMaster::handleToken() { // cout << myRank << " handleToken" << endl; int colorReceived; MPI_Recv(&colorReceived, 1, MPI_INT, previousprocesor, MSG_TOKEN, MPI_COMM_WORLD, &status); if (colorReceived == BLACK || color == BLACK) { //cout << "0: black - am I still waiting" << endl; } else { // cout << "0: white - am I finishing" << endl; running = false; sendFinish(); return; } waitingForToken = false; }
void RemotePicberry::run() { char response[6]; int percentage = 0; bool multi_round = false; int round = 0; if(mode == SRV_WRITE) { multi_round = true; sendFile(); sendFinishFileSend(); } while(working) { if(picberry_socket.bytesAvailable() || picberry_socket.waitForReadyRead()) { picberry_socket.readLine(response, 5); qDebug() << response; if(QString(response) == "@FIN") { if(!multi_round) { working=false; } else if(multi_round && round==1) { sendFinishFirstRun(); } else if(multi_round && round==2) { working = false; } round++; } else if(QString(response) == "@ERR") { sendError(); working = false; return; } else { sscanf(response, "@%d", &percentage); sendProgress(percentage); } } } if(mode == SRV_READ) { sendStartFileReceive(); receiveFile(); } picberry_socket.readAll(); sendFinish(); }
const QDomNode &SVT_Fcml::fcmlReqWithRefreshSession(const QString &to , const QString &model, const QString &func , const QMap<QString, QString> ¶ , int *error) { bool sessionRegeted=false; mNode.clear(); bool sessionOk=mSession.contains(to); mMutex.lock(); bool authOk=mSavedAuth.contains(to); mMutex.unlock(); if(!sessionOk && !authOk) { if(error) { *error=FE_WRONG_USER_OR_PWD; } return mNode; } //step1 get sessionId QString sessionId; if(!sessionOk) { Q_ASSERT(authOk); mMutex.lock(); const QPair<QString,QString> pair=mSavedAuth[to]; mMutex.unlock(); int itemp; sessionId=getSession(to,pair.first,pair.second,&itemp); if(sessionId.isEmpty()) { //有两种可能,1.用户名密码错 2.不在线 if(error) { *error=itemp; } return mNode; } sessionRegeted=true; } else { sessionId=mSession[to]; } //step2 get data QDomElement elem; QDomDocument doc; elem=doc.createElement(QString("%1.%2").arg(model,func)); elem.setAttribute("_sessionId",sessionId); QMap<QString, QString>::const_iterator i = para.constBegin(); while (i != para.constEnd()) { elem.setAttribute(i.key(),i.value()); ++i; } doc.appendChild(elem); // QString req="<%1.%2 _sessionId=\"%3\"/>"; // req=req.arg(model,func,sessionId); QString req=doc.toString(); bool needStartFinish=isSetApi(model,func); if(needStartFinish)sendStart(to,sessionId); elem=fcmlRequest(QString("netrouter@")+to,req).firstChild().toElement(); if(needStartFinish)sendFinish(to,sessionId); if(0==elem.tagName().compare("error")) { int retvalue=elem.attribute("code").toInt(); if(retvalue==FE_SESSION_NOTOK && !sessionRegeted && authOk) { const QPair<QString,QString> pair=mSavedAuth[to]; sessionId=getSession(to,pair.first,pair.second); sessionRegeted=true; if(!sessionId.isEmpty()) { elem=fcmlRequest(QString("netrouter@")+to,req).firstChild().toElement(); } } } if(error) { if(0==elem.tagName().compare("error")) { *error=elem.attribute("code").toInt(); } else { *error=0; } } return mNode; }
bool SVT_Soap::_doFunc(const QString &host, const QString &module, const QString &method, quint32 port, const QMap<QString, QString> *paras, QMap<QString, QString> *retmap){ if((mFlags&IS_CGDG) ||isSetApi(module,method)) { sendStart(host,port); } if(retmap) { retmap->clear(); } const char *cHeadMode="POST /soap/server_sa/ HTTP/1.0\r\n" "SOAPAction: urn:NETGEAR-ROUTER:service:%1:1#%2\r\n" "content-type: text/xml;charset=utf-8\r\n" "HOST: www.routerlogin.com\r\n" "User-Agent: SOAP Toolkit 3.0\r\n" "connection: keep-Alive\r\n" "Cache-Control: no-cache\r\n" "Pragma: no-cache\r\n" "content-length: %3\r\n\r\n"; const char *cBodyMode= "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>" "<SOAP-ENV:Envelope xmlns:SOAPSDK1=\"http://www.w3.org/2001/XMLSchema\" " "xmlns:SOAPSDK2=\"http://www.w3.org/2001/XMLSchema-instance\" " "xmlns:SOAPSDK3=\"http://schemas.xmlsoap.org/soap/encoding/\" " "xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\">" "<SOAP-ENV:Header>" "<SessionID>58DEE6006A88A967E89A</SessionID>" "</SOAP-ENV:Header>" "<SOAP-ENV:Body>" "<M1:%2 xmlns:M1=\"urn:NETGEAR-ROUTER:service:%1:1\">" "%3" "</M1:%2>" "</SOAP-ENV:Body>" "</SOAP-ENV:Envelope>"; QString s_para=""; if(paras) { QMap<QString, QString>::const_iterator i = paras->begin(); while (i != paras->end()) { s_para+=QString("<%1>%2</%1>").arg(i.key(),i.value()); ++i; } } QString body=QString(cBodyMode).arg(module,method,s_para); QString head=QString(cHeadMode).arg(module,method).arg(body.length()); if(0==module.compare("ParentalControl",Qt::CaseInsensitive)) { cHeadMode="POST /soap/server_sa/ HTTP/1.0\r\n" "SOAPAction: urn:NETGEAR-ROUTER:service:%1:1#%2\r\n" "content-type: text/xml;charset=utf-8\r\n" "HOST: www.routerlogin.com\r\n" "User-Agent: SOAP Toolkit 3.0\r\n" "connection: keep-Alive\r\n" "Cache-Control: no-cache\r\n" "Pragma: no-cache\r\n" "content-length: %3\r\n\r\n"; cBodyMode="<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" "<SOAP-ENV:Header>\n" "<SessionID xsi:type=\"xsd:string\" xmlns:xsi=\"http://www.w3.org/1999/XMLSchema-instance\">E6A88AE69687E58D9A00</SessionID>\n" "</SOAP-ENV:Header>\n" "<SOAP-ENV:Body>\n" "<%1>\n" "%2" "</%1>\n" "</SOAP-ENV:Body>\n" "</SOAP-ENV:Envelope>\n"; const char *cParaString=" xsi:type=\"xsd:string\" xmlns:xsi=\"http://www.w3.org/1999/XMLSchema-instance\""; s_para=""; if(paras) { QMap<QString, QString>::const_iterator i = paras->begin(); while (i != paras->end()) { s_para+=QString("<%1%3>%2</%1>\n").arg(i.key(),i.value(),cParaString); ++i; } } body=QString(cBodyMode).arg(method,s_para); head=QString(cHeadMode).arg(module,method).arg(body.length()); } SVT_Http http(mExitFlag); QByteArray &retarray=http.rawRequest(host,head+body,port); qDebug()<<retarray; int retv=getRetValue(retarray); bool retOk=(200==retv); if(retOk && retmap) { qDebug()<<"start parse"; QDomDocument doc; QByteArray body=SVT_Http::getBody(retarray); doc.setContent(body,true); // QDomNode root=doc.namedItem() // doc. //QString tagname=method+"Response"; QDomNode rnode = doc.firstChild(); if (!rnode.isElement()) rnode = rnode.nextSibling(); parseNode(rnode,retmap); } if((retOk)&&((mFlags&IS_CGDG) ||isSetApi(module,method))) { sendFinish(host,port); } if(!retOk && retmap) { retmap->insert("error",QString::number(retv)); } return retOk; }