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

Better driver needed #2

Closed
jhueckelheim opened this issue Mar 8, 2017 · 1 comment
Closed

Better driver needed #2

jhueckelheim opened this issue Mar 8, 2017 · 1 comment

Comments

@jhueckelheim
Copy link

The current driver function is taken from the example code in the Revolve reference implementation. It does not do anything useful, and simply prints the actions that Revolve is requesting. It would be nice to have a driver that accepts <objects/function pointers/callbacks/something nice and pythonic> to actually do a useful computation, so that the user only needs to provide the worker functions and pyrevolve does all the rest. This is very simple in principle, but not yet sure how to do this nicely so that potential users can embed pyrevolve into their codes with minimum effort. To be discussed.

jhueckelheim pushed a commit that referenced this issue May 19, 2017
… now pass operators and a checkpoint object, pyrevolve does the rest.
@jhueckelheim
Copy link
Author

The interface for pyrevolve has been completely overhauled as discussed in devitocodes/devito#216. Closing this issue.

aluamorim pushed a commit to aluamorim/pyrevolve that referenced this issue Mar 9, 2021
Wrapper around libadjoint Revolve implementations. Now contains online and multistage checkpointing. C++ code needs cleanup to remove warnings and missing functions.

updated readme to reflect new interface

removed function that is missing in C implementation from wrapper

removed sections that only applied to the old wrapper

improved wrapper: error handling, moved helper functions outside, as they are supposed to help the user find the right sizes /before/ creating an object

added a convenience function that takes operators and handles the checkpointing

functioning prototype for the devito-like Revolve wrapper

cleanup in the wrapper, removed some print statements

updated license, prettified code.

nicer examples to illustrate Revolve

slightly improved example code formatting

flake8 is happy

added check if symbols are passed as a dictionary, made Flake8 happy, made CRevolve a separete instance for each pyrevolve object.

Rewrote API to improve separation of concerns. Fixes Issue devitocodes#2. We can now pass operators and a checkpoint object, pyrevolve does the rest.

Update README.md

updated readme to reflect new API

Fixed compilation error. This may cause race conditions when more than one CRevolve object is used at the same time.

add missing file

removed file again

Fix for python3

Add Operator ABC + change to new-style classes

Add dtype to CheckpointStorage and add extra forward to align computations

Update example to pass dtype

Adding a requirements file and some basic travis testing.

Still trying to get travis working

Flake

Hide the crevolve import in setup.py to give setuptools a chance to install Cython if not present

Setup: `pyrevolve.crevolve` is not a package

Test python 2 as well as 3

Import python2 style if python 3 style fails

suppress uncalled for verbosity

Fix issue 4: wrong argument order in multistage

Add versioneer for automatic version numbering

Add package metadata to setup.py

Add pyx files to MANIFEST.in

Make sure the provided action is something we understand

Add basic testing

Enable testing

Flake

Move utility functions out so they can be reused between tests

Add blank line

Ignore errors in versioneer

Add initial infra for compression

Separate the scheduler

add blosc compression

Add configurable compression params

Some cleanup

improving parameter handling

Add tests for compression

Allow parameters to be passed to the compression scheme

Add ZFP compression scheme

Flake

Add a complete forward-backward test that can be expanded to test compression

Add blosc to requirements

Dirty hack to get travis to use zfp (because I'm too lazy to build a proper installation procedure for pyzfp)

Fix flake issues

Add contexttimer to reqs

The complete forward-backward now works with zfp

Changing APIs to hide the details of ByteStorage and compression

All tests passing with new API

All tests pass

Add some logging + custom pickling functionality. This version works fine

Some cleanup

Add built-in profiler for pyrevolve

Add counts to profiling

Add more options to profiler

Change to using copyto to copy

Suppress console output from Revolve

Change the API such that no excess data is copied over

Add tools

Profile storage

Clean up by moving some code into separate files

Adding missing files

Some more changes

Flake fixes

Compression seems to work

Enable testing on multiple GCC versions

Still trying to get travis to accept osx+python combo

Fix modern example

Add requirements to Manifest

Fix to cython version 2

Fix typo

Remove pxd file

Add back flake dependency to continue lint on CI

Change the reference to tools

Add static schedule generator

Better directory structure and README

Flakey changes

Make travis test pip installation

Update tests and travis build

Update travis build

Create pythonpublish.yml

Update README

Create CI workflow using GitHub Actions

remove requirements and flake8

add flake8 & pytest-linux/macOS

Added DiskStorage class to storage.py to store checkpoints to disk

Adding DiskStorage class to storage.py file

Created DiskRevolver and MemoryRevolver classes from Revolver. Renamed Revolver to BaseRevolver. Kept the name Revolver as MemoryRevolver for backward compatibility.

The following changes were performed:

1 - Revolver class was split into:
	- BaseRevolver, which implements the the revolver
	FSM and receives a storage object as parameter;
	- DiskRevolver is an specialization of BaseRevolver
	that uses DiskStorage as storage method.
	- MemoryRevolver is an specialization of BaseRevolver
	that uses MemoryStorage as storage method.
	- The name Revolver was kept in the module
	for backward compatibility. If the user uses
	the name Revolver it reverts to MemoryRevolver as original.

2 - DiskStorage class implements the same
interface as NumpyStorage, but saving data to
a .dat file. The file path can be passed as parameter.

3 - Two test cases were added to validate memory and disk revolver classes.

Removed bin files from tests/

Separated R/W file streams in storage.py. Re-wrote test_diskckp.py and test_memckp.py removing devito dependency.

Fixed some flake8 related format issues

Fixed some other flake8 related format issues

Added thread Id to DiskStorage .dat file name; DiskStorage class now receives 'filedir' instead of 'filename'; BaseRevolver class was made abstract, forcing the user to instatiate either Memory or DiskRevolver objects.

Added 'multi/singlefile' option to DiskRevovler and DiskStorage classes, enabling the user to store checkpoints in a single file or with one file per checkpoint; Added new tests for diskckp using multiple files.

Using PID to identify checkpoint files uniquely instead of Thread ID

Using PID to identify checkpoint files uniquely instead of Thread ID

Removed 'print' calls; Added 'singlefile' parameter to test_diskckp.py to remove redundant tests

Joined test_memckp.py and test_diskckp.py files using diskckp flag

Move tests in test_diskckp.py to test_storage.py

Removed bin files from tests/

Separated R/W file streams in storage.py. Re-wrote test_diskckp.py and test_memckp.py removing devito dependency.

Added thread Id to DiskStorage .dat file name; DiskStorage class now receives 'filedir' instead of 'filename'; BaseRevolver class was made abstract, forcing the user to instatiate either Memory or DiskRevolver objects.

Using PID to identify checkpoint files uniquely instead of Thread ID

suppress uncalled for verbosity

Fix issue 4: wrong argument order in multistage

Add pyx files to MANIFEST.in

Add blank line

Separate the scheduler

add blosc compression

Add more options to profiler

Change to using copyto to copy

Add tools

Still trying to get travis to accept osx+python combo

Fix modern example

Add requirements to Manifest

Fix to cython version 2

Fix typo

Remove pxd file

Add back flake dependency to continue lint on CI

Change the reference to tools

Add static schedule generator

Better directory structure and README

Flakey changes

Update travis build

Create pythonpublish.yml

Update README

Removed bin files from tests/

Create CI workflow using GitHub Actions

remove requirements and flake8

add flake8 & pytest-linux/macOS

Using PID to identify checkpoint files uniquely instead of Thread ID

Removed test_diskckp.py. Tests moved to test_storage.py
aluamorim added a commit to aluamorim/pyrevolve that referenced this issue Mar 9, 2021
    Wrapper around libadjoint Revolve implementations. Now contains online and multistage checkpointing. C++ code needs cleanup to remove warnings and missing functions.

    updated readme to reflect new interface

    removed function that is missing in C implementation from wrapper

    removed sections that only applied to the old wrapper

    improved wrapper: error handling, moved helper functions outside, as they are supposed to help the user find the right sizes /before/ creating an object

    added a convenience function that takes operators and handles the checkpointing

    functioning prototype for the devito-like Revolve wrapper

    cleanup in the wrapper, removed some print statements

    updated license, prettified code.

    nicer examples to illustrate Revolve

    slightly improved example code formatting

    flake8 is happy

    added check if symbols are passed as a dictionary, made Flake8 happy, made CRevolve a separete instance for each pyrevolve object.

    Rewrote API to improve separation of concerns. Fixes Issue devitocodes#2. We can now pass operators and a checkpoint object, pyrevolve does the rest.

    Update README.md

    updated readme to reflect new API

    Fixed compilation error. This may cause race conditions when more than one CRevolve object is used at the same time.

    add missing file

    removed file again

    Fix for python3

    Add Operator ABC + change to new-style classes

    Add dtype to CheckpointStorage and add extra forward to align computations

    Update example to pass dtype

    Adding a requirements file and some basic travis testing.

    Still trying to get travis working

    Flake

    Hide the crevolve import in setup.py to give setuptools a chance to install Cython if not present

    Setup:  is not a package

    Test python 2 as well as 3

    Import python2 style if python 3 style fails

    suppress uncalled for verbosity

    Fix issue 4: wrong argument order in multistage

    Add versioneer for automatic version numbering

    Add package metadata to setup.py

    Add pyx files to MANIFEST.in

    Make sure the provided action is something we understand

    Add basic testing

    Enable testing

    Flake

    Move utility functions out so they can be reused between tests

    Add blank line

    Ignore errors in versioneer

    Add initial infra for compression

    Separate the scheduler

    add blosc compression

    Add configurable compression params

    Some cleanup

    improving parameter handling

    Add tests for compression

    Allow parameters to be passed to the compression scheme

    Add ZFP compression scheme

    Flake

    Add a complete forward-backward test that can be expanded to test compression

    Add blosc to requirements

    Dirty hack to get travis to use zfp (because I'm too lazy to build a proper installation procedure for pyzfp)

    Fix flake issues

    Add contexttimer to reqs

    The complete forward-backward now works with zfp

    Changing APIs to hide the details of ByteStorage and compression

    All tests passing with new API

    All tests pass

    Add some logging + custom pickling functionality. This version works fine

    Some cleanup

    Add built-in profiler for pyrevolve

    Add counts to profiling

    Add more options to profiler

    Change to using copyto to copy

    Suppress console output from Revolve

    Change the API such that no excess data is copied over

    Add tools

    Profile storage

    Clean up by moving some code into separate files

    Adding missing files

    Some more changes

    Flake fixes

    Compression seems to work

    Enable testing on multiple GCC versions

    Still trying to get travis to accept osx+python combo

    Fix modern example

    Add requirements to Manifest

    Fix to cython version 2

    Fix typo

    Remove pxd file

    Add back flake dependency to continue lint on CI

    Change the reference to tools

    Add static schedule generator

    Better directory structure and README

    Flakey changes

    Make travis test pip installation

    Update tests and travis build

    Update travis build

    Create pythonpublish.yml

    Update README

    Create CI workflow using GitHub Actions

    remove requirements and flake8

    add flake8 & pytest-linux/macOS

    Added DiskStorage class to storage.py to store checkpoints to disk

    Adding DiskStorage class to storage.py file

    Created DiskRevolver and MemoryRevolver classes from Revolver. Renamed Revolver to BaseRevolver. Kept the name Revolver as MemoryRevolver for backward compatibility.

    The following changes were performed:

    1 - Revolver class was split into:
            - BaseRevolver, which implements the the revolver
            FSM and receives a storage object as parameter;
            - DiskRevolver is an specialization of BaseRevolver
            that uses DiskStorage as storage method.
            - MemoryRevolver is an specialization of BaseRevolver
            that uses MemoryStorage as storage method.
            - The name Revolver was kept in the module
            for backward compatibility. If the user uses
            the name Revolver it reverts to MemoryRevolver as original.

    2 - DiskStorage class implements the same
    interface as NumpyStorage, but saving data to
    a .dat file. The file path can be passed as parameter.

    3 - Two test cases were added to validate memory and disk revolver classes.

    Removed bin files from tests/

    Separated R/W file streams in storage.py. Re-wrote test_diskckp.py and test_memckp.py removing devito dependency.

    Fixed some flake8 related format issues

    Fixed some other flake8 related format issues

    Added thread Id to DiskStorage .dat file name; DiskStorage class now receives 'filedir' instead of 'filename'; BaseRevolver class was made abstract, forcing the user to instatiate either Memory or DiskRevolver objects.

    Added 'multi/singlefile' option to DiskRevovler and DiskStorage classes, enabling the user to store checkpoints in a single file or with one file per checkpoint; Added new tests for diskckp using multiple files.

    Using PID to identify checkpoint files uniquely instead of Thread ID

    Using PID to identify checkpoint files uniquely instead of Thread ID

    Removed 'print' calls; Added 'singlefile' parameter to test_diskckp.py to remove redundant tests

    Joined test_memckp.py and test_diskckp.py files using diskckp flag

    Move tests in test_diskckp.py to test_storage.py

    Removed bin files from tests/

    Separated R/W file streams in storage.py. Re-wrote test_diskckp.py and test_memckp.py removing devito dependency.

    Added thread Id to DiskStorage .dat file name; DiskStorage class now receives 'filedir' instead of 'filename'; BaseRevolver class was made abstract, forcing the user to instatiate either Memory or DiskRevolver objects.

    Using PID to identify checkpoint files uniquely instead of Thread ID

    suppress uncalled for verbosity

    Fix issue 4: wrong argument order in multistage

    Add pyx files to MANIFEST.in

    Add blank line

    Separate the scheduler

    add blosc compression

    Add more options to profiler

    Change to using copyto to copy

    Add tools

    Still trying to get travis to accept osx+python combo

    Fix modern example

    Add requirements to Manifest

    Fix to cython version 2

    Fix typo

    Remove pxd file

    Add back flake dependency to continue lint on CI

    Change the reference to tools

    Add static schedule generator

    Better directory structure and README

    Flakey changes

    Update travis build

    Create pythonpublish.yml

    Update README

    Removed bin files from tests/

    Create CI workflow using GitHub Actions

    remove requirements and flake8

    add flake8 & pytest-linux/macOS

    Using PID to identify checkpoint files uniquely instead of Thread ID

    Removed test_diskckp.py. Tests moved to test_storage.py
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

No branches or pull requests

1 participant