     }
 
 // benchmark the host rebinning
-void bmark_host_rebinning(bool include_memcpy)
+float bmark_host_rebinning(bool include_memcpy, bool quiet=false)
     {
     // warm up
     rebin_particles_host(gh_idxlist, gh_bin_size, gh_pos, g_N, g_Lx, g_Ly, g_Lz, g_Mx, g_My, g_Mz, g_Nmax);

    //bmark_host_rebinning(true);
#if CUDA_ARCH >= 11
    bmark_simple_rebinning();
    /*bmark_simple_sort_rebinning(32);
    bmark_simple_sort_rebinning(64);
    bmark_simple_sort_rebinning(128);
    bmark_simple_sort_rebinning(256);
    bmark_simple_sort_rebinning(512);
    bmark_simple_updating();*/
#endif
    
    free_data();
    
    return 0;
    }

    g_Mx = std::min(g_Mx, (unsigned)30);
    g_My = std::min(g_My, (unsigned)30);
    g_Mz = std::min(g_Mz, (unsigned)30);
    g_Mx = std::max(g_Mx, (unsigned)1);
    g_My = std::max(g_My, (unsigned)1);
    g_Mz = std::max(g_Mz, (unsigned)1);

    // allocate bins
    unsigned int Nbins = g_Mx * g_My * g_Mz;
