changeset 1501:8d6fee66ff65 draft

it looks like working...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 22 Aug 2012 18:55:24 +0900
parents 60f8ba22a200
children aaae2b63a2ef
files TaskManager/Cell/CellTaskManagerImpl.cc TaskManager/Gpu/GpuScheduler.cc TaskManager/Gpu/GpuThreads.cc TaskManager/kernel/ppe/CpuThreads.cc
diffstat 4 files changed, 13 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/TaskManager/Cell/CellTaskManagerImpl.cc	Wed Aug 22 17:44:42 2012 +0900
+++ b/TaskManager/Cell/CellTaskManagerImpl.cc	Wed Aug 22 18:55:24 2012 +0900
@@ -374,8 +374,9 @@
 #ifdef __CERIUM_CELL__
     Threads *cpus = new SpeThreads(num);
 #elif __CERIUM_GPU__    
-    Threads *cpus = new CpuThreads(num, useRefDma);
-    num += 1; // for GPU
+    int num_gpu = 1;
+    Threads *cpus = new CpuThreads(num, useRefDma,num_gpu);
+    num += num_gpu; // for GPU
 #else    
     Threads *cpus = new CpuThreads(num, useRefDma);
 #endif
--- a/TaskManager/Gpu/GpuScheduler.cc	Wed Aug 22 17:44:42 2012 +0900
+++ b/TaskManager/Gpu/GpuScheduler.cc	Wed Aug 22 18:55:24 2012 +0900
@@ -103,6 +103,7 @@
             connector->mail_write((memaddr)(tasklist->waiter));
             params_addr = (memaddr)tasklist->next;
         }
+        connector->mail_write((memaddr)MY_SPE_STATUS_READY);
     }
     // TaskArrayの処理
 }
--- a/TaskManager/Gpu/GpuThreads.cc	Wed Aug 22 17:44:42 2012 +0900
+++ b/TaskManager/Gpu/GpuThreads.cc	Wed Aug 22 18:55:24 2012 +0900
@@ -3,10 +3,11 @@
 #include "TaskManagerImpl.h"
 #include "SpeTaskManagerImpl.h"
 
+const int gpu_num = 1;
 
 GpuThreads::GpuThreads(int useRefDma) : use_refdma(useRefDma)
 {
-    threads = new pthread_t;
+    threads = new pthread_t[gpu_num];
     args = new gpu_thread_arg_t;
 }
 
@@ -14,6 +15,7 @@
 {
     memaddr mail = (memaddr)MY_SPE_COMMAND_EXIT;
     send_mail(0,1,&mail);
+    pthread_join(threads[0], NULL);
 
     delete threads;
     delete args;
@@ -31,7 +33,7 @@
     args->scheduler = new GpuScheduler();    
     args->useRefDma = use_refdma;
 
-    pthread_create(threads, NULL, &gpu_thread_run, args);
+    pthread_create(&threads[0], NULL, &gpu_thread_run, args);
     
 }
 
--- a/TaskManager/kernel/ppe/CpuThreads.cc	Wed Aug 22 17:44:42 2012 +0900
+++ b/TaskManager/kernel/ppe/CpuThreads.cc	Wed Aug 22 18:55:24 2012 +0900
@@ -32,7 +32,7 @@
     memaddr mail = (memaddr)MY_SPE_COMMAND_EXIT;
 
     for (int i = 0; i < cpu_num; i++) {
-        send_mail(i, 1, &mail);
+        send_mail(i+id_offset, 1, &mail);
     }
 
     for (int i = 0; i < cpu_num; i++) {
@@ -166,19 +166,16 @@
      * command に対応した Task の初期化を実行する
      * SPE に data が書き出し終わった後に PPE 側で初期化
      */
-
 }
 
-
+        //GPUなら1を返す
 int
 CpuThreads::is_gpu(int cpuid)
 {
-    if ( (cpuid < GPU_0)||(cpuid > GPU_3) ) {
+    if ( cpuid < id_offset ) {
+        return 1;
+    } else {
         return 0;
-        // cpuidがGPU以外なら0を返す
-    } else {
-        return 1;
-        //GPUなら1を返す
     }
 }