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

Extended tensor operations #61

Merged
merged 72 commits into from
Jan 22, 2024
Merged

Extended tensor operations #61

merged 72 commits into from
Jan 22, 2024

Conversation

inakleinbottle
Copy link
Contributor

Added "tensor_functions" submodule for additional functions on the tensor algebra that are not yet implemented efficiently in RoughPy core. Currently this just includes Log - the linear extension of the log function defined on the group-like elements to the whole tensor algebra.

Also fixed a bug in scalar arithmetic where values were truncated due to the lack of type promotion.

This allows use to have fairly complex code for producing error messages because it is hidden away in a shared library.
@inakleinbottle inakleinbottle merged commit 2e41f59 into main Jan 22, 2024
1 check passed
@inakleinbottle inakleinbottle deleted the extended-tensor-operations branch January 22, 2024 12:55
inakleinbottle added a commit that referenced this pull request Jan 26, 2024
* Added reverse method to PyTensorKey

* Add concatenation operator for tensor keys

* Add new header for hash functor

* add hash_value method to basis objects.

* Add hash method to PyTensorKey

* added context method to algebra types.

* added coeff lookup by key type.

* Implemented intermediate keytype lookup for lie keys

* Oops missed virtual

* Actually declare friend function in namespace

* Added basis to pytensorkey python interface

* Fixed an issue with type deduction in basis interface

* Added to_letters method to tensorkey python interface

* Added arithmetic between scalars and ints/doubles

* Moved error macros and support to platform

This allows use to have fairly complex code for producing error messages because it is hidden away in a shared library.

* add boost stacktrace to dependencies

* pass backtrace as argument to get the locality right.

* Fixed need to call function to get pointer

* Fixed a potential bug caused by trivial bytes 0

* No address of for array.

* is_mutable convenience function

* Fixed bug not assigning zero trivial bytes

* debug assertion

* Formatting

* Switch to dst_info to avoid needing a new constructor

* short circuit if lhs is zero.

* add borrowed scalar test

* Fixed argument order for r operators

* Fixed cause of segfault in scalar repr

* Add debug assertions

* Add more debug assertions

* Fix a bug that leads to unset type after copy zero

* More tests for scalars

* Adding tensor functions

* Changed implementation of eq operator for basis objects

* Added richcompare function to pycontext

* allow assigning of scalars in constructors

* Fixed a bug in is_pointer_zero

* Add test for Log

* Handle scalar arg in check_and_set_dtype

* More intelligent handling for copying from opaque pointer

* Implement assignment for owned pointers

* oops missed part

* copy interfaces as if they were opaque pointers

* use enumeration aware function

* perform a true copy on assignment from opaque pointer

* remove unused define

* formatting

* fixed semantics of assigment move operator

* Implemented ScalarMeta_call

* Raw python pointer st-pst

* preparations for moving static python scalar type

* extended tests for scalars

* finish test for adjoint

* remove print

* change type and packed pointer access

* formatting

* remove some compiler warnings

* implemented type promotion for scalars

* formatting

* update CMakeLists.txt

* various updates for debugging

* implement operators by hand

* remove debug print

* remove debug print

* Fix the implementation of divide to use type promotion

* fill out the missing promotion modes

* remove debug format function

* added docstrings

* update changelog

* Fixed incorrect type promotion in float

* relative import for init
inakleinbottle added a commit that referenced this pull request Mar 5, 2024
* started working on docs.

* Fix dir where sphinx looks for doxyfile

* Optional disable linking to blas

* Set INSTALL_RPATH always, update on Apple. This is broken by vcpkg bug

* to_letter implementation

* Fix bad construction of PyLieKey

* bump lal.

* Serialization (#42)

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* removed print

* added new macros for external library types

* added serialization for all the scalar types

* added instantiations of the archive types

* Added serialization for enum types

* Special load/save functions for JSON output.

* Separate out implementations

* just so many improvements

* added all the includes of the concrete types header

* fixed some more serialization includes

* massive restructuring of algebra

* Implement __setstate__ for monomial.

* Many steps of debugging.

* Back to release mode

* Fixed missing include of types header

* Update the actions, hopefuly should stop the automatic publish.

* Update changelog

* Setup binary caching in action

* Bump version

* delete old action, fix condition

* Fix quotes?

* Fixed size type in scalar serialization.h

* remove boost::filesystem as a requirement

* cast to size_t

* Updat cibuildwheel version

* Use cereal::size_type????

* allow dynamic linkage on windows. Because, Windows -.-

* force lvalue size_type

* fix boost versions in manifest.

* fixed another bad size_type

* remove boost log dependency

* Fix another size_type

* more size_types.

* missing headers in lie_interface.cpp

* makes sure all necessary headers are included

* Disable C4661 in headers

* Fix number

* Always include "types.h" along with "scalar_type.h"

* Implement the common types in main header.

* Define all the integer type specializations

* autolinking and boost

* Link boost in rpy module

* revert to static libs.

* Force auto link

* force link with comment

* For god's sake stop trying to instantiate templates

* Adding sig log sig example

* Update git ignore

* WIP documentation, add files for streams, free tensors, shuffle tensors, lies, contexts and intervals

* WIP: Building a user guide

* WIP: Integrate old markdown files into new user guide

* Adding build from source instructions

* Adding readme description to main page

* Add normal install instructions

* Add readme comments on intervals in roughpy

* Added readme comments to absolute beginners

* Add contributing to roughpy comments

* Add release notes pages

* Add release page entries

* Move github page readme info to quickstart

* Fix API reference documentation generation

* Turn off todos

* Add warning messages, page under construction

* Move note on intervals to absolute beginners

* Add page of literature references

* WIP: Create location for notebooks to be rendered

* Add datasig signature applications tutorials

* Add IPython, removes warnings

* Add comment on tutorials

* Add 8 release notes

* Add 7 release notes

* Add 6 release notes

* Add 5 release notes

* Add 4 release notes

* Add 3 release notes

* Add 2 release notes

* Add 1 release notes

* WIP: Copy of notebooks, to be changed to use RoughPy

* WIP: MNIST new notebook with RoughPy

* Migrating MNIST to use RoughPy, possibly refactoring functions

* Examples as submodule

* remove downloaded examples

* change tutorials names

* sepsis name change

* WIP: What is rough py. Added brief text, references, video, todos

* Fix video not playing

* What is roughpy ref change

* Move intervals explanation to intervals page

* Add Sam's abs beginners page with anagrams example

* Remove quickstart page

* Trim what is roughpy video

* Change page link

* Remove old todos

* Turn off todos

* Update README.md (#47)

* Update list_basis_keys.py

* Update README.md (#48)

* Update README.md

* Update README.md

* Update README.md

* Update VERSION.txt

* Develop (#55)

* Optional disable linking to blas

* Set INSTALL_RPATH always, update on Apple. This is broken by vcpkg bug

* to_letter implementation

* Fix bad construction of PyLieKey

* bump lal.

* Serialization (#42)

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* removed print

* added new macros for external library types

* added serialization for all the scalar types

* added instantiations of the archive types

* Added serialization for enum types

* Special load/save functions for JSON output.

* Separate out implementations

* just so many improvements

* added all the includes of the concrete types header

* fixed some more serialization includes

* massive restructuring of algebra

* Implement __setstate__ for monomial.

* Many steps of debugging.

* Back to release mode

* Fixed missing include of types header

* Update the actions, hopefuly should stop the automatic publish.

* Update changelog

* Setup binary caching in action

* Bump version

* delete old action, fix condition

* Fix quotes?

* Fixed size type in scalar serialization.h

* remove boost::filesystem as a requirement

* cast to size_t

* Updat cibuildwheel version

* Use cereal::size_type????

* allow dynamic linkage on windows. Because, Windows -.-

* force lvalue size_type

* fix boost versions in manifest.

* fixed another bad size_type

* remove boost log dependency

* Fix another size_type

* more size_types.

* missing headers in lie_interface.cpp

* makes sure all necessary headers are included

* Disable C4661 in headers

* Fix number

* Always include "types.h" along with "scalar_type.h"

* Implement the common types in main header.

* Define all the integer type specializations

* autolinking and boost

* Link boost in rpy module

* revert to static libs.

* Force auto link

* force link with comment

* For god's sake stop trying to instantiate templates

* Adding sig log sig example

* Update git ignore

* Open cl core (#49)

* Added all te basic headers/types

* Removed old code.

* Fixed some outstanding bad names

* Added size to queue

* Added basic launch functions for kernels.

* Added all the ocl impls.

* Fixed a type difference causing warnings in compiles

* Refactored to make data types of interfaces private.

* Change the model to something more sane.

* Added some methods for paths.

* Small updates.

* uuids and pci bus info

* fixed calls to get string info from ocl types

* Added some utility functions to core

* Added outlines for cpu device.

* Added device providers.

* Added strict to one condition

* formatting

* Rename the device namespace to avoid conflicts.

* add methods for getting device to scalar type

* Removed print statement

* Small fixes

* Do not throw exceptions in constructor and instead do not continue upon error.

* Use clear candidates

* Added CPUdevice tests

* Fixed missing negation

* implemented alloc and free on cpu device

* Added kernel framework

* removed owning method

* changed raw_free signature

* Constructors and reference counts

* Changed the way CPUBuffers are implemented

* Various updates.

* Moved type definitions to devices

* masked_unary kernels

* A few more changes

* Removed ocl kernel from cpu kernel

* added test for gpu device.

* fix cpu provider

* Many improvements to device support

* Started work on calling pattern for kernels

* That arg design wasn't right. Reconsider

* Fix name in equality for scalar info

* Fix bits to bytes

* Fix bits to bytes

* Fix bits to bytes

* Fix bits to bytes

* Fix bits to bytes

* Fix bits to bytes

* Fix a bug in the compile command

* implement OCLVersion to aid version semantics

* Check successful rather than dbg assert

* Oops missed cmake for ocl_version

* Much more elegant kernel argument handling

* added interface accessor methods.

* Refactored launch interface.

* Updated launch methods for ocl kernels

* temp fixed missing enum values in switches

* Fixed a few compilation issues.

* Add constructors to kernel params

* Fixed construction of temporary args in kernel launch functions

* Added as_slice utility to buffers

* Added inherited construct method for buffer implementations

* Added inherited construct method for buffer implementations

* Fixed broken condition in kernel launch checks

* OCLBuffer ptr now returns a pointer to cl_mem

* Added scoped guard helpers for cl types

* Cleaned up implementation of ocl kernel launch

* Added overrides for ptr methods on ocl queues

* Added replace 0 alignment with max alignment

* Introduce special device type for the host device

* Meta header for device library

* Added to_device methods to buffer objects.

* Added to_host and from_host data movement methods to device_handle

* Update CMakeLists.txt

* Implement new to_device interface for CPUBuffers

* Implemented new to_buffer interface and removed inc/dec _ref methods

* Fixed formatting

* Fixed formatting

* implemented to/from host methods

* implemented to/from host methods

* implemented to/from host methods

* Updated test to use new api

* include the meta header for devices

* Rename "get_cpu_device" to "get_host_device"

* do not compile unused kernels

* refactor cpu to host

* added "compute_delegate" method to host devices

* fixed includes

* Removed reference to unused kernel.

* Changed signature of to_host function

* Implemented to_device for ocl buffers

* Switch to internally referenced countered intrusive pointer model

* Added map/unmap basics

* Completed implementation of buffer mapping

* Getting started with the new scalars module

* Delete usings for move and forward

* Add is_trivially_destructible

* Added constlog2 compute struct

* Changed the implementation of type_info_of

* Streamlining the implementation of scalars

* Streamlining the implementation of scalars

* Started work on scalar_array.cpp

* Started work on scalar_array.cpp

* Implement copy and move constructors

* Added raw observer methods to ScalarArray

* added scalar type stubs

* delete old files

* include archive header

* include archive header

* key scalar array

* More work on scalar arrays

* Lots of fixes in vertical integration

* re-implement (key)scalarstream

* Fixed incompatibility between alignas and export

* Added unreachable return

* implement virtual methods

* IMplement scalar stream

* Added virtual destructor

* Bring in the random generator impls.

* Fix various issues in the roughpy modules caused by new impl.

* Fix various issues in the roughpy modules caused by new impl.

* added != operator

* Added unreachable return

* added as_mut_slice to buffer

* Lots of work on scalar_type impls

* No discard

* Start with serialization (again)

* Fiddle with the serialization definitions

* Started fixing bugs

* Started fixing bugs

* Fixed type of error thrown in tests to match updated interface

* Implemented scalar division

* Bump libalgebra_lite

* DOn't use function object

* Added conversion to non-const to const slice

* Fixed a few issues

* Oops accidentally added source to BLAS target

* FIxed bad width in test

* Implemented lost of stuff

* implemented register_rng_getter

* Fixed some remaining segfaults in python module

* few small updates

* Added to_float method

* Fixed key allocation

* Fixed no string use default rng

* Moved stream out operator to main header

* Fixed change in scalar semantics

* avoid multiple calls

* roundup divide

* Use slice operator[]

* fix return in branch

* added missing implementation

* Removed duplicate check

* precompile only the lal dependency

* Get the path correct

* removed reference to device_handle header in kernel.h

* fixed now missing include in kernel.cpp

* Missed implementing destructor

* Force debug macros?

* Extra assert.

* Rework allocate function to check size > 0

* Check correct setup after allocation

* Oops misspelled macro condition

* Fixed conditions

* Type deduction fix (#51)

* update changelog

* minor adjustment to stype algorithm

* Added extra tests

* Added type deduction tests for major constructors

* Do not gate scalar type based on integer size, just use double

* rework type deduction in dlpack parsing

* formatting?

* Update CHANGELOG

* Fix conversion to numpy (#52)

* Added tests for to_array functionality

* Stream out operator for TypeInfo

* formatting

* basis function for algebra types

* enhanced framework for converting from algebra to array.

* remove some redundant asserts

* remove cvref on type deductions

* formatting

* always import numpy if available

* lots of little details

* moved some functions around to make them accessible

* formatting

* formatting

* imort numpy function

* moved definition of __array__ to numpy files

* formatting

* Create zeroed array first

* Added missing zeros to expected arrays

* no ownership test - everything copies for now

* Added test for array of rationals

* fixed some issues with scalar allocations

* Updated changelog

* Added test for poly scalars to_array

* Fixed missing break in switch statement.

* Precompiled headers, shuffled instantiations, etc. to make build times better

* Fix containinterval issues (#54)

* Guard against allocating zero

* Added resolution getter for streams

* Added tests for interval alignment

* Added param to resolution helper function

* Updated to set resolution if not set.

* Changed to use a single dispatch rather than multiple, added check for intervals smaller than minimum.

* Minor changes

* Oops, removed debug code

* Additional changes

* shortcircuit trivial cases

* formatting

* default resolution change

* added refine interval method and changes

* handle resolutions above stream resolution

* formatting

* impl refine interval method

* formatting

* improve output

* add new test

* Use optional to store resolution so the inference is used if none is given

* Simplified the implementation of methods

* Use default resolution

* Update tests for new behaviour

* use default resolution

* Update changelog

* Fixed bug in clone method

* MSVC template instantiation again -.-

* do not reference subordinates in device_handle, leave open option of including in component headers

* thankyou msvc for providing no information

* MSVC just cannot help itself.

* Ok device_handle.h needs the subordinates

* put definition in namespace?

* no inline definition

* use alternative copy-convert

* borrow the update value for call to interface.

* change up the constructors slightly.

* use the gmp package instead of mpir since it is supported on all platforms

* force set the variables fphse

* Fixed link option over compile option

* use shared libs for gmp

* OOps unset gmp setting

* Fix adding bignum as runtime dependency

* set rpath on macos

* bump lal

* do not set rpath on apple and make cache var

* disable coeff test until bugs can be found

* let delocate find the libraries?

* use @loader_path?

* Really please don't use the SONAME

* after bignum loaded

* disable apple rpath everywhere

* bump libalgebra_lite

* debug info in vcpkg

* try installing runtime dependencies via cmake

* Ooops got it in the wrong place

* framework destination

* no need to install mkl at the moment

* excludes

* remove dependence on bignum from device component

* Allow static gmp

* no runtime deps

* no vcpkg gmp on apple

* moved triplets to tools dir

* remove unused port files

* added empty overlay for gmp

* install gtest only when building

* bump VERSION.txt

---------

Co-authored-by: Philippa Rubin <philippa.rubin@stfc.ac.uk>

* Merge updates from develop for last time (#59)

* Optional disable linking to blas

* Set INSTALL_RPATH always, update on Apple. This is broken by vcpkg bug

* to_letter implementation

* Fix bad construction of PyLieKey

* bump lal.

* Serialization (#42)

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* removed print

* added new macros for external library types

* added serialization for all the scalar types

* added instantiations of the archive types

* Added serialization for enum types

* Special load/save functions for JSON output.

* Separate out implementations

* just so many improvements

* added all the includes of the concrete types header

* fixed some more serialization includes

* massive restructuring of algebra

* Implement __setstate__ for monomial.

* Many steps of debugging.

* Back to release mode

* Fixed missing include of types header

* Update the actions, hopefuly should stop the automatic publish.

* Update changelog

* Setup binary caching in action

* Bump version

* delete old action, fix condition

* Fix quotes?

* Fixed size type in scalar serialization.h

* remove boost::filesystem as a requirement

* cast to size_t

* Updat cibuildwheel version

* Use cereal::size_type????

* allow dynamic linkage on windows. Because, Windows -.-

* force lvalue size_type

* fix boost versions in manifest.

* fixed another bad size_type

* remove boost log dependency

* Fix another size_type

* more size_types.

* missing headers in lie_interface.cpp

* makes sure all necessary headers are included

* Disable C4661 in headers

* Fix number

* Always include "types.h" along with "scalar_type.h"

* Implement the common types in main header.

* Define all the integer type specializations

* autolinking and boost

* Link boost in rpy module

* revert to static libs.

* Force auto link

* force link with comment

* For god's sake stop trying to instantiate templates

* Adding sig log sig example

* Update git ignore

* Open cl core (#49)

* Added all te basic headers/types

* Removed old code.

* Fixed some outstanding bad names

* Added size to queue

* Added basic launch functions for kernels.

* Added all the ocl impls.

* Fixed a type difference causing warnings in compiles

* Refactored to make data types of interfaces private.

* Change the model to something more sane.

* Added some methods for paths.

* Small updates.

* uuids and pci bus info

* fixed calls to get string info from ocl types

* Added some utility functions to core

* Added outlines for cpu device.

* Added device providers.

* Added strict to one condition

* formatting

* Rename the device namespace to avoid conflicts.

* add methods for getting device to scalar type

* Removed print statement

* Small fixes

* Do not throw exceptions in constructor and instead do not continue upon error.

* Use clear candidates

* Added CPUdevice tests

* Fixed missing negation

* implemented alloc and free on cpu device

* Added kernel framework

* removed owning method

* changed raw_free signature

* Constructors and reference counts

* Changed the way CPUBuffers are implemented

* Various updates.

* Moved type definitions to devices

* masked_unary kernels

* A few more changes

* Removed ocl kernel from cpu kernel

* added test for gpu device.

* fix cpu provider

* Many improvements to device support

* Started work on calling pattern for kernels

* That arg design wasn't right. Reconsider

* Fix name in equality for scalar info

* Fix bits to bytes

* Fix bits to bytes

* Fix bits to bytes

* Fix bits to bytes

* Fix bits to bytes

* Fix bits to bytes

* Fix a bug in the compile command

* implement OCLVersion to aid version semantics

* Check successful rather than dbg assert

* Oops missed cmake for ocl_version

* Much more elegant kernel argument handling

* added interface accessor methods.

* Refactored launch interface.

* Updated launch methods for ocl kernels

* temp fixed missing enum values in switches

* Fixed a few compilation issues.

* Add constructors to kernel params

* Fixed construction of temporary args in kernel launch functions

* Added as_slice utility to buffers

* Added inherited construct method for buffer implementations

* Added inherited construct method for buffer implementations

* Fixed broken condition in kernel launch checks

* OCLBuffer ptr now returns a pointer to cl_mem

* Added scoped guard helpers for cl types

* Cleaned up implementation of ocl kernel launch

* Added overrides for ptr methods on ocl queues

* Added replace 0 alignment with max alignment

* Introduce special device type for the host device

* Meta header for device library

* Added to_device methods to buffer objects.

* Added to_host and from_host data movement methods to device_handle

* Update CMakeLists.txt

* Implement new to_device interface for CPUBuffers

* Implemented new to_buffer interface and removed inc/dec _ref methods

* Fixed formatting

* Fixed formatting

* implemented to/from host methods

* implemented to/from host methods

* implemented to/from host methods

* Updated test to use new api

* include the meta header for devices

* Rename "get_cpu_device" to "get_host_device"

* do not compile unused kernels

* refactor cpu to host

* added "compute_delegate" method to host devices

* fixed includes

* Removed reference to unused kernel.

* Changed signature of to_host function

* Implemented to_device for ocl buffers

* Switch to internally referenced countered intrusive pointer model

* Added map/unmap basics

* Completed implementation of buffer mapping

* Getting started with the new scalars module

* Delete usings for move and forward

* Add is_trivially_destructible

* Added constlog2 compute struct

* Changed the implementation of type_info_of

* Streamlining the implementation of scalars

* Streamlining the implementation of scalars

* Started work on scalar_array.cpp

* Started work on scalar_array.cpp

* Implement copy and move constructors

* Added raw observer methods to ScalarArray

* added scalar type stubs

* delete old files

* include archive header

* include archive header

* key scalar array

* More work on scalar arrays

* Lots of fixes in vertical integration

* re-implement (key)scalarstream

* Fixed incompatibility between alignas and export

* Added unreachable return

* implement virtual methods

* IMplement scalar stream

* Added virtual destructor

* Bring in the random generator impls.

* Fix various issues in the roughpy modules caused by new impl.

* Fix various issues in the roughpy modules caused by new impl.

* added != operator

* Added unreachable return

* added as_mut_slice to buffer

* Lots of work on scalar_type impls

* No discard

* Start with serialization (again)

* Fiddle with the serialization definitions

* Started fixing bugs

* Started fixing bugs

* Fixed type of error thrown in tests to match updated interface

* Implemented scalar division

* Bump libalgebra_lite

* DOn't use function object

* Added conversion to non-const to const slice

* Fixed a few issues

* Oops accidentally added source to BLAS target

* FIxed bad width in test

* Implemented lost of stuff

* implemented register_rng_getter

* Fixed some remaining segfaults in python module

* few small updates

* Added to_float method

* Fixed key allocation

* Fixed no string use default rng

* Moved stream out operator to main header

* Fixed change in scalar semantics

* avoid multiple calls

* roundup divide

* Use slice operator[]

* fix return in branch

* added missing implementation

* Removed duplicate check

* precompile only the lal dependency

* Get the path correct

* removed reference to device_handle header in kernel.h

* fixed now missing include in kernel.cpp

* Missed implementing destructor

* Force debug macros?

* Extra assert.

* Rework allocate function to check size > 0

* Check correct setup after allocation

* Oops misspelled macro condition

* Fixed conditions

* Type deduction fix (#51)

* update changelog

* minor adjustment to stype algorithm

* Added extra tests

* Added type deduction tests for major constructors

* Do not gate scalar type based on integer size, just use double

* rework type deduction in dlpack parsing

* formatting?

* Update CHANGELOG

* Fix conversion to numpy (#52)

* Added tests for to_array functionality

* Stream out operator for TypeInfo

* formatting

* basis function for algebra types

* enhanced framework for converting from algebra to array.

* remove some redundant asserts

* remove cvref on type deductions

* formatting

* always import numpy if available

* lots of little details

* moved some functions around to make them accessible

* formatting

* formatting

* imort numpy function

* moved definition of __array__ to numpy files

* formatting

* Create zeroed array first

* Added missing zeros to expected arrays

* no ownership test - everything copies for now

* Added test for array of rationals

* fixed some issues with scalar allocations

* Updated changelog

* Added test for poly scalars to_array

* Fixed missing break in switch statement.

* Precompiled headers, shuffled instantiations, etc. to make build times better

* Fix containinterval issues (#54)

* Guard against allocating zero

* Added resolution getter for streams

* Added tests for interval alignment

* Added param to resolution helper function

* Updated to set resolution if not set.

* Changed to use a single dispatch rather than multiple, added check for intervals smaller than minimum.

* Minor changes

* Oops, removed debug code

* Additional changes

* shortcircuit trivial cases

* formatting

* default resolution change

* added refine interval method and changes

* handle resolutions above stream resolution

* formatting

* impl refine interval method

* formatting

* improve output

* add new test

* Use optional to store resolution so the inference is used if none is given

* Simplified the implementation of methods

* Use default resolution

* Update tests for new behaviour

* use default resolution

* Update changelog

* Fixed bug in clone method

* MSVC template instantiation again -.-

* do not reference subordinates in device_handle, leave open option of including in component headers

* thankyou msvc for providing no information

* MSVC just cannot help itself.

* Ok device_handle.h needs the subordinates

* put definition in namespace?

* no inline definition

* use alternative copy-convert

* borrow the update value for call to interface.

* change up the constructors slightly.

* use the gmp package instead of mpir since it is supported on all platforms

* force set the variables fphse

* Fixed link option over compile option

* use shared libs for gmp

* OOps unset gmp setting

* Fix adding bignum as runtime dependency

* set rpath on macos

* bump lal

* do not set rpath on apple and make cache var

* disable coeff test until bugs can be found

* let delocate find the libraries?

* use @loader_path?

* Really please don't use the SONAME

* after bignum loaded

* disable apple rpath everywhere

* bump libalgebra_lite

* debug info in vcpkg

* try installing runtime dependencies via cmake

* Ooops got it in the wrong place

* framework destination

* no need to install mkl at the moment

* excludes

* remove dependence on bignum from device component

* Allow static gmp

* no runtime deps

* no vcpkg gmp on apple

* moved triplets to tools dir

* remove unused port files

* added empty overlay for gmp

* install gtest only when building

* bump VERSION.txt

* Revert to shared components (#56)

* Initial revert to shared components

* Move device library into platform, some build optimisations

* playing with precompiled headers

* Various changes to serialization instantatiations.

* A few more improvements to builds

* Remove libalgebra_lite as a submodule

* Release the gil when computing signatures or log-signatures. (#58)

* do not transpose arrays that are wide but short for streams (#57)

* do not transpose arrays that are wide but short for streams

* Fixed wrong width in transposed array tests

* Fixed dlpack copy routine for F-style arrays.

* modified the github actions in prep for new release setup.

* Added words example

* set cache variable for tests features

* Probably redundant test, but check anyway

* remove git modules.

These will be replaced with vcpkg ports in the future.

* upload files to release rather than create release

* filled out some functions in the manager script.

---------

Co-authored-by: Philippa Rubin <philippa.rubin@stfc.ac.uk>

* Tiny adjustment to vcpkg configuration (#62)

* add . to front of registry path

* oops removed dot.

* Extended tensor operations (#61)

* Added reverse method to PyTensorKey

* Add concatenation operator for tensor keys

* Add new header for hash functor

* add hash_value method to basis objects.

* Add hash method to PyTensorKey

* added context method to algebra types.

* added coeff lookup by key type.

* Implemented intermediate keytype lookup for lie keys

* Oops missed virtual

* Actually declare friend function in namespace

* Added basis to pytensorkey python interface

* Fixed an issue with type deduction in basis interface

* Added to_letters method to tensorkey python interface

* Added arithmetic between scalars and ints/doubles

* Moved error macros and support to platform

This allows use to have fairly complex code for producing error messages because it is hidden away in a shared library.

* add boost stacktrace to dependencies

* pass backtrace as argument to get the locality right.

* Fixed need to call function to get pointer

* Fixed a potential bug caused by trivial bytes 0

* No address of for array.

* is_mutable convenience function

* Fixed bug not assigning zero trivial bytes

* debug assertion

* Formatting

* Switch to dst_info to avoid needing a new constructor

* short circuit if lhs is zero.

* add borrowed scalar test

* Fixed argument order for r operators

* Fixed cause of segfault in scalar repr

* Add debug assertions

* Add more debug assertions

* Fix a bug that leads to unset type after copy zero

* More tests for scalars

* Adding tensor functions

* Changed implementation of eq operator for basis objects

* Added richcompare function to pycontext

* allow assigning of scalars in constructors

* Fixed a bug in is_pointer_zero

* Add test for Log

* Handle scalar arg in check_and_set_dtype

* More intelligent handling for copying from opaque pointer

* Implement assignment for owned pointers

* oops missed part

* copy interfaces as if they were opaque pointers

* use enumeration aware function

* perform a true copy on assignment from opaque pointer

* remove unused define

* formatting

* fixed semantics of assigment move operator

* Implemented ScalarMeta_call

* Raw python pointer st-pst

* preparations for moving static python scalar type

* extended tests for scalars

* finish test for adjoint

* remove print

* change type and packed pointer access

* formatting

* remove some compiler warnings

* implemented type promotion for scalars

* formatting

* update CMakeLists.txt

* various updates for debugging

* implement operators by hand

* remove debug print

* remove debug print

* Fix the implementation of divide to use type promotion

* fill out the missing promotion modes

* remove debug format function

* added docstrings

* update changelog

* Fixed incorrect type promotion in float

* relative import for init

* gmp on all platforms

* remove excess comma

* bump version

* Readded libalgebra-lite as a submodule, removed from vcpkg (#64)

* update tests action to use all 3 platforms

* use PYTHONPATH instead of pth

* setup python

* windows doesn't use bash -.-

* force bash

* Fix stacktrace errors on macos (#66)

Fixed one small issue with stacktrace on MacOS. Also fixed a plethora of build issues on Windows.

* started working on docs.

* Optional disable linking to blas

* Serialization (#42)

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* removed print

* added new macros for external library types

* added serialization for all the scalar types

* added instantiations of the archive types

* Added serialization for enum types

* Special load/save functions for JSON output.

* Separate out implementations

* just so many improvements

* added all the includes of the concrete types header

* massive restructuring of algebra

* Always include "types.h" along with "scalar_type.h"

* For god's sake stop trying to instantiate templates

* bad include in types.h

* overzealous merging

* overzealous merging

* odd duplication

* overzealous merging

* Put fundamentals pages into headers, what are x, how does x fit, using x, refs

* WIP: Additions to fundamentals headers - what are x, how does x fit, using x, refs. Todos added

* Storing fundamentals refs

* Add Shuffle tensor page example with polynomial print out

* Adding fundamentals references

* Add shuffle tensor refs

* Lies: Add refs, print out functions, improve introduction

* free tensors - improve intro, add refs

* Intervals - Resolve todos, add prints, add todo for dyadics diagram

* streams - break up constructors, improve introduction, add refs

* Added intervals diagram from GitHub issue

* Remove todo

* Remove todo, tidy dyadic explanation

* Fix typo

* Add electricity plots

* Add electricity figures for streams page

* trim dyadic diagram

* Add link to electricity data, fix captions

* Remove space

* remove todo

* Add comment re no terms of degree 2 in the log signatures

* Added script for processing example notebooks

* removed old files

* configuration for auto-formatting of notebooks

* Tidy branch, add electricity outputs to gitignore

* Tidy branch, put generated notebook files into gitignore

* Change gitignore to be more specific re notebooks

* Add generated tutorials page to gitignore

* Fix indent issue

* Comment redundant figures

* remove references to signature applications submodule

* Fix spelling

* Add signature applications dir to gitignore

---------

Co-authored-by: Sam Morley <admin@inakleinbottle.com>
Co-authored-by: inakleinbottle <41870650+inakleinbottle@users.noreply.github.com>
inakleinbottle added a commit that referenced this pull request May 3, 2024
* started working on docs.

* Fix dir where sphinx looks for doxyfile

* Optional disable linking to blas

* Set INSTALL_RPATH always, update on Apple. This is broken by vcpkg bug

* to_letter implementation

* Fix bad construction of PyLieKey

* bump lal.

* Serialization (#42)

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* removed print

* added new macros for external library types

* added serialization for all the scalar types

* added instantiations of the archive types

* Added serialization for enum types

* Special load/save functions for JSON output.

* Separate out implementations

* just so many improvements

* added all the includes of the concrete types header

* fixed some more serialization includes

* massive restructuring of algebra

* Implement __setstate__ for monomial.

* Many steps of debugging.

* Back to release mode

* Fixed missing include of types header

* Update the actions, hopefuly should stop the automatic publish.

* Update changelog

* Setup binary caching in action

* Bump version

* delete old action, fix condition

* Fix quotes?

* Fixed size type in scalar serialization.h

* remove boost::filesystem as a requirement

* cast to size_t

* Updat cibuildwheel version

* Use cereal::size_type????

* allow dynamic linkage on windows. Because, Windows -.-

* force lvalue size_type

* fix boost versions in manifest.

* fixed another bad size_type

* remove boost log dependency

* Fix another size_type

* more size_types.

* missing headers in lie_interface.cpp

* makes sure all necessary headers are included

* Disable C4661 in headers

* Fix number

* Always include "types.h" along with "scalar_type.h"

* Implement the common types in main header.

* Define all the integer type specializations

* autolinking and boost

* Link boost in rpy module

* revert to static libs.

* Force auto link

* force link with comment

* For god's sake stop trying to instantiate templates

* Adding sig log sig example

* Update git ignore

* WIP documentation, add files for streams, free tensors, shuffle tensors, lies, contexts and intervals

* WIP: Building a user guide

* WIP: Integrate old markdown files into new user guide

* Adding build from source instructions

* Adding readme description to main page

* Add normal install instructions

* Add readme comments on intervals in roughpy

* Added readme comments to absolute beginners

* Add contributing to roughpy comments

* Add release notes pages

* Add release page entries

* Move github page readme info to quickstart

* Fix API reference documentation generation

* Turn off todos

* Add warning messages, page under construction

* Move note on intervals to absolute beginners

* Add page of literature references

* WIP: Create location for notebooks to be rendered

* Add datasig signature applications tutorials

* Add IPython, removes warnings

* Add comment on tutorials

* Add 8 release notes

* Add 7 release notes

* Add 6 release notes

* Add 5 release notes

* Add 4 release notes

* Add 3 release notes

* Add 2 release notes

* Add 1 release notes

* WIP: Copy of notebooks, to be changed to use RoughPy

* WIP: MNIST new notebook with RoughPy

* Migrating MNIST to use RoughPy, possibly refactoring functions

* Examples as submodule

* remove downloaded examples

* change tutorials names

* sepsis name change

* WIP: What is rough py. Added brief text, references, video, todos

* Fix video not playing

* What is roughpy ref change

* Move intervals explanation to intervals page

* Add Sam's abs beginners page with anagrams example

* Remove quickstart page

* Trim what is roughpy video

* Change page link

* Remove old todos

* Turn off todos

* Update README.md (#47)

* Update list_basis_keys.py

* Update README.md (#48)

* Update README.md

* Update README.md

* Update README.md

* Update VERSION.txt

* Develop (#55)

* Optional disable linking to blas

* Set INSTALL_RPATH always, update on Apple. This is broken by vcpkg bug

* to_letter implementation

* Fix bad construction of PyLieKey

* bump lal.

* Serialization (#42)

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* removed print

* added new macros for external library types

* added serialization for all the scalar types

* added instantiations of the archive types

* Added serialization for enum types

* Special load/save functions for JSON output.

* Separate out implementations

* just so many improvements

* added all the includes of the concrete types header

* fixed some more serialization includes

* massive restructuring of algebra

* Implement __setstate__ for monomial.

* Many steps of debugging.

* Back to release mode

* Fixed missing include of types header

* Update the actions, hopefuly should stop the automatic publish.

* Update changelog

* Setup binary caching in action

* Bump version

* delete old action, fix condition

* Fix quotes?

* Fixed size type in scalar serialization.h

* remove boost::filesystem as a requirement

* cast to size_t

* Updat cibuildwheel version

* Use cereal::size_type????

* allow dynamic linkage on windows. Because, Windows -.-

* force lvalue size_type

* fix boost versions in manifest.

* fixed another bad size_type

* remove boost log dependency

* Fix another size_type

* more size_types.

* missing headers in lie_interface.cpp

* makes sure all necessary headers are included

* Disable C4661 in headers

* Fix number

* Always include "types.h" along with "scalar_type.h"

* Implement the common types in main header.

* Define all the integer type specializations

* autolinking and boost

* Link boost in rpy module

* revert to static libs.

* Force auto link

* force link with comment

* For god's sake stop trying to instantiate templates

* Adding sig log sig example

* Update git ignore

* Open cl core (#49)

* Added all te basic headers/types

* Removed old code.

* Fixed some outstanding bad names

* Added size to queue

* Added basic launch functions for kernels.

* Added all the ocl impls.

* Fixed a type difference causing warnings in compiles

* Refactored to make data types of interfaces private.

* Change the model to something more sane.

* Added some methods for paths.

* Small updates.

* uuids and pci bus info

* fixed calls to get string info from ocl types

* Added some utility functions to core

* Added outlines for cpu device.

* Added device providers.

* Added strict to one condition

* formatting

* Rename the device namespace to avoid conflicts.

* add methods for getting device to scalar type

* Removed print statement

* Small fixes

* Do not throw exceptions in constructor and instead do not continue upon error.

* Use clear candidates

* Added CPUdevice tests

* Fixed missing negation

* implemented alloc and free on cpu device

* Added kernel framework

* removed owning method

* changed raw_free signature

* Constructors and reference counts

* Changed the way CPUBuffers are implemented

* Various updates.

* Moved type definitions to devices

* masked_unary kernels

* A few more changes

* Removed ocl kernel from cpu kernel

* added test for gpu device.

* fix cpu provider

* Many improvements to device support

* Started work on calling pattern for kernels

* That arg design wasn't right. Reconsider

* Fix name in equality for scalar info

* Fix bits to bytes

* Fix bits to bytes

* Fix bits to bytes

* Fix bits to bytes

* Fix bits to bytes

* Fix bits to bytes

* Fix a bug in the compile command

* implement OCLVersion to aid version semantics

* Check successful rather than dbg assert

* Oops missed cmake for ocl_version

* Much more elegant kernel argument handling

* added interface accessor methods.

* Refactored launch interface.

* Updated launch methods for ocl kernels

* temp fixed missing enum values in switches

* Fixed a few compilation issues.

* Add constructors to kernel params

* Fixed construction of temporary args in kernel launch functions

* Added as_slice utility to buffers

* Added inherited construct method for buffer implementations

* Added inherited construct method for buffer implementations

* Fixed broken condition in kernel launch checks

* OCLBuffer ptr now returns a pointer to cl_mem

* Added scoped guard helpers for cl types

* Cleaned up implementation of ocl kernel launch

* Added overrides for ptr methods on ocl queues

* Added replace 0 alignment with max alignment

* Introduce special device type for the host device

* Meta header for device library

* Added to_device methods to buffer objects.

* Added to_host and from_host data movement methods to device_handle

* Update CMakeLists.txt

* Implement new to_device interface for CPUBuffers

* Implemented new to_buffer interface and removed inc/dec _ref methods

* Fixed formatting

* Fixed formatting

* implemented to/from host methods

* implemented to/from host methods

* implemented to/from host methods

* Updated test to use new api

* include the meta header for devices

* Rename "get_cpu_device" to "get_host_device"

* do not compile unused kernels

* refactor cpu to host

* added "compute_delegate" method to host devices

* fixed includes

* Removed reference to unused kernel.

* Changed signature of to_host function

* Implemented to_device for ocl buffers

* Switch to internally referenced countered intrusive pointer model

* Added map/unmap basics

* Completed implementation of buffer mapping

* Getting started with the new scalars module

* Delete usings for move and forward

* Add is_trivially_destructible

* Added constlog2 compute struct

* Changed the implementation of type_info_of

* Streamlining the implementation of scalars

* Streamlining the implementation of scalars

* Started work on scalar_array.cpp

* Started work on scalar_array.cpp

* Implement copy and move constructors

* Added raw observer methods to ScalarArray

* added scalar type stubs

* delete old files

* include archive header

* include archive header

* key scalar array

* More work on scalar arrays

* Lots of fixes in vertical integration

* re-implement (key)scalarstream

* Fixed incompatibility between alignas and export

* Added unreachable return

* implement virtual methods

* IMplement scalar stream

* Added virtual destructor

* Bring in the random generator impls.

* Fix various issues in the roughpy modules caused by new impl.

* Fix various issues in the roughpy modules caused by new impl.

* added != operator

* Added unreachable return

* added as_mut_slice to buffer

* Lots of work on scalar_type impls

* No discard

* Start with serialization (again)

* Fiddle with the serialization definitions

* Started fixing bugs

* Started fixing bugs

* Fixed type of error thrown in tests to match updated interface

* Implemented scalar division

* Bump libalgebra_lite

* DOn't use function object

* Added conversion to non-const to const slice

* Fixed a few issues

* Oops accidentally added source to BLAS target

* FIxed bad width in test

* Implemented lost of stuff

* implemented register_rng_getter

* Fixed some remaining segfaults in python module

* few small updates

* Added to_float method

* Fixed key allocation

* Fixed no string use default rng

* Moved stream out operator to main header

* Fixed change in scalar semantics

* avoid multiple calls

* roundup divide

* Use slice operator[]

* fix return in branch

* added missing implementation

* Removed duplicate check

* precompile only the lal dependency

* Get the path correct

* removed reference to device_handle header in kernel.h

* fixed now missing include in kernel.cpp

* Missed implementing destructor

* Force debug macros?

* Extra assert.

* Rework allocate function to check size > 0

* Check correct setup after allocation

* Oops misspelled macro condition

* Fixed conditions

* Type deduction fix (#51)

* update changelog

* minor adjustment to stype algorithm

* Added extra tests

* Added type deduction tests for major constructors

* Do not gate scalar type based on integer size, just use double

* rework type deduction in dlpack parsing

* formatting?

* Update CHANGELOG

* Fix conversion to numpy (#52)

* Added tests for to_array functionality

* Stream out operator for TypeInfo

* formatting

* basis function for algebra types

* enhanced framework for converting from algebra to array.

* remove some redundant asserts

* remove cvref on type deductions

* formatting

* always import numpy if available

* lots of little details

* moved some functions around to make them accessible

* formatting

* formatting

* imort numpy function

* moved definition of __array__ to numpy files

* formatting

* Create zeroed array first

* Added missing zeros to expected arrays

* no ownership test - everything copies for now

* Added test for array of rationals

* fixed some issues with scalar allocations

* Updated changelog

* Added test for poly scalars to_array

* Fixed missing break in switch statement.

* Precompiled headers, shuffled instantiations, etc. to make build times better

* Fix containinterval issues (#54)

* Guard against allocating zero

* Added resolution getter for streams

* Added tests for interval alignment

* Added param to resolution helper function

* Updated to set resolution if not set.

* Changed to use a single dispatch rather than multiple, added check for intervals smaller than minimum.

* Minor changes

* Oops, removed debug code

* Additional changes

* shortcircuit trivial cases

* formatting

* default resolution change

* added refine interval method and changes

* handle resolutions above stream resolution

* formatting

* impl refine interval method

* formatting

* improve output

* add new test

* Use optional to store resolution so the inference is used if none is given

* Simplified the implementation of methods

* Use default resolution

* Update tests for new behaviour

* use default resolution

* Update changelog

* Fixed bug in clone method

* MSVC template instantiation again -.-

* do not reference subordinates in device_handle, leave open option of including in component headers

* thankyou msvc for providing no information

* MSVC just cannot help itself.

* Ok device_handle.h needs the subordinates

* put definition in namespace?

* no inline definition

* use alternative copy-convert

* borrow the update value for call to interface.

* change up the constructors slightly.

* use the gmp package instead of mpir since it is supported on all platforms

* force set the variables fphse

* Fixed link option over compile option

* use shared libs for gmp

* OOps unset gmp setting

* Fix adding bignum as runtime dependency

* set rpath on macos

* bump lal

* do not set rpath on apple and make cache var

* disable coeff test until bugs can be found

* let delocate find the libraries?

* use @loader_path?

* Really please don't use the SONAME

* after bignum loaded

* disable apple rpath everywhere

* bump libalgebra_lite

* debug info in vcpkg

* try installing runtime dependencies via cmake

* Ooops got it in the wrong place

* framework destination

* no need to install mkl at the moment

* excludes

* remove dependence on bignum from device component

* Allow static gmp

* no runtime deps

* no vcpkg gmp on apple

* moved triplets to tools dir

* remove unused port files

* added empty overlay for gmp

* install gtest only when building

* bump VERSION.txt

---------

Co-authored-by: Philippa Rubin <philippa.rubin@stfc.ac.uk>

* Merge updates from develop for last time (#59)

* Optional disable linking to blas

* Set INSTALL_RPATH always, update on Apple. This is broken by vcpkg bug

* to_letter implementation

* Fix bad construction of PyLieKey

* bump lal.

* Serialization (#42)

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* removed print

* added new macros for external library types

* added serialization for all the scalar types

* added instantiations of the archive types

* Added serialization for enum types

* Special load/save functions for JSON output.

* Separate out implementations

* just so many improvements

* added all the includes of the concrete types header

* fixed some more serialization includes

* massive restructuring of algebra

* Implement __setstate__ for monomial.

* Many steps of debugging.

* Back to release mode

* Fixed missing include of types header

* Update the actions, hopefuly should stop the automatic publish.

* Update changelog

* Setup binary caching in action

* Bump version

* delete old action, fix condition

* Fix quotes?

* Fixed size type in scalar serialization.h

* remove boost::filesystem as a requirement

* cast to size_t

* Updat cibuildwheel version

* Use cereal::size_type????

* allow dynamic linkage on windows. Because, Windows -.-

* force lvalue size_type

* fix boost versions in manifest.

* fixed another bad size_type

* remove boost log dependency

* Fix another size_type

* more size_types.

* missing headers in lie_interface.cpp

* makes sure all necessary headers are included

* Disable C4661 in headers

* Fix number

* Always include "types.h" along with "scalar_type.h"

* Implement the common types in main header.

* Define all the integer type specializations

* autolinking and boost

* Link boost in rpy module

* revert to static libs.

* Force auto link

* force link with comment

* For god's sake stop trying to instantiate templates

* Adding sig log sig example

* Update git ignore

* Open cl core (#49)

* Added all te basic headers/types

* Removed old code.

* Fixed some outstanding bad names

* Added size to queue

* Added basic launch functions for kernels.

* Added all the ocl impls.

* Fixed a type difference causing warnings in compiles

* Refactored to make data types of interfaces private.

* Change the model to something more sane.

* Added some methods for paths.

* Small updates.

* uuids and pci bus info

* fixed calls to get string info from ocl types

* Added some utility functions to core

* Added outlines for cpu device.

* Added device providers.

* Added strict to one condition

* formatting

* Rename the device namespace to avoid conflicts.

* add methods for getting device to scalar type

* Removed print statement

* Small fixes

* Do not throw exceptions in constructor and instead do not continue upon error.

* Use clear candidates

* Added CPUdevice tests

* Fixed missing negation

* implemented alloc and free on cpu device

* Added kernel framework

* removed owning method

* changed raw_free signature

* Constructors and reference counts

* Changed the way CPUBuffers are implemented

* Various updates.

* Moved type definitions to devices

* masked_unary kernels

* A few more changes

* Removed ocl kernel from cpu kernel

* added test for gpu device.

* fix cpu provider

* Many improvements to device support

* Started work on calling pattern for kernels

* That arg design wasn't right. Reconsider

* Fix name in equality for scalar info

* Fix bits to bytes

* Fix bits to bytes

* Fix bits to bytes

* Fix bits to bytes

* Fix bits to bytes

* Fix bits to bytes

* Fix a bug in the compile command

* implement OCLVersion to aid version semantics

* Check successful rather than dbg assert

* Oops missed cmake for ocl_version

* Much more elegant kernel argument handling

* added interface accessor methods.

* Refactored launch interface.

* Updated launch methods for ocl kernels

* temp fixed missing enum values in switches

* Fixed a few compilation issues.

* Add constructors to kernel params

* Fixed construction of temporary args in kernel launch functions

* Added as_slice utility to buffers

* Added inherited construct method for buffer implementations

* Added inherited construct method for buffer implementations

* Fixed broken condition in kernel launch checks

* OCLBuffer ptr now returns a pointer to cl_mem

* Added scoped guard helpers for cl types

* Cleaned up implementation of ocl kernel launch

* Added overrides for ptr methods on ocl queues

* Added replace 0 alignment with max alignment

* Introduce special device type for the host device

* Meta header for device library

* Added to_device methods to buffer objects.

* Added to_host and from_host data movement methods to device_handle

* Update CMakeLists.txt

* Implement new to_device interface for CPUBuffers

* Implemented new to_buffer interface and removed inc/dec _ref methods

* Fixed formatting

* Fixed formatting

* implemented to/from host methods

* implemented to/from host methods

* implemented to/from host methods

* Updated test to use new api

* include the meta header for devices

* Rename "get_cpu_device" to "get_host_device"

* do not compile unused kernels

* refactor cpu to host

* added "compute_delegate" method to host devices

* fixed includes

* Removed reference to unused kernel.

* Changed signature of to_host function

* Implemented to_device for ocl buffers

* Switch to internally referenced countered intrusive pointer model

* Added map/unmap basics

* Completed implementation of buffer mapping

* Getting started with the new scalars module

* Delete usings for move and forward

* Add is_trivially_destructible

* Added constlog2 compute struct

* Changed the implementation of type_info_of

* Streamlining the implementation of scalars

* Streamlining the implementation of scalars

* Started work on scalar_array.cpp

* Started work on scalar_array.cpp

* Implement copy and move constructors

* Added raw observer methods to ScalarArray

* added scalar type stubs

* delete old files

* include archive header

* include archive header

* key scalar array

* More work on scalar arrays

* Lots of fixes in vertical integration

* re-implement (key)scalarstream

* Fixed incompatibility between alignas and export

* Added unreachable return

* implement virtual methods

* IMplement scalar stream

* Added virtual destructor

* Bring in the random generator impls.

* Fix various issues in the roughpy modules caused by new impl.

* Fix various issues in the roughpy modules caused by new impl.

* added != operator

* Added unreachable return

* added as_mut_slice to buffer

* Lots of work on scalar_type impls

* No discard

* Start with serialization (again)

* Fiddle with the serialization definitions

* Started fixing bugs

* Started fixing bugs

* Fixed type of error thrown in tests to match updated interface

* Implemented scalar division

* Bump libalgebra_lite

* DOn't use function object

* Added conversion to non-const to const slice

* Fixed a few issues

* Oops accidentally added source to BLAS target

* FIxed bad width in test

* Implemented lost of stuff

* implemented register_rng_getter

* Fixed some remaining segfaults in python module

* few small updates

* Added to_float method

* Fixed key allocation

* Fixed no string use default rng

* Moved stream out operator to main header

* Fixed change in scalar semantics

* avoid multiple calls

* roundup divide

* Use slice operator[]

* fix return in branch

* added missing implementation

* Removed duplicate check

* precompile only the lal dependency

* Get the path correct

* removed reference to device_handle header in kernel.h

* fixed now missing include in kernel.cpp

* Missed implementing destructor

* Force debug macros?

* Extra assert.

* Rework allocate function to check size > 0

* Check correct setup after allocation

* Oops misspelled macro condition

* Fixed conditions

* Type deduction fix (#51)

* update changelog

* minor adjustment to stype algorithm

* Added extra tests

* Added type deduction tests for major constructors

* Do not gate scalar type based on integer size, just use double

* rework type deduction in dlpack parsing

* formatting?

* Update CHANGELOG

* Fix conversion to numpy (#52)

* Added tests for to_array functionality

* Stream out operator for TypeInfo

* formatting

* basis function for algebra types

* enhanced framework for converting from algebra to array.

* remove some redundant asserts

* remove cvref on type deductions

* formatting

* always import numpy if available

* lots of little details

* moved some functions around to make them accessible

* formatting

* formatting

* imort numpy function

* moved definition of __array__ to numpy files

* formatting

* Create zeroed array first

* Added missing zeros to expected arrays

* no ownership test - everything copies for now

* Added test for array of rationals

* fixed some issues with scalar allocations

* Updated changelog

* Added test for poly scalars to_array

* Fixed missing break in switch statement.

* Precompiled headers, shuffled instantiations, etc. to make build times better

* Fix containinterval issues (#54)

* Guard against allocating zero

* Added resolution getter for streams

* Added tests for interval alignment

* Added param to resolution helper function

* Updated to set resolution if not set.

* Changed to use a single dispatch rather than multiple, added check for intervals smaller than minimum.

* Minor changes

* Oops, removed debug code

* Additional changes

* shortcircuit trivial cases

* formatting

* default resolution change

* added refine interval method and changes

* handle resolutions above stream resolution

* formatting

* impl refine interval method

* formatting

* improve output

* add new test

* Use optional to store resolution so the inference is used if none is given

* Simplified the implementation of methods

* Use default resolution

* Update tests for new behaviour

* use default resolution

* Update changelog

* Fixed bug in clone method

* MSVC template instantiation again -.-

* do not reference subordinates in device_handle, leave open option of including in component headers

* thankyou msvc for providing no information

* MSVC just cannot help itself.

* Ok device_handle.h needs the subordinates

* put definition in namespace?

* no inline definition

* use alternative copy-convert

* borrow the update value for call to interface.

* change up the constructors slightly.

* use the gmp package instead of mpir since it is supported on all platforms

* force set the variables fphse

* Fixed link option over compile option

* use shared libs for gmp

* OOps unset gmp setting

* Fix adding bignum as runtime dependency

* set rpath on macos

* bump lal

* do not set rpath on apple and make cache var

* disable coeff test until bugs can be found

* let delocate find the libraries?

* use @loader_path?

* Really please don't use the SONAME

* after bignum loaded

* disable apple rpath everywhere

* bump libalgebra_lite

* debug info in vcpkg

* try installing runtime dependencies via cmake

* Ooops got it in the wrong place

* framework destination

* no need to install mkl at the moment

* excludes

* remove dependence on bignum from device component

* Allow static gmp

* no runtime deps

* no vcpkg gmp on apple

* moved triplets to tools dir

* remove unused port files

* added empty overlay for gmp

* install gtest only when building

* bump VERSION.txt

* Revert to shared components (#56)

* Initial revert to shared components

* Move device library into platform, some build optimisations

* playing with precompiled headers

* Various changes to serialization instantatiations.

* A few more improvements to builds

* Remove libalgebra_lite as a submodule

* Release the gil when computing signatures or log-signatures. (#58)

* do not transpose arrays that are wide but short for streams (#57)

* do not transpose arrays that are wide but short for streams

* Fixed wrong width in transposed array tests

* Fixed dlpack copy routine for F-style arrays.

* modified the github actions in prep for new release setup.

* Added words example

* set cache variable for tests features

* Probably redundant test, but check anyway

* remove git modules.

These will be replaced with vcpkg ports in the future.

* upload files to release rather than create release

* filled out some functions in the manager script.

---------

Co-authored-by: Philippa Rubin <philippa.rubin@stfc.ac.uk>

* Tiny adjustment to vcpkg configuration (#62)

* add . to front of registry path

* oops removed dot.

* Extended tensor operations (#61)

* Added reverse method to PyTensorKey

* Add concatenation operator for tensor keys

* Add new header for hash functor

* add hash_value method to basis objects.

* Add hash method to PyTensorKey

* added context method to algebra types.

* added coeff lookup by key type.

* Implemented intermediate keytype lookup for lie keys

* Oops missed virtual

* Actually declare friend function in namespace

* Added basis to pytensorkey python interface

* Fixed an issue with type deduction in basis interface

* Added to_letters method to tensorkey python interface

* Added arithmetic between scalars and ints/doubles

* Moved error macros and support to platform

This allows use to have fairly complex code for producing error messages because it is hidden away in a shared library.

* add boost stacktrace to dependencies

* pass backtrace as argument to get the locality right.

* Fixed need to call function to get pointer

* Fixed a potential bug caused by trivial bytes 0

* No address of for array.

* is_mutable convenience function

* Fixed bug not assigning zero trivial bytes

* debug assertion

* Formatting

* Switch to dst_info to avoid needing a new constructor

* short circuit if lhs is zero.

* add borrowed scalar test

* Fixed argument order for r operators

* Fixed cause of segfault in scalar repr

* Add debug assertions

* Add more debug assertions

* Fix a bug that leads to unset type after copy zero

* More tests for scalars

* Adding tensor functions

* Changed implementation of eq operator for basis objects

* Added richcompare function to pycontext

* allow assigning of scalars in constructors

* Fixed a bug in is_pointer_zero

* Add test for Log

* Handle scalar arg in check_and_set_dtype

* More intelligent handling for copying from opaque pointer

* Implement assignment for owned pointers

* oops missed part

* copy interfaces as if they were opaque pointers

* use enumeration aware function

* perform a true copy on assignment from opaque pointer

* remove unused define

* formatting

* fixed semantics of assigment move operator

* Implemented ScalarMeta_call

* Raw python pointer st-pst

* preparations for moving static python scalar type

* extended tests for scalars

* finish test for adjoint

* remove print

* change type and packed pointer access

* formatting

* remove some compiler warnings

* implemented type promotion for scalars

* formatting

* update CMakeLists.txt

* various updates for debugging

* implement operators by hand

* remove debug print

* remove debug print

* Fix the implementation of divide to use type promotion

* fill out the missing promotion modes

* remove debug format function

* added docstrings

* update changelog

* Fixed incorrect type promotion in float

* relative import for init

* gmp on all platforms

* remove excess comma

* bump version

* Readded libalgebra-lite as a submodule, removed from vcpkg (#64)

* update tests action to use all 3 platforms

* use PYTHONPATH instead of pth

* setup python

* windows doesn't use bash -.-

* force bash

* Fix stacktrace errors on macos (#66)

Fixed one small issue with stacktrace on MacOS. Also fixed a plethora of build issues on Windows.

* started working on docs.

* Optional disable linking to blas

* Serialization (#42)

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* Added cache-id function

* reformatting.

* removed print

* Added serialization methods to interval types.

* Added instantiations for the interval types.

* Added equality function for partitions

* Added tests for serialziation

* pickle support for dyadic

* Pickle support for interval types

* pickle support for partitions

* picke functions for algebra types

* typo

* test for lie pickle

* Pickle for free tensor types tests

* Added a default constructor.

* nominal pickle support for streams.

* Implementation of pickle not quit right for streams. Continue the research

* Fixed initialisation of effective domain

* Added __new__ to Stream type and modified pickle method

* Couple of changes to style.

* added tp_finalize to be safe

* Added methods to monomial for pickling

* added new macros for external library types

* added serialization for all the scalar types

* Fixed implementations detached from declaration

* added instantiations of the archive types

* Added serialization for enum types

* Add the specialization for polynomials

* Special load/save functions for JSON output.

* Added serialize method to StreamInterface and DynamicallyConstructedStream

* Sound path serialization

* Implemented serialization for the path type

* Serialization for SoundFileDatSource

* Added loading/dumping to stream chache files.

* removed file locks until I can figure out how they work

* removed print

* added new macros for external library types

* added serialization for all the scalar types

* added instantiations of the archive types

* Added serialization for enum types

* Special load/save functions for JSON output.

* Separate out implementations

* just so many improvements

* added all the includes of the concrete types header

* massive restructuring of algebra

* Always include "types.h" along with "scalar_type.h"

* For god's sake stop trying to instantiate templates

* bad include in types.h

* overzealous merging

* overzealous merging

* odd duplication

* overzealous merging

* Put fundamentals pages into headers, what are x, how does x fit, using x, refs

* WIP: Additions to fundamentals headers - what are x, how does x fit, using x, refs. Todos added

* Storing fundamentals refs

* Add Shuffle tensor page example with polynomial print out

* Adding fundamentals references

* Add shuffle tensor refs

* Lies: Add refs, print out functions, improve introduction

* free tensors - improve intro, add refs

* Intervals - Resolve todos, add prints, add todo for dyadics diagram

* streams - break up constructors, improve introduction, add refs

* Added intervals diagram from GitHub issue

* Remove todo

* Remove todo, tidy dyadic explanation

* Fix typo

* Add electricity plots

* Add electricity figures for streams page

* trim dyadic diagram

* Add link to electricity data, fix captions

* Remove space

* remove todo

* Add comment re no terms of degree 2 in the log signatures

* Added script for processing example notebooks

* removed old files

* configuration for auto-formatting of notebooks

* Tidy branch, add electricity outputs to gitignore

* Tidy branch, put generated notebook files into gitignore

* Change gitignore to be more specific re notebooks

* Add generated tutorials page to gitignore

* Fix indent issue

* Comment redundant figures

* remove references to signature applications submodule

* Fix spelling

* Add signature applications dir to gitignore

* Add shuffle tensor doc string

* Adding main description of Lie elements

* Adding description of intervals

* Adding main description of streams

* Change docs cmake to capture building dependancies

* Fix error where Path showing in API reference

* Add stream documentation for API ref

* Add lie documentation for API ref

* Add shuffle tensor documentation for API ref

* Add interval documentation for API ref

* Add todo to gitignore

* Fill in empty rpydoc strings

* Add to doc string to getsetdefs

* Add description to tick construction helper

* Add antipode example docstring

* Add the add scal mul docstring

* Add top level description to contexts

* Added api ref comments, todos for readonly properties. Formatting changes to follow

* Added comments for api ref, formatting to follow

* Resolve todos with api ref

* Further additions to api ref from issue todo list

* Format newly added docstrings to include python cross referencing

* Minor changes to docstring formatting, fixing hyperlinks

* install pkgconfig on windows

PKGConfig seems to be missing from the GA windows server 2022 image.

---------

Co-authored-by: Sam Morley <admin@inakleinbottle.com>
Co-authored-by: inakleinbottle <41870650+inakleinbottle@users.noreply.github.com>
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.

1 participant