 	int block_offset = 0;
 	while (block_offset < normal_block_elements) {
 		
-		SrtsScanCycle<SMEM_ROWS, RAKING_THREADS, PARTIALS_PER_ROW, PARTIALS_PER_SEG>(	
-			smem, smem_offset, smem_segment, warpscan,
+		SrtsScanCycle<PARTIALS_PER_SEG>(	
+			smem_offset, 
+			smem_segment, 
+			warpscan,
 			reinterpret_cast<int4 *>(&d_ispine[block_offset]), 
 			reinterpret_cast<int4 *>(&d_ospine[block_offset]), 
 			carry);

		return;
	}
	
	if (threadIdx.x < RAKING_THREADS) {
		
		// two segs per row, odd segs are offset by 8
		row = threadIdx.x >> LOG_SEGS_PER_ROW;

 * Scans a cycle of RADIXSORT_CYCLE_ELEMENTS elements 
 ******************************************************************************/

template<int PARTIALS_PER_SEG>
__device__ __forceinline__ void SrtsScanCycle(
	int *smem_offset,
	int *smem_segment,
	int warpscan[2][B40C_WARP_THREADS],
