     AssertEquals(CUSPARSE_STATUS_SUCCESS, cusparseCreateHybMat(&hyb_desc));
     AssertEquals(CUSPARSE_STATUS_SUCCESS, cusparseDcsr2hyb(
         cusparse,
-        params.num_cols, params.num_rows,
+        params.num_rows, params.num_cols,
         mat_desc,
         params.d_values, params.d_row_end_offsets, params.d_column_indices,
         hyb_desc,
         0,
         CUSPARSE_HYB_PARTITION_AUTO));
+
+    cudaDeviceSynchronize();
+    cpu_timer.Stop();
+    float elapsed_millis = cpu_timer.ElapsedMillis();
+    printf("HYB setup ms, %.5f, ", elapsed_millis);
 
     // Reset input/output vector y
     CubDebugExit(cudaMemcpy(params.d_vector_y, vector_y_in, sizeof(float) * params.num_rows, cudaMemcpyHostToDevice));

        if (!g_quiet) printf("\n\n");
        printf("Cusparse HybMV, "); fflush(stdout);

        if (params.num_rows == params.num_cols)
        {
            // BUG: HYB crashes/incorrect on non-square matrices (dense_20971_x_800)
            avg_millis = TestCusparseHybmv(vector_y_in, vector_y_out, params, timing_iterations, cusparse);
            DisplayPerf(device_giga_bandwidth, avg_millis, csr_matrix);
        }
        else if (!g_quiet)
        {
            printf("Unsupported for non-square matrices\n"); fflush(stdout);
        }
    }



    }

    // Timing
    elapsed_millis    = 0.0;
    GpuTimer timer;

    timer.Start();
