Michael Marshall
7ee66bf453
Make sure H5NS has empty definition if HDF5 built without C++ namespace. Add comment in Hdf5IO.cc indicating likely source of error using H5NS, i.e. lack of --enable-cxx in hdf5 configure.
2021-09-19 19:45:20 +01:00
Michael Marshall
2b1fcd78c3
Fixes post review with Peter: a) Correct bug in isRegularShape - detect 3d matrix where 1st slice is 2x2 and second slice is 2x1; b) Synchronisation of EigenResizeCounter done by checking we're the OMP primary thread; c) Move definition of EigenResizeCounter to new file, BaseIO.cc
2021-05-31 22:24:54 +01:00
Michael Marshall
0a4e0b49a0
BaseIO: Added "EigenResizeCounter" to keep track of any allocations/deallocations to Eigen tensors during readback. On read, if the tensor is resized, EigenResizeCounter += delta memory (in bytes)
2021-05-31 12:49:56 +01:00
Michael Marshall
76af169f05
Add global namespace to Writer<T> and Reader<T> inside GRID_SERIALIZABLE_CLASS_MEMBERS (so that "using Grid" not necessary).
...
Fix issue with output of Grid::iMatrix so that M<3>{{148,149,150,} {151,152,153,} {154155156}} becomes M<3>{{148,149,150} {151,152,153} {154,155,156}}
2021-05-31 08:43:02 +01:00
Michael Marshall
7b89232251
Extended HDF5 serialisation of std::vector<T> where T now also includes Grid scalar/vector/matrix
...
Changed VectorUtils element traits to is_flattenable, because: a) contract changed on what it does; and b) no other Grid dependencies on element. Needs review.
Initial tests work ... needs proper regression testing.
2021-05-30 20:27:53 +01:00
Michael Marshall
ef0ddd5d04
std::vector serialisation in hdf5 uses a different format if the vector is ragged. When reading back std::vector we need to check which format we're reading (since we don't know a priori) and this involves looking for attributes that may not exist. The c++ API: a) throws; and b) prints voluminous logging. Switched to non-throwing, non-logging, C version of the API after code review.
2021-05-24 18:43:55 +01:00
Michael Marshall
9b73dacf50
First row might still be ragged if multi dimensional. attrExists() doesn't throw, but easier to wrap in try ... catch than to explain in comment.
2021-05-22 04:34:32 +01:00
Michael Marshall
244b4aa07f
Serialise std::vector of numeric types as multidimensional object if size is regular ... or individually if ragged
2021-05-21 20:08:56 +01:00
Peter Boyle
f313565a3c
HiP compile
2020-10-31 12:12:40 +00:00
Peter Boyle
cdf0a04fc5
Merge branch 'develop' into sycl
2020-06-09 04:00:12 -04:00
5aa60be17d
SerialisableClassName method for serialisable enum, and boolean to test if a serialisable object is an enum
2020-05-15 20:00:34 +01:00
Peter Boyle
bbbee5660d
First compiile on HiP
2020-05-10 05:28:09 -04:00
Peter Boyle
28a1fcaaff
First compile against SYCL
2020-05-05 11:13:27 -07:00
Michael Marshall
4a4b9e305d
Fix: strToVec enters infinite loop and exhausts memory if operator>> fails before the end of string, e.g. if parsing "0_0_0" for momentum instead of "0 0 0".
2020-04-30 19:40:04 +01:00
Michael Marshall
dbaeefaeef
All Eigen::TensorMap objects are fixed (i.e. cannot be dynamically resized)
2020-04-30 15:02:51 +01:00
Michael Marshall
c69a3b6ef6
When saving eigenvectors, LapEvec now saves eigenvalues for every timeslice as well.
...
I.e. nT x nVec eigenvalues are saved in FileName.evals.conf.h5.
A new named tensor, "TimesliceEvals" can be used to simplify restoring these from disk.
NB: The changes in BaseIO add support so that Eigen tensors can be easily used in MPI operations, e.g. GlobalSum.
See LapEvec.hpp for an example of how this is done.
2020-01-29 21:20:20 +00:00
Michael Marshall
0ca1992151
Remove warning in tensor layout comparison. Make default names and index names visible for PerambTensor and NoiseTensor
2019-12-20 13:53:27 +00:00
Peter Boyle
a23dc295ac
Remove compiler errors and warnings
2019-07-18 14:47:02 +01:00
Peter Boyle
08904f830e
Merge develop
2019-07-16 11:59:56 +01:00
Peter Boyle
fa9cd50c5b
Merge branch 'develop' into feature/gpu-port
2019-07-16 11:55:17 +01:00
Peter Boyle
1cd4ee0706
Thrust used on GPU builds
2019-06-18 12:50:35 +01:00
Michael Marshall
f7b4fd0f69
Make sure Grid::Serializable can write Eigen Tensors to output streams. NB:
...
1) The Eigen package defines operator<< for Eigen tensors, but this format is different, hence Grid::Serializable::WriteMember
2) For simplification, the contents are written in memory order. I.e. Different results will be obtained depending on whether the tensor is row- or column-major
2019-04-06 15:40:23 +01:00
Michael Marshall
00b4139c16
Eigen tensor serialisation fixes after Antonin's review
2019-04-03 22:48:07 +01:00
Michael Marshall
a381d34f37
Fix build with Intel '17 compiler, i.e. workaround incorrect auto types for c++ style definitions.
...
E.g. assuming T::rank is an int, then objects defined like so:
const auto rank{T::rank};
should also be int. Unfortunately, Intel '17 instead defines them to be std::initializer_list<int>, then proceeds to complain where these variables are used that they cannot be converted to int. NB: This was fixed under Intel '18
2019-03-23 09:24:15 +00:00
Michael Marshall
12d8bf1ced
Eigen::Tensor serialisation. Tested on single and double precision builds
2019-03-20 22:27:41 +00:00
Peter Boyle
38852737e4
No compile fix on clang
2019-01-01 15:55:13 +00:00
Peter Boyle
3a4e397e72
Deprecating JSON, too hard to support under NVCC
2019-01-01 15:04:33 +00:00
Peter Boyle
4e95accf80
Namespace fix
2018-12-15 21:46:17 +00:00
Peter Boyle
b57a4d32aa
Merge branch 'develop' into feature/gpu-port
2018-12-13 05:11:34 +00:00
12f4499502
HDF5 serialiser fix
2018-11-27 19:09:50 +00:00
a4c55406ed
checksummed HDF5 IO
2018-11-27 17:43:19 +00:00
41032fef44
Optional RW mode for Hdf5Reader
2018-11-21 18:36:50 +00:00
6448fe7121
More flexible XML control in Lime files
2018-10-01 19:32:50 +01:00
7b6b712565
function to convert std::vector to string
2018-09-10 15:17:32 +01:00
fb7d021b9d
Hadrons: moving Hadrons to root directory, build system improvements
2018-08-28 15:00:40 +01:00