@@ -528,9 +528,6 @@ function allocate_workspace_gpu(lp::LP_info_gpu, scaling_info::Scaling_info_gpu,
528528 ws. y_bar .= ws. y
529529 ws. last_y .= ws. y
530530
531- # Compute y_obj based on y_bar
532- compute_y_obj_gpu! (ws. y_obj, ws. y_bar, ws. AL, ws. AU, m)
533-
534531 # Compute z_bar = c - AT * y_bar
535532 CUDA. CUSPARSE. cusparseSpMV (ws. spmv_AT. handle, ws. spmv_AT. operator, ws. spmv_AT. alpha,
536533 ws. spmv_AT. desc_AT, ws. spmv_AT. desc_y_bar, ws. spmv_AT. beta, ws. spmv_AT. desc_ATy,
@@ -610,17 +607,6 @@ function allocate_workspace_cpu(lp::LP_info_cpu, scaling_info::Scaling_info_cpu,
610607 ws. y_bar .= scaled_y
611608 ws. last_y .= scaled_y
612609
613- # Compute y_obj based on y_bar
614- for i in 1 : m
615- y_bar_val = ws. y_bar[i]
616- if y_bar_val > 0.0
617- ws. y_obj[i] = ws. AL[i]
618- elseif y_bar_val < 0.0
619- ws. y_obj[i] = ws. AU[i]
620- # else keep y_obj[i] as 0
621- end
622- end
623-
624610 # Compute z_bar = c - AT * y_bar
625611 mul! (ws. ATy, ws. AT, ws. y_bar)
626612 ws. z_bar .= ws. c .- ws. ATy
@@ -1138,6 +1124,23 @@ function solve(model::LP_info_cpu, params::HPRLP_parameters)
11381124 # Power iteration to estimate lambda_max
11391125 power_time = compute_maximum_eigenvalue! (lp, ws, params)
11401126
1127+ # Compute y_obj if initial_y was provided (now that lambda_max is known)
1128+ if params. initial_y != = nothing
1129+ fact1 = ws. lambda_max * ws. sigma
1130+ if params. use_gpu
1131+ # Compute Ax for initial x (or use zeros if no initial x)
1132+ CUDA. CUSPARSE. cusparseSpMV (ws. spmv_A. handle, ws. spmv_A. operator, ws. spmv_A. alpha,
1133+ ws. spmv_A. desc_A, ws. spmv_A. desc_x_bar, ws. spmv_A. beta, ws. spmv_A. desc_Ax,
1134+ ws. spmv_A. compute_type, ws. spmv_A. alg, ws. spmv_A. buf)
1135+ compute_y_obj_gpu! (ws. y_obj, ws. y, ws. AL, ws. AU, ws. Ax, fact1, ws. m)
1136+ else
1137+ # Compute Ax for initial x (or use zeros if no initial x)
1138+ mul! (ws. Ax, ws. A, ws. x_bar)
1139+ compute_y_obj_cpu! (ws. y_obj, ws. y, ws. AL, ws. AU, ws. Ax, fact1)
1140+ end
1141+ end
1142+
1143+
11411144 if params. verbose
11421145 println (" iter errRp errRd p_obj d_obj gap sigma time" )
11431146 end
0 commit comments