commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r7579 - gnuradio/branches/developers/eb/gcell/src/lib/


From: eb
Subject: [Commit-gnuradio] r7579 - gnuradio/branches/developers/eb/gcell/src/lib/spu
Date: Tue, 5 Feb 2008 17:59:31 -0700 (MST)

Author: eb
Date: 2008-02-05 17:59:29 -0700 (Tue, 05 Feb 2008)
New Revision: 7579

Modified:
   gnuradio/branches/developers/eb/gcell/src/lib/spu/test_spu.c
Log:
instrumentation

Modified: gnuradio/branches/developers/eb/gcell/src/lib/spu/test_spu.c
===================================================================
--- gnuradio/branches/developers/eb/gcell/src/lib/spu/test_spu.c        
2008-02-05 21:47:29 UTC (rev 7578)
+++ gnuradio/branches/developers/eb/gcell/src/lib/spu/test_spu.c        
2008-02-06 00:59:29 UTC (rev 7579)
@@ -32,7 +32,11 @@
 
 gc_spu_args_t  spu_args;
 
+#define ALPHA 0.001
+float avg_delta_t = 0.0;
 
+// ------------------------------------------------------------------------
+
 //#define BACKOFF_CAP ((1 << 12) - 1)  // 4095 cycles, about 1.3 us
 //#define BACKOFF_CAP ((1 << 16) - 1)  // 65535 cycles, about 20.4 us
 #define BACKOFF_CAP ((1 << 18) - 1)    // 262143 cycles, about 81.9 us
@@ -77,6 +81,8 @@
   backoff = ((backoff << _backoff_shift) + _backoff_addend) & BACKOFF_CAP;
 }
 
+// ------------------------------------------------------------------------
+
 void
 process_job(gc_eaddr_t jd_ea, gc_job_desc_t *jd)
 {
@@ -107,11 +113,25 @@
   // FIXME copy indirect args out
   // FIXME copy jd back out
 
+  // How long are we blocking for the PPE?
+  spu_writech(SPU_WrDec, 0xffffffff);
+  int start, stop;
+  start = spu_readch(SPU_RdDec);
+  
   // Tell PPE we're done with the job
   spu_writech(SPU_WrOutIntrMbox,
              MK_MBOX_MSG(OP_JOB_DONE, jd->sys.job_id));
+
+  stop = spu_readch(SPU_RdDec);
+  float delta_t = start - stop;
+  avg_delta_t = (delta_t * ALPHA) + (avg_delta_t * (1.0 - ALPHA));
 }
 
+static void
+print_stats(void)
+{
+  printf("spu[%d] avg_delta_t = %f\n", spu_args.spu_idx, avg_delta_t);
+}
 
 void
 main_loop(void)
@@ -126,8 +146,10 @@
     if (unlikely(cnt > 0)){
       int msg = spu_readch(SPU_RdInMbox);
       // printf("spu[%d] mbox_msg: 0x%08x\n", spu_args.spu_idx, msg);
-      if (MBOX_MSG_OP(msg) == OP_EXIT)
+      if (MBOX_MSG_OP(msg) == OP_EXIT){
+       print_stats();
        return;
+      }
     }
 
     // try to get a job from the job queue





reply via email to

[Prev in Thread] Current Thread [Next in Thread]