All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Using alias instead of email in
setup.py
- Compatibility between Python and C++ in how the data is stored in bt files
- The project now uses the GNU General Public License (GPL) v3; license file added
- Introduces new Python package for storing and loading numpy arrays; in can be installed with
pip install gputils-api
; unit tests and documentation
- When compiling with
cmake
, the unit tests will not be compiled by default unless the flagGPUTILS_BUILD_TEST
is set - Clang clippy recommendations applied
- Proper error handling when binary tensor file is not found
- Method
saveToFile
becomesDTensor<T>::saveToFile(std::string pathToFile, Serialisation ser)
, i.e., the user can choose whether to save the file as a text (ASCII) file, or a binary one
- Method
parseFromTextFile
renamed toparseFromFile
(supports text and binary formats)
- Quick bug bix in
DTensor::parseFromTextFile
(passing storage mode tovectorFromTextFile
)
- Set precision in
DTensor::saveToFile
properly DTensor<T>::parseFromFile
throwsstd::invalid_argument
ifT
is unsupported
- Created methods for serialising and deserialising
DTensor
objects
- (Breaking change) The methods
CholeskyFactoriser::factorise
,CholeskyFactoriser::solve
,QRFactoriser::factorise
,QRFactoriser::leastSquares
, andQRFactoriser::getQR
are nowvoid
and do not return a status code. Instead, a status code is returned by calledstatusCode
. This change leads to a reduction in data being downloaded from the GPU. - In
Svd
a status code (bool
) is returned fromSvd<double>::factorise
only if the#GPUTILS_DEBUG_MODE
is defined, otherwise, the method returns alwaystrue
. - New base class
IStatus
used for a universal implementation ofinfo()
- When slicing a
DTensor
alongaxis=2
, update the pointer to matrices - We got rid of warning
DTensor<T>::createRandomTensor
- Memory management improvements: we got rid of
pointerToMatrices
, which would unnecessarily allocate memory andaddAB
does not allocate any new memory internally.
- Left/right Givens rotations
GivensAnnihilator
implemented
- Patch initialisation of Q in QR decomposition.
- Add test for tall skinny matrices.
- Implementation and test of QR factorisation for tall or square matrices.
- Solve least-square problems with QR factorisation.
- Improve documentation.
- Implementation and test of methods
.maxAbs()
and.minAbs()
for any tensor.
- Support for random tensors
- Implementation of
CholeskyMultiFactoriser
which performs multiple Cholesky factorisations in parallel
- Using a function
numBlocks
instead of the macroDIM2BLOCKS
- Using
TEMPLATE_WITH_TYPE_T
andTEMPLATE_CONSTRAINT_REQUIRES_FPX
for the code to run on both C++17 and C++20
- Implementation and test of
Nullspace(DTensor A)
method.project(DTensor b)
project
will project in place eachbi
onto the nullspace ofAi
- Implementation of
DTensor<T>
, which is our basic entity for data storage and maniputation (supports basic linear algebra usingcublas
andcusolver
); implementation of=+
,-=
,*=
(for scalars and other tensors),+
,-
,*
(scalars and tensors), printing (usingstd::cout <<
), computation of norms (Frobenius and sum of absolute values of all elements); device vectors and matrices are tensors - Singular value decomposition using
cublas
- Least-squares on tensors
- Computation of nullspace matrices (on tensor objects)
- Cholesky factorisation
- Set up unit tests, CI, and CHANGELOG