 }
 
 __global__ void
-__launch_bounds__(64, 6)
+__launch_bounds__(55)
 get_hermitian100(const int batch_offset, float2* tt,
 		const int* csrRowIndex, const int* csrColIndex, const float lambda, const int m, const int F,
 		const float* __restrict__ thetaT) {

					else
						memset(&thetaTemp[k*F/2 + threadIdx.x], 0, 2*sizeof(float));
				}
			}
			__syncthreads();
			
			//phase 2 in iteration: smem --> register

		//iteration: copy gmem-->smem; aggregate smem-->register
		for (int iter = 0; iter < iterations; iter ++){
			//phase 1 in iteration: gmem --> smem
			
			//REQ: blockDim.x >= F/2
			if(threadIdx.x < F/2){
				for(int k = 0; k< SCAN_BATCH; k++){
