cabouman / mbircone

BSD 3-Clause "New" or "Revised" License
11 stars 9 forks source link

Marco/dev #114

Closed bommaritom closed 1 year ago

bommaritom commented 1 year ago

I have implemented the updates exactly as discussed on Jan 12. The following changes are proposed.

Tested:

Will continue to update the above bullet points as I test more files.

\ \ \ \ \ * * * * * * * * * * * * * * * * \ \ \ \ \ Detailed changelog:

Slides corresponding to changes:

Changelog Jan 13.pptx Detailed Changelog Jan 13.pptx

dyang37 commented 1 year ago

Hi Marco, Could you please give me some more information regarding the seg fault? Did you observe it in the C code? If so, which ICD iteration were you at when the seg fault occurs? Did you use a PC or a cluster node for the experiment?

Regards, Diyu


From: Marco Bommarito @.> Sent: Friday, January 13, 2023 1:54 PM To: cabouman/mbircone @.> Cc: Subscribed @.***> Subject: [cabouman/mbircone] Marco/dev (PR #114)

---- External Email: Use caution with attachments, links, or sharing data ----

I have implemented the updates exactly as discussed on Jan 12. The following changes are proposed.

Tested:

Will continue to update the above bullet points as I test more files.

Detailed changelog:

Slides corresponding to changes:

Changelog Jan 13.pptxhttps://github.com/cabouman/mbircone/files/10414444/Changelog.Jan.13.pptx Detailed Changelog Jan 13.pptxhttps://github.com/cabouman/mbircone/files/10414464/Detailed.Changelog.Jan.13.pptx


You can view, comment on, or merge this pull request online at:

https://github.com/cabouman/mbircone/pull/114

Commit Summary

File Changes

(4 fileshttps://github.com/cabouman/mbircone/pull/114/files)

Patch Links:

— Reply to this email directly, view it on GitHubhttps://github.com/cabouman/mbircone/pull/114, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AB2Q7ODIWFTT6FI5CLESFXTWSGQHVANCNFSM6AAAAAAT2W4ENA. You are receiving this because you are subscribed to this thread.Message ID: @.***>

bommaritom commented 1 year ago

Hi Diyu,

The error occurred on marco/dev, but I was able to replicate it today on the master branch.

I ran demo_3D_shepp_logan.py on the master branch on my 2018 MacBook Air, running Mojave 10.14.6, with 8GB of RAM. The code ran the first two resolutions, and then threw a Segmentation Fault after 13 iterations on the full resolution. I was able to run the code successfully both before and after triggering this error, without having to change anything.

Here is the output for that final resolution:

Image parameters read:
        x_0 = -3.200000e+01 
        y_0 = -3.200000e+01 
        z_0 = -3.200000e+01 
        N_x = 128 
        N_y = 128 
        N_z = 128 
        Delta_xy = 5.000000e-01 
        Delta_z = 5.000000e-01 
        j_xstart_roi = -1 
        j_ystart_roi = -1 
        j_zstart_roi = -1 
        j_xstop_roi = -1 
        j_ystop_roi = -1 
        j_zstop_roi = -1 

Sinogram parameters read:
        N_dv = 128,
        N_dw = 128,
        Delta_dv = 1.000000e+00,
        Delta_dw = 1.000000e+00,
        N_beta = 64,
        u_s = -1.920000e+02,
        u_r = 0.000000e+00,
        v_r = 0.000000e+00,
        u_d0 = 1.920000e+02,
        v_d0 = -6.400000e+01,
        w_d0 = -6.400000e+01,
        (potentially uninitialized:)
        weightScaler_value = -1.000000e+00,

Reconstruction parameters read:
        proximal map mode = 0 
        q = 2.000000e+00 
        p = 1.200000e+00 
        T = 1.000000e-01 
        sigmaX = 7.176227e-03 
        bFace = 1.666667e-01 
        bEdge = -1.000000e+00 
        bVertex = -1.000000e+00 
        sigma_lambda = 1.000000e+00 
        is_positivity_constraint = 1 
        stopThresholdChange_pct = 2.000000e-02 
        stopThesholdRWFE_pct = 0.000000e+00 
        stopThesholdRUFE_pct = 0.000000e+00 
        MaxIterations = 100 
        relativeChangeMode = meanImage 
        relativeChangeScaler = 1.000000e-01 
        relativeChangePercentile = 9.990000e+01 
        N_G = 2 
        zipLineMode = 2 
        numVoxelsPerZiplineMax = 200 
        numVoxelsPerZipline = 128 
        numZiplines = 1 
        weightScaler_estimateMode = None 
        weightScaler_domain = spatiallyInvariant 
        weightScaler_value = 5.854110e-04 
        NHICD_Mode = off 
        NHICD_ThresholdAllVoxels_ErrorPercent = 8.000000e+01 
        NHICD_percentage = 1.500000e+01 
        NHICD_random = 2.000000e+01 
        verbosity = 1 
        isComputeCost = 1 
************************** Iteration 0  (max. 100) **************************
*  Cost                   = 4.5697095000e+06
*  Rel. Update            = 0.0000000000e+00 % (threshold = 1.9999999553e-02 %)
*  RWFE = ||e||_W/||y||_W = 3.7374150753e+00 % (threshold = 0.0000000000e+00 %)
*  RUFE = ||e|| / ||y||   = 3.7374150753e+00 % (threshold = 0.0000000000e+00 %)
* ----------------------------------------------------------------------------
*  1/M ||e||^2_W          = 4.8192152753e-03 = 1/207.5026550293
*  weightScaler_value     = 5.8541103499e-04 = 1/1708.2015380859
* ----------------------------------------------------------------------------
*  voxelsPerSecond        = 0.0000000000e+00 
*  time icd update        = -6.2864284515e+01 s
*  ratioUpdated           = 0.0000000000e+00 %
*  totalEquits            = 0.0000000000e+00 
******************************************************************************

************************** Iteration 1  (max. 100) **************************
*  Cost                   = 6.9841562500e+05
*  Rel. Update            = 1.0759234428e+01 % (threshold = 1.9999999553e-02 %)
*  RWFE = ||e||_W/||y||_W = 1.0170836449e+00 % (threshold = 0.0000000000e+00 %)
*  RUFE = ||e|| / ||y||   = 1.0170836449e+00 % (threshold = 0.0000000000e+00 %)
* ----------------------------------------------------------------------------
*  1/M ||e||^2_W          = 3.5690041841e-04 = 1/2801.9020996094
*  weightScaler_value     = 5.8541103499e-04 = 1/1708.2015380859
* ----------------------------------------------------------------------------
*  voxelsPerSecond        = inf        
*  time icd update        = -5.6976913452e+01 s
*  ratioUpdated           = 1.0000000000e+02 %
*  totalEquits            = 1.0000000000e+00 
******************************************************************************

************************** Iteration 2  (max. 100) **************************
*  Cost                   = 4.0759975000e+05
*  Rel. Update            = 3.7160534859e+00 % (threshold = 1.9999999553e-02 %)
*  RWFE = ||e||_W/||y||_W = 5.0743418932e-01 % (threshold = 0.0000000000e+00 %)
*  RUFE = ||e|| / ||y||   = 5.0743418932e-01 % (threshold = 0.0000000000e+00 %)
* ----------------------------------------------------------------------------
*  1/M ||e||^2_W          = 8.8836852228e-05 = 1/11256.5898437500
*  weightScaler_value     = 5.8541103499e-04 = 1/1708.2015380859
* ----------------------------------------------------------------------------
*  voxelsPerSecond        = inf        
*  time icd update        = -5.1376419067e+01 s
*  ratioUpdated           = 1.0000000000e+02 %
*  totalEquits            = 2.0000000000e+00 
******************************************************************************

************************** Iteration 3  (max. 100) **************************
*  Cost                   = 3.2696290625e+05
*  Rel. Update            = 1.9008958340e+00 % (threshold = 1.9999999553e-02 %)
*  RWFE = ||e||_W/||y||_W = 3.2929825783e-01 % (threshold = 0.0000000000e+00 %)
*  RUFE = ||e|| / ||y||   = 3.2929825783e-01 % (threshold = 0.0000000000e+00 %)
* ----------------------------------------------------------------------------
*  1/M ||e||^2_W          = 3.7412144593e-05 = 1/26729.2890625000
*  weightScaler_value     = 5.8541103499e-04 = 1/1708.2015380859
* ----------------------------------------------------------------------------
*  voxelsPerSecond        = inf        
*  time icd update        = -4.5984752655e+01 s
*  ratioUpdated           = 1.0000000000e+02 %
*  totalEquits            = 3.0000000000e+00 
******************************************************************************

************************** Iteration 4  (max. 100) **************************
*  Cost                   = 2.9387775000e+05
*  Rel. Update            = 1.1923358440e+00 % (threshold = 1.9999999553e-02 %)
*  RWFE = ||e||_W/||y||_W = 2.4977116287e-01 % (threshold = 0.0000000000e+00 %)
*  RUFE = ||e|| / ||y||   = 2.4977116287e-01 % (threshold = 0.0000000000e+00 %)
* ----------------------------------------------------------------------------
*  1/M ||e||^2_W          = 2.1523768737e-05 = 1/46460.2656250000
*  weightScaler_value     = 5.8541103499e-04 = 1/1708.2015380859
* ----------------------------------------------------------------------------
*  voxelsPerSecond        = inf        
*  time icd update        = -3.7960006714e+01 s
*  ratioUpdated           = 1.0000000000e+02 %
*  totalEquits            = 4.0000000000e+00 
******************************************************************************

************************** Iteration 5  (max. 100) **************************
*  Cost                   = 2.7758109375e+05
*  Rel. Update            = 8.1949222088e-01 % (threshold = 1.9999999553e-02 %)
*  RWFE = ||e||_W/||y||_W = 2.1028174460e-01 % (threshold = 0.0000000000e+00 %)
*  RUFE = ||e|| / ||y||   = 2.1028174460e-01 % (threshold = 0.0000000000e+00 %)
* ----------------------------------------------------------------------------
*  1/M ||e||^2_W          = 1.5255863218e-05 = 1/65548.5703125000
*  weightScaler_value     = 5.8541103499e-04 = 1/1708.2015380859
* ----------------------------------------------------------------------------
*  voxelsPerSecond        = inf        
*  time icd update        = -3.2097427368e+01 s
*  ratioUpdated           = 1.0000000000e+02 %
*  totalEquits            = 5.0000000000e+00 
******************************************************************************

************************** Iteration 6  (max. 100) **************************
*  Cost                   = 2.6880731250e+05
*  Rel. Update            = 5.8498156071e-01 % (threshold = 1.9999999553e-02 %)
*  RWFE = ||e||_W/||y||_W = 1.8846336007e-01 % (threshold = 0.0000000000e+00 %)
*  RUFE = ||e|| / ||y||   = 1.8846336007e-01 % (threshold = 0.0000000000e+00 %)
* ----------------------------------------------------------------------------
*  1/M ||e||^2_W          = 1.2254273315e-05 = 1/81604.1875000000
*  weightScaler_value     = 5.8541103499e-04 = 1/1708.2015380859
* ----------------------------------------------------------------------------
*  voxelsPerSecond        = inf        
*  time icd update        = -2.6278533936e+01 s
*  ratioUpdated           = 1.0000000000e+02 %
*  totalEquits            = 6.0000000000e+00 
******************************************************************************

************************** Iteration 7  (max. 100) **************************
*  Cost                   = 2.6399109375e+05
*  Rel. Update            = 4.2172038555e-01 % (threshold = 1.9999999553e-02 %)
*  RWFE = ||e||_W/||y||_W = 1.7572914064e-01 % (threshold = 0.0000000000e+00 %)
*  RUFE = ||e|| / ||y||   = 1.7572914064e-01 % (threshold = 0.0000000000e+00 %)
* ----------------------------------------------------------------------------
*  1/M ||e||^2_W          = 1.0654210200e-05 = 1/93859.6093750000
*  weightScaler_value     = 5.8541103499e-04 = 1/1708.2015380859
* ----------------------------------------------------------------------------
*  voxelsPerSecond        = inf        
*  time icd update        = -2.0731437683e+01 s
*  ratioUpdated           = 1.0000000000e+02 %
*  totalEquits            = 7.0000000000e+00 
******************************************************************************

************************** Iteration 8  (max. 100) **************************
*  Cost                   = 2.6138731250e+05
*  Rel. Update            = 3.0517080426e-01 % (threshold = 1.9999999553e-02 %)
*  RWFE = ||e||_W/||y||_W = 1.6828529537e-01 % (threshold = 0.0000000000e+00 %)
*  RUFE = ||e|| / ||y||   = 1.6828529537e-01 % (threshold = 0.0000000000e+00 %)
* ----------------------------------------------------------------------------
*  1/M ||e||^2_W          = 9.7707079476e-06 = 1/102346.7265625000
*  weightScaler_value     = 5.8541103499e-04 = 1/1708.2015380859
* ----------------------------------------------------------------------------
*  voxelsPerSecond        = inf        
*  time icd update        = -1.4922370911e+01 s
*  ratioUpdated           = 1.0000000000e+02 %
*  totalEquits            = 8.0000000000e+00 
******************************************************************************

************************** Iteration 9  (max. 100) **************************
*  Cost                   = 2.5997075000e+05
*  Rel. Update            = 2.2439543903e-01 % (threshold = 1.9999999553e-02 %)
*  RWFE = ||e||_W/||y||_W = 1.6364800930e-01 % (threshold = 0.0000000000e+00 %)
*  RUFE = ||e|| / ||y||   = 1.6364800930e-01 % (threshold = 0.0000000000e+00 %)
* ----------------------------------------------------------------------------
*  1/M ||e||^2_W          = 9.2396412583e-06 = 1/108229.3125000000
*  weightScaler_value     = 5.8541103499e-04 = 1/1708.2015380859
* ----------------------------------------------------------------------------
*  voxelsPerSecond        = inf        
*  time icd update        = -9.2769832611e+00 s
*  ratioUpdated           = 1.0000000000e+02 %
*  totalEquits            = 9.0000000000e+00 
******************************************************************************

************************** Iteration 10 (max. 100) **************************
*  Cost                   = 2.5918081250e+05
*  Rel. Update            = 1.6523006558e-01 % (threshold = 1.9999999553e-02 %)
*  RWFE = ||e||_W/||y||_W = 1.6084817052e-01 % (threshold = 0.0000000000e+00 %)
*  RUFE = ||e|| / ||y||   = 1.6084817052e-01 % (threshold = 0.0000000000e+00 %)
* ----------------------------------------------------------------------------
*  1/M ||e||^2_W          = 8.9261848188e-06 = 1/112029.9453125000
*  weightScaler_value     = 5.8541103499e-04 = 1/1708.2015380859
* ----------------------------------------------------------------------------
*  voxelsPerSecond        = inf        
*  time icd update        = -2.6955559254e+00 s
*  ratioUpdated           = 1.0000000000e+02 %
*  totalEquits            = 1.0000000000e+01 
******************************************************************************

************************** Iteration 11 (max. 100) **************************
*  Cost                   = 2.5873615625e+05
*  Rel. Update            = 1.2248688936e-01 % (threshold = 1.9999999553e-02 %)
*  RWFE = ||e||_W/||y||_W = 1.5910910070e-01 % (threshold = 0.0000000000e+00 %)
*  RUFE = ||e|| / ||y||   = 1.5910910070e-01 % (threshold = 0.0000000000e+00 %)
* ----------------------------------------------------------------------------
*  1/M ||e||^2_W          = 8.7342123152e-06 = 1/114492.2968750000
*  weightScaler_value     = 5.8541103499e-04 = 1/1708.2015380859
* ----------------------------------------------------------------------------
*  voxelsPerSecond        = inf        
*  time icd update        = 2.8624389172e+00 s
*  ratioUpdated           = 1.0000000000e+02 %
*  totalEquits            = 1.1000000000e+01 
******************************************************************************

************************** Iteration 12 (max. 100) **************************
*  Cost                   = 2.5847201562e+05
*  Rel. Update            = 9.2086933553e-02 % (threshold = 1.9999999553e-02 %)
*  RWFE = ||e||_W/||y||_W = 1.5805520117e-01 % (threshold = 0.0000000000e+00 %)
*  RUFE = ||e|| / ||y||   = 1.5805520117e-01 % (threshold = 0.0000000000e+00 %)
* ----------------------------------------------------------------------------
*  1/M ||e||^2_W          = 8.6188902060e-06 = 1/116024.2187500000
*  weightScaler_value     = 5.8541103499e-04 = 1/1708.2015380859
* ----------------------------------------------------------------------------
*  voxelsPerSecond        = inf        
*  time icd update        = 7.7568502426e+00 s
*  ratioUpdated           = 1.0000000000e+02 %
*  totalEquits            = 1.2000000000e+01 
******************************************************************************

************************** Iteration 13 (max. 100) **************************
*  Cost                   = 2.5831706250e+05
*  Rel. Update            = 6.9389507174e-02 % (threshold = 1.9999999553e-02 %)
*  RWFE = ||e||_W/||y||_W = 1.5739466250e-01 % (threshold = 0.0000000000e+00 %)
*  RUFE = ||e|| / ||y||   = 1.5739466250e-01 % (threshold = 0.0000000000e+00 %)
* ----------------------------------------------------------------------------
*  1/M ||e||^2_W          = 8.5470001068e-06 = 1/117000.1171875000
*  weightScaler_value     = 5.8541103499e-04 = 1/1708.2015380859
* ----------------------------------------------------------------------------
*  voxelsPerSecond        = inf        
*  time icd update        = 1.2765851974e+01 s
*  ratioUpdated           = 1.0000000000e+02 %
*  totalEquits            = 1.3000000000e+01 
******************************************************************************

Segmentation fault: 11
dyang37 commented 1 year ago

This PR works fine, despite the seg fault issue, which seems to be an issue independent of this PR (since Marco reproduced the seg fault on master branch). I tested demo_3D_shepp_logan.py and demo_mace3D_fast.py on Purdue cluster, and both works fine. I am not able to reproduce the seg fault issue on either Mac or Purdue cluster.

Maybe we can accept this PR, and then investigate the seg fault issue.

bommaritom commented 1 year ago

Yes, this is my thought as well. The segmentation issue in master can be resolved independently.

cabouman commented 1 year ago

We have a segmentation fault, but that seems to be from the master branch, so we will need to investigate that separately from this PR. Therefore, I'm going to accept this PR.