comparison TaskManager/Cell/CellTaskManagerImpl.cc @ 721:2b167196cb27

cleanups..
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 19 Dec 2009 12:12:09 +0900
parents dac59b74e02a
children abad59c7e3ac
comparison
equal deleted inserted replaced
720:dac59b74e02a 721:2b167196cb27
152 152
153 } 153 }
154 } 154 }
155 155
156 void 156 void
157 CellTaskManager::sednTaskList()
158 {
159 for (int i = 0; i < machineNum; i++) {
160 if (flag_sendTaskList[i] == 1 && speTaskList_bg[i]->length >= 1 ) {
161 send_taskList(i);
162 spe_running++;
163 }
164 }
165 }
166
167 void
157 CellTaskManagerImpl::run() 168 CellTaskManagerImpl::run()
158 { 169 {
159 TaskListPtr ppeTaskList = NULL; 170 TaskListPtr ppeTaskList = NULL;
160 171
161 do { 172 do {
162 // PPE side 173 // PPE side
163 ppeTaskList = ppeManager->get_runTaskList(); 174 ppeTaskList = ppeManager->get_runTaskList();
164 ppeManager->schedule(ppeTaskList); 175 if (ppeTaskList)
176 ppeManager->sendTaskList(ppeTaskList);
165 ppeManager->mail_check(); 177 ppeManager->mail_check();
166 // SPE side 178 // SPE side
167 do { 179 do {
168 mail_check(); 180 mail_check();
169 // SPE に送る TaskList の準備 181 // SPE に送る TaskList の準備
170 set_runTaskList(); 182 set_runTaskList();
171 // TaskList 待ちの SPE に TaskList を送る 183 // TaskList 待ちの SPE に TaskList を送る
172 for (int i = 0; i < machineNum; i++) { 184 sednTaskList();
173 if (flag_sendTaskList[i] == 1 && speTaskList_bg[i]->length >= 1 ) { 185 } while (ppeManager->activeTaskQueue->empty());
174 send_taskList(i); 186 } while (ppeTaskList || spe_running >0);
175 spe_running++; 187 if (!waitTaskQueue->empty()) {
176 } 188 fprintf(stderr,"Dead lock detected\n");
177 } 189 }
178 } while (ppeManager->activeTaskQueue->empty() && !waitTaskQueue->empty());
179 } while (ppeTaskList || spe_running >0);
180 } 190 }
181 191
182 /** 192 /**
183 * SPE からのメールをチェックする 193 * SPE からのメールをチェックする
184 */ 194 */