diff TaskManager/Cell/CellTaskManagerImpl.cc @ 321:f64d75473f95

merge 317
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 10 Jun 2009 15:23:25 +0900
parents 7efc5ede2c03
children 20f2459041cb
line wrap: on
line diff
--- a/TaskManager/Cell/CellTaskManagerImpl.cc	Wed Jun 10 15:12:39 2009 +0900
+++ b/TaskManager/Cell/CellTaskManagerImpl.cc	Wed Jun 10 15:23:25 2009 +0900
@@ -1,3 +1,5 @@
+#define DEBUG
+#include "error.h"
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -5,7 +7,6 @@
 #include "CellBufferManager.h"
 #include "PpeScheduler.h"
 #include "types.h"
-#include "error.h"
 
 CellTaskManagerImpl::~CellTaskManagerImpl(void)
 {
@@ -13,8 +14,8 @@
     delete [] speTaskList;
     delete [] speTaskList_bg;
     /**
-     * bufferManager は
-     * ppeManager のなかで delete してもらう
+     * bufferManager 
+     * ppeManager  delete 
      */
     // delete bufferManager;
     delete [] flag_sendTaskList;
@@ -43,7 +44,7 @@
 	flag_sendTaskList[i] = 1;
     }
 
-    // PPE 側の管理をする Manager
+    // PPE 眼膊∞ Manager
     ppeManager = new FifoTaskManagerImpl(machineNum);
     ppeManager->init(new PpeScheduler, bufferManager);
 }
@@ -61,22 +62,22 @@
     }
 }
 
-// SPE_ANY が指定されていた時に
-// これをインクリメントしつつ呼ぶことにする。
-// 乱数使ってもいいけどさ。
+// SPE_ANY 絎
+// ゃ潟<潟ゃゅ若吟
+// 箙掩遺戎c
 int cur_anySpeid = 0;
 
 /**
- * ActiveTaskQueue から Task を
- * 各 SPE に渡す TaskList に入れる
+ * ActiveTaskQueue  Task 
+ *  SPE 羝< TaskList ャ
  *
- * ここの activeTaskQueue は FifoTaskManagerImpl のと意味が違い、
- * spe に渡される Task だけ入っている
+ *  activeTaskQueue  FifoTaskManagerImpl 潟
+ * spe 羝< Task ャc
  */
 void
 CellTaskManagerImpl::set_runTaskList(void)
 {
-    // ここ...直すかな
+    // ...眼
     TaskListPtr list;
     TaskQueuePtr queue;
     TaskQueuePtr d;
@@ -99,16 +100,16 @@
 	    cur_anySpeid = (cur_anySpeid < machineNum)
 		? cur_anySpeid : 0;
 	} else {
-	    // -1 してるのは
-	    // htask->cpu_type - CPU_SPE で
-	    // SPE0 = 1, SPE1 = 2, ... SPE5 = 6 ってなってるので
-	    // 配列的 (SPE0 = arr[0], SPE1 = arr[1]) にするため
+	    // -1 
+	    // htask->cpu_type - CPU_SPE 
+	    // SPE0 = 1, SPE1 = 2, ... SPE5 = 6 cc
+	    //  (SPE0 = arr[0], SPE1 = arr[1]) 
 	    speid = htask->cpu_type - CPU_SPE - 1;
 
-	    // SPU の数以上が指定されていれば
-	    // とりあえず MAX_USE_SPE_NUM (実際に動く SPE の最大数) で
-	    // あまり求めてそれを使うことにする。
-	    // ここで判定するもんでもないか?
+	    // SPU 遺札筝絎
+	    //  MAX_USE_SPE_NUM (絎 SPE 紊ф) 
+	    // 障羆篏帥
+	    // уゅс鐚
 	    if (speid >= machineNum) {
 		speid %= machineNum;
 	    }
@@ -145,18 +146,18 @@
     TaskListPtr ppeTaskList = NULL;
     MailQueuePtr ppeMail = NULL;
 
-    // PPE 側で動く TaskList です
-    // FifoTaskManagerImpl::run と上手く合うように
-    // こんなことやってますよ
+    // PPE 眼у TaskList с
+    // FifoTaskManagerImpl::run 筝
+    // c障
     ppeTaskList = ppeManager->get_runTaskList();
     if (!ppeTaskList) {
 	goto cont;
     }
 
-    // SPE からの Mailbox Check は
-    // PPE 側の schedule から抜けて来たときに行う
-    // (speThreads で Blocking Mailbox read と
-    // セマフォとか使ってやってもいいが、今はこの方式で)
+    // SPE  Mailbox Check 
+    // PPE 眼 schedule ャ茵
+    // (speThreads  Blocking Mailbox read 
+    // 祉篏帥cc篁劫)
     do {
 	ppeMail = ppeManager->schedule(ppeTaskList);
     cont:
@@ -165,37 +166,37 @@
 }
 
 /**
- * SPE からのメールをチェックする
+ * SPE <若с
  *
  * @param [mail_list]
- *        PPE 側で動く Scheduler からのメールリスト
- *        この中で PPE 側の mail check も行う
+ *        PPE 眼у Scheduler <若鴻
+ *        筝 PPE 眼 mail check 茵
  *
- * @return PPE Scheduler に対してのメール。
- *         次に実行する TaskList のアドレスや、終了コマンドを送る
+ * @return PPE Scheduler 絲障<若
+ *         罨<絎茵 TaskList ≪鴻腟篋潟潟
  */TaskListPtr
 CellTaskManagerImpl::mail_check(MailQueuePtr mail_list)
 {
-    // PPE Scheduler からの mail check
+    // PPE Scheduler  mail check
     ppeManager->mail_check(mail_list, &waitTaskQueue);
 
     do {
 	unsigned int data;
 
-	// SPE Scheduler からの mail check
+	// SPE Scheduler  mail check
 	for (int id = 0; id < machineNum; id++) {	    
 	    while (speThreads->check_mail(id, 1, &data)) {				
 		
 		/**
-		 * MY_SPE_STATUS_READY: SPE が持ってた Task 全て終了
-		 * MY_SPE_NOP: 特に意味のないコマンド
-		 * それ以外:終了したタスク(PPEにあるのでアドレス
+		 * MY_SPE_STATUS_READY: SPE c Task 腟篋
+		 * MY_SPE_NOP: 鴻潟潟潟
+		 * 篁ュ鐚腟篋帥鴻(PPEс≪
 		 *
-		 * MY_SPE_NOP が 0 なので、
-		 * 下のように data > MY_SPE_NOP とかしています。
-		 * 一目でよくわからない書き方なんで、直したいところですが。。。
+		 * MY_SPE_NOP  0 с
+		 * 筝 data > MY_SPE_NOP 障
+		 * 筝с吾鴻с眼с
 		 */
-		// 名前あとでちゃんと決めよう => MY_SPE_... とかじゃなくて
+		// с<羆冴 => MY_SPE_... 
 		if (data == MY_SPE_STATUS_READY) {
 		    __debug_ppe("[SPE %d] finish\n", id);
 		    flag_sendTaskList[id] = 1;
@@ -203,7 +204,7 @@
 		    __debug_ppe("[PPE] MALLOC COMMAND from [SPE %d]\n", id);
 
 		    /**
-		     * info[0] = alloc_id; (CellScheduler::mainMem_alloc 参照)
+		     * info[0] = alloc_id; (CellScheduler::mainMem_alloc )
 		     * info[1] = alloc_addr;
 		     */
 		    unsigned int alloc_info[3];
@@ -217,10 +218,11 @@
 		    
 		    alloc_info[1] = (unsigned int)allocate(alloc_size);
 		    /*
-		     * allocate された領域は今の SPE buffer にリンクとして接続する
-		     * ここでは TaskList を allocate(new) して登録してやろうか
+		     * allocate 篁 SPE buffer 潟・膓
+		     * с TaskList  allocate(new) 脂蚊
 		     */
 
+		    __debug_ppe("[PPE] MALLOCED 0x%x from [SPE %d]\n", alloc_info[1],id);
 		    speThreads->add_output_tasklist(command, alloc_info[1], alloc_size);
 
 		    speThreads->send_mail(id, 2, alloc_info);
@@ -231,37 +233,37 @@
 	    }
 	}
 
-	// 依存関係を満たしたタスクをアクティブに
+	// 箴絖≫羣帥鴻≪c
 	wakeup_waitTask();
 
-	// SPE に送る TaskList の準備
+	// SPE  TaskList 羣
 	set_runTaskList();
 
-	// TaskList 待ちの SPE に TaskList を送る
+	// TaskList 緇< SPE  TaskList 
 	for (int i = 0; i < machineNum; i++)  {
 	    if (flag_sendTaskList[i] == 1 && speTaskList_bg[i]->length >= 1 ) {
 		send_taskList(i);
 	    }
 	}
 
-	// 現在の FifoTaskManager の仕様では
-	// ・PPE で実行するタスクが無くなれば終了する
-	// であり、この場合もし SPE にタスクが残っていても
-	// メインループから抜けてプログラム終了となってしまうので
-	// ここでストップかけてます。
+	// 憜 FifoTaskManager 篁罕с
+	// PPE у茵帥鴻<亥篋
+	// с翫 SPE 帥鴻罧c
+	// <ゃ潟若違腟篋c障
+	// с鴻障
     } while (!ppeManager->activeTaskQueue && waitTaskQueue);
 	
     return ppeManager->get_runTaskList();
 }
 
 /**
- * 条件を満たしたら SPE に TaskList を送信する
- * 条件1. SPE が持ってた TaskList を終了して、次の TaskList を待ってる
- * 条件2. SPE に送る TaskList に Task がある
+ * >散羣 SPE  TaskList 篆<
+ * >散1. SPE c TaskList 腟篋罨< TaskList 緇c
+ * >散2. SPE  TaskList  Task 
  *
- * SPE で実行終了した TaskList [speTaskList] と
- * これから実行する TaskList [speTaskList_bg] のバッファを入れ替える
- * ついでに実行終了したやつは clear しておく。
+ * SPE у茵腟篋 TaskList [speTaskList] 
+ * 絎茵 TaskList [speTaskList_bg] <ャ帥
+ * ゃс絎茵腟篋ゃ clear 
  */
 void
 CellTaskManagerImpl::send_taskList(int id)
@@ -286,7 +288,7 @@
     
     posix_memalign(&buff, DEFAULT_ALIGNMENT, size);
 
-    // bzero はコストが高いのでやりたくない
+    // bzero 潟鴻蕭с
     bzero(buff, size);
 
     return buff;