Mercurial > hg > Game > Cerium
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を返す } }