fix and feature: clean MVMextractmode#381
Draft
DasVinch wants to merge 17 commits into
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
THIS IS A DEMO PR WITH NO INTENTION TO MERGE AS AS
This PR is a re-write of
MVMextractModes.cthat showcases a number of interesting approaches for future development.Summary of changes:
Refactor
linalgebra/MVMextractModes.cto finish removing unused or irrelevant attributes. Sanitize a few segfaults, remove references to fetching images into milk-data by ImageID. [must go to upstream]Remove test file that was not actually testing our production code [upstream]
There's also some fixing to
streamDelay.cthat got bundled here through a few merges.Create a separate module linalgebra2 really just for
linalgebra2/MVMextractModes.cppas a workspaceCreate a test environment adapted to pytest used in conjuction with pyMilk under
/testingWhat I showcase
C++
restrict/__restrictand (char*) forceful string literal casts)backend::matrixMul()has a clear API contract: take data from the float-casted input array and write it to the output stream. Seemvm_auxiliaries.hpp|cppnullptr, it's much easier to keep track.TEST SUITE
testing/is configured as a python module, for tests.testing/testsis a pytest suite (that contains nothing meaningful but the layout) that can be run with/testing>$ pytesttesting/tests/mainsfiles are not executed by default, but pytest can be used to invoke them and run dev sessions. This is what I did for now, in a single fileexperiment_testing.Timings 1/3 better on CPU (mostly because masking got factored in), a few % on GPU.
What's not great (in this impementation of the MVM): error checking.
Nits: