 
   ms = time_invocation([&]
   {
-    agency::cuda::bulk_async(grid(dim_grid, dim_block), transpose_coalesced{}, raw_pointer_cast(d_tdata.data()), raw_pointer_cast(d_idata.data()));
+    agency::cuda::bulk_async(grid(dim_grid, dim_block), transpose_coalesced{}, raw_pointer_cast(d_tdata.data()), raw_pointer_cast(d_idata.data()), agency::share<1,tile2d_t>());
   });
 
   h_tdata = d_tdata;


    for(int j = 0; j < TILE_DIM; j += BLOCK_ROWS)
    {
      odata[(y+j)*width + x] = tile[threadIdx.x][threadIdx.y + j];
    }
  }
};


  ms = time_invocation([&]
  {
    agency::cuda::bulk_async(grid(dim_grid, dim_block), transpose_no_bank_conflicts{}, raw_pointer_cast(d_tdata.data()), raw_pointer_cast(d_idata.data()), agency::share<1,conflict_free_tile2d_t>());
  });

  h_tdata = d_tdata;
