Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ojalgo #57

Merged
merged 13 commits into from
Aug 17, 2022
Merged

Ojalgo #57

merged 13 commits into from
Aug 17, 2022

Conversation

RoyalBoggs
Copy link
Collaborator

Conversion from Jama library to Ojalgo for matrix multiplication

RoyalBoggs and others added 6 commits August 1, 2022 18:12
return to previous ojalgo branch
saved roughly tenth of second
tested and Ojalgo arrays not the best for simply setting and getting array elements, thus used double[]
@bowring
Copy link
Member

bowring commented Aug 8, 2022

getting there! now down to < 0.5 sec;

Elapsed time = 0.487 seconds for 1000 realizations of total = 47000
Intervals: in microseconds, each from prev or zero time till new interval Interval1 211 Interval2 217 Interval3 13 Interval4 96 Interval5 27

see what it will take to to serialize the MatrixStore in EnsembleRecord - this is a lead: http://javadox.com/org.ujmp/ujmp-ojalgo/0.3.0/serialized-form.html

bowring and others added 2 commits August 11, 2022 14:33
also avoided serialized issue with conversion to array
@bowring
Copy link
Member

bowring commented Aug 12, 2022

speed is improving well:
%%%%%%%%%%%%%%%%%%%%%%% Tripoli in Java test %%%%%%%%%%%%%%%%%%%%%%%
Elapsed time = 0.423 seconds for 1000 realizations of total = 50000
Error function = 2978.623
Change Log Ratio: 149.0 of 150.0 accepted (97.966% total)
Change Intensity: 326.0 of 522.0 accepted (66.735% total)
Change DF Gain: 57.0 of 74.0 accepted (77.148% total)
Change Baseline: 23.0 of 82.0 accepted (35.326% total)
Noise: 27.0 of 172.0 accepted (19.020% total)
Intervals: in microseconds, each from prev or zero time till new interval Interval1 95 Interval2 170 Interval3 11 Interval4 94 Interval5 18

Elapsed time = 0.197 seconds for 1000 realizations of total = 50000
Error function = 2978.482
Change Log Ratio: 152.0 of 152.0 accepted (97.535% total)
Change Intensity: 341.0 of 512.0 accepted (66.744% total)
Change DF Gain: 56.0 of 74.0 accepted (76.736% total)
Change Baseline: 32.0 of 92.0 accepted (34.373% total)
Noise: 30.0 of 170.0 accepted (18.913% total)
Intervals: in microseconds, each from prev or zero time till new interval Interval1 43 Interval2 53 Interval3 5 Interval4 88 Interval5 6

next fix catching error
Possible fix
probably need to not return a null
@bowring
Copy link
Member

bowring commented Aug 13, 2022

I am merging another PR from myself first - did some refactoring and tweaking as I found a bug in the logic.

Once you fix the conflicts, I am willing to merge this.

looking faster!
%%%%%%%%%%%%%%%%%%%%%%% Tripoli in Java test %%%%%%%%%%%%%%%%%%%%%%%
Elapsed time = 0.391 seconds for 1000 realizations of total = 50000
Error function = 2972.754
Change Log Ratio: 160.0 of 163.0 accepted (98.014% total)
Change Intensity: 362.0 of 518.0 accepted (66.867% total)
Change DF Gain: 70.0 of 84.0 accepted (77.615% total)
Change Baseline: 24.0 of 64.0 accepted (34.393% total)
Noise: 41.0 of 171.0 accepted (19.331% total)
Intervals: in microseconds, each from prev or zero time till new interval Interval1 74 Interval2 172 Interval3 12 Interval4 81 Interval5 21

@RoyalBoggs
Copy link
Collaborator Author

Currently broken wait for next commit

Need to clean code of tests I was doing, atm slower then previous baseline. Does blockIntensities in DataModellerOutputRecord need to be a 2 dimensional array or 1? Its treated as both in different parts of the code. Current implementation I changed it too is 1 however I'm guessing when multiple blocks are involved will need to be a 2 dimensional array.
@bowring
Copy link
Member

bowring commented Aug 17, 2022

@RoyalBoggs - good work! I am merging and then doing a pull request for my additional work including a cleanup of the driverExperiement ... stand by. Then do another pass and make sure we have all the speedups we can get - see my intervals below:

%%%%%%%%%%%%%%%%%%%%%%% Tripoli in Java test %%%%%%%%%%%%%%%%%%%%%%%
Elapsed time = 0.420 seconds for 1000 realizations of total = 50000
Error function = 3085.133
Change Log Ratio: 168.0 of 169.0 accepted (97.760% total)
Change Intensity: 337.0 of 507.0 accepted (66.706% total)
Change DF Gain: 77.0 of 98.0 accepted (78.815% total)
Change Baseline: 28.0 of 64.0 accepted (33.976% total)
Noise: 27.0 of 162.0 accepted (18.626% total)
Intervals: in microseconds, each from prev or zero time till new interval Interval1 96 Interval2 183 Interval3 7 Interval4 111 Interval5 21

@bowring bowring merged commit 387e4e9 into CIRDLES:main Aug 17, 2022
@RoyalBoggs RoyalBoggs deleted the ojalgo branch August 17, 2022 17:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants