Exemple #1
0
static void
kstat_calibrate()
{
    uint i;
    static bool kstats_calibrated = false;
    if (kstats_calibrated)
        return;
    kstats_calibrated = true; /* slight innocent race */

    /* FIXME: once we calculate the overhead of calibrate_empty we can
     * subtract that from every self_time measurement.
     * FIXME: The cost of
     * overhead_nested-overhead_empty should be subtracted from each
     * subpath_time.
     */
    for (i=0; i<10000; i++) {
        KSTART(overhead_nested);
          KSTART(overhead_empty);
          KSTOP_NOT_PROPAGATED(overhead_empty);
        KSTOP(overhead_nested);
    }
}
Exemple #2
0
  BEGIN_KERNEL_BODY() {
    KSTART(); 

    // Define local memory 
    float buff[2][TotalData];
    float *src = buff[0], *dst = buff[1];

    // Reserve input and output data 
    RESERVE_POP(0, TotalData); 
    RESERVE_PUSH_TICKET_INQ(0, 0, TotalData); 

    // Load data from input queue
    COPY_TO_MEM(0, float, 0, TotalData, src); 

    // Combine
    // FFT simple ordering for each fused level 
    for (int i = 0; i < FusionLevel; ++i) {
      // combine for each fused level 
      int n = Ns[i];
      int totalData = 2 * n; 
      DFTParams* DP = ROBX(2, DFTParams, i); 
      float* w = ROBXY(3, float, 0, i);
      for (int j = 0; j < TotalData; j += totalData)
        CombineDFT(n, DP, w, &src[j], &dst[j]);

      // swap source and destination buffer
      float *tmp; 
      tmp = src; 
      src = dst; 
      dst = tmp; 
    }

    // Store data to output queue 
    COPY_FROM_MEM(0, float, 0, TotalData, src); 

    // Commit input and output data 
    COMMIT_PUSH(0); 
    COMMIT_POP(0);

    KEND();
  } END_KERNEL_BODY();