         return true;
       }
       tries++;
-      int off = (rand() % (262144));
+      int off = (rand() % (16384));
       off *= PARAM_ALIGNMENT;
       // Check if the offset is good
       bool good = true;

  extern __shared__ float buffer[];

  cudaDMAIndirect<false,false,ALIGNMENT,BYTES_PER_ELMT>
    dma0(offsets, num_elmts);

  initialize_buffer(buffer, buffer_size);
  __syncthreads();
  float *base_ptr = &(odata[ALIGN_OFFSET]);
  dma0.execute_dma(&(buffer[ALIGN_OFFSET]), base_ptr);
}

template<int ALIGNMENT, int ALIGN_OFFSET>

  extern __shared__ float buffer[];

  cudaDMAIndirect<false,false,ALIGNMENT,BYTES_PER_ELMT,DMA_THREADS>
    dma0(num_elmts);

  initialize_buffer(buffer, buffer_size);
  __syncthreads();
  float *base_ptr = &(odata[ALIGN_OFFSET]);
  dma0.execute_dma(offsets, &(buffer[ALIGN_OFFSET]), base_ptr);
}

template<int ALIGNMENT, int ALIGN_OFFSET, int BYTES_PER_ELMT>
