slimgroup / JUDI.jl

Julia Devito inversion.
https://slimgroup.github.io/JUDI.jl
MIT License
96 stars 30 forks source link

Improve memory overhead and custom types #98

Closed mloubout closed 2 years ago

mloubout commented 2 years ago

Fixes #99

codecov[bot] commented 2 years ago

Codecov Report

Merging #98 (4089fbb) into master (f65e339) will increase coverage by 0.46%. The diff coverage is 90.00%.

@@            Coverage Diff             @@
##           master      #98      +/-   ##
==========================================
+ Coverage   84.69%   85.16%   +0.46%     
==========================================
  Files          30       30              
  Lines        2346     2346              
==========================================
+ Hits         1987     1998      +11     
+ Misses        359      348      -11     
Impacted Files Coverage Δ
src/JUDI.jl 83.33% <ø> (ø)
src/TimeModeling/Modeling/twri_objective_serial.jl 0.00% <0.00%> (ø)
src/TimeModeling/Modeling/fwi_objective_serial.jl 88.00% <60.00%> (-0.47%) :arrow_down:
src/TimeModeling/Modeling/python_interface.jl 91.07% <91.17%> (-1.31%) :arrow_down:
src/TimeModeling/Modeling/distributed.jl 97.43% <100.00%> (ø)
...eling/Modeling/extended_source_interface_serial.jl 75.00% <100.00%> (-1.48%) :arrow_down:
...rc/TimeModeling/Modeling/lsrtm_objective_serial.jl 78.57% <100.00%> (-0.74%) :arrow_down:
src/TimeModeling/Modeling/time_modeling_serial.jl 84.21% <100.00%> (-0.79%) :arrow_down:
src/TimeModeling/Types/GeometryStructure.jl 94.54% <100.00%> (+0.60%) :arrow_up:
src/TimeModeling/Types/judiVector.jl 95.21% <100.00%> (+0.02%) :arrow_up:
... and 4 more

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update f65e339...4089fbb. Read the comment docs.

kerim371 commented 2 years ago

Just in case, it seems that there is a downgrade somewhere as I get exception when trying to run modeling_basec_2D.jl example with save_data_to_disk=true:

ERROR: LoadError: TaskFailedException

    nested task error: TaskFailedException

        nested task error: MethodError: no method matching round(::Vector{Float32})
        Closest candidates are:
          round(::Union{Dates.Day, Dates.Week, Dates.TimePeriod}, ::Union{Dates.Day, Dates.Week, Dates.TimePeriod}, ::RoundingMode{:NearestTiesUp}) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Dates/src/rounding.jl:267
          round(::Union{Dates.Day, Dates.Week, Dates.TimePeriod, Dates.TimeType}, ::Dates.Period) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Dates/src/rounding.jl:282
          round(::Union{Dates.Day, Dates.Week, Dates.TimePeriod, Dates.TimeType}, ::Dates.Period, ::RoundingMode{:Down}) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.6/Dates/src/rounding.jl:273
          ...
        Stacktrace:
          [1] judiVector_to_SeisBlock(d::judiVector{Float32, Matrix{Float32}}, q::judiVector{Float32, Matrix{Float32}}; source_depth_key::String, receiver_depth_key::String)
            @ JUDI ~/.julia/packages/JUDI/aLwWG/src/TimeModeling/Types/judiVector.jl:435
          [2] judiVector_to_SeisBlock
            @ ~/.julia/packages/JUDI/aLwWG/src/TimeModeling/Types/judiVector.jl:420 [inlined]
          [3] write_shot_record(srcGeometry::GeometryIC{Float32}, srcData::Matrix{Float32}, recGeometry::GeometryIC{Float32}, recData::Matrix{Float32}, options::Options)
            @ JUDI ~/.julia/packages/JUDI/aLwWG/src/TimeModeling/Types/judiVector.jl:469
          [4] devito_interface(modelPy::PyCall.PyObject, model::Model, srcGeometry::GeometryIC{Float32}, srcData::Matrix{Float32}, recGeometry::GeometryIC{Float32}, recData::Nothing, dm::Nothing, options::Options)
            @ JUDI ~/.julia/packages/JUDI/aLwWG/src/TimeModeling/Modeling/python_interface.jl:19
          [5] time_modeling(model_full::Model, srcGeometry::GeometryIC{Float32}, srcData::Matrix{Float32}, recGeometry::GeometryIC{Float32}, recData::Nothing, dm::Nothing, op::Char, mode::Int64, options::Options)
            @ JUDI ~/.julia/packages/JUDI/aLwWG/src/TimeModeling/Modeling/time_modeling_serial.jl:37
          [6] (::Base.var"#70#72"{Base.var"#70#71#73"{ExponentialBackOff, Nothing, typeof(time_modeling)}})(::Model, ::Vararg{Any, N} where N; kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
etc...
mloubout commented 2 years ago

Yes sorry. I have added some stuff that are broken working on the backend interface. I should have made a new branch things may be messy right now. I'll revert it and merge the basic changes here next week. So it avoid issues on your side and make it compatible with master.

mloubout commented 2 years ago

@ziyiyin97 can you have quick look. Nothing really changed it's just a bit of cleanup