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

RDMA error checking and finalize reordering #2554

Closed
wants to merge 570 commits into from
Closed
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
570 commits
Select commit Hold shift + click to select a range
ae222b0
Kill spurious printfs
eisenhauer Aug 19, 2020
3dd4d5b
Fix *_test_2 makefile dependencies to use source instead of object files
Aug 19, 2020
0aa89ab
Fix typos in adios2-config generation script
Aug 19, 2020
13c9916
Bump minimum cmake versions in scripts as appropriate
Aug 19, 2020
83df85e
Merge pull request #2439 from chuckatkins/misc-cleanup
Aug 19, 2020
1085fe5
Merge pull request #2438 from eisenhauer/rollback
eisenhauer Aug 20, 2020
8ed022c
Merge branch 'upstream-ffs' into ffsupstream
eisenhauer Aug 21, 2020
7903477
ffs 2020-08-21 (c8dd2544)
Aug 21, 2020
f6db88e
Merge pull request #2441 from eisenhauer/ffsupstream
eisenhauer Aug 22, 2020
b4348db
use unordered_map instead of map
JasonRuonanWang Aug 26, 2020
8a74fd7
Switch to numeric type spec in SST/FFS
eisenhauer Aug 26, 2020
3707834
Merge pull request #2445 from JasonRuonanWang/master
JasonRuonanWang Aug 26, 2020
66a6322
Fix ZFP
eisenhauer Aug 27, 2020
b2eb096
clang-format
eisenhauer Aug 27, 2020
b2efa2b
Merge pull request #2446 from eisenhauer/SstNumericType
eisenhauer Aug 27, 2020
76d1c46
added an SSC test which calls LockWriterDefinitions and LockReaaderSe…
JasonRuonanWang Sep 1, 2020
7d2e891
added TestSscBaseUnlocked
JasonRuonanWang Sep 1, 2020
49ed4bb
added missing file
JasonRuonanWang Sep 1, 2020
e364988
reduced steps to avoid timeout for slow windows CI
JasonRuonanWang Sep 1, 2020
c9df3bf
Fix StreamReader reading step by step. It only read one block if inde…
pnorbert Sep 2, 2020
36754c3
Merge pull request #2450 from pnorbert/fix-streamreader
pnorbert Sep 2, 2020
70131ed
try solving the windows CI error
JasonRuonanWang Sep 7, 2020
13ca030
try more
JasonRuonanWang Sep 7, 2020
cf06d57
Merge pull request #2448 from JasonRuonanWang/master
JasonRuonanWang Sep 7, 2020
4bcd665
auto call BeginStep in SscReader::Close
JasonRuonanWang Sep 10, 2020
9aa6277
clang-format
JasonRuonanWang Sep 10, 2020
c789adb
Merge pull request #2456 from JasonRuonanWang/master
JasonRuonanWang Sep 10, 2020
409b172
Fix so that MPMD tests run
eisenhauer Sep 3, 2020
12e6657
add step status checking in staging-common fortran reader
JasonRuonanWang Sep 7, 2020
30d7f80
staging-common TimeoutOnOpen is not using MPMD, so removed for SSC
JasonRuonanWang Sep 7, 2020
f702d1f
added support for APPEND in HDF5 engine
guj Sep 11, 2020
e592829
Merge branch 'upstream-EVPath' into Mismatch
eisenhauer Sep 11, 2020
8173e22
EVPath 2020-09-11 (cce3b431)
Sep 11, 2020
27e7010
Detect SST version mismatch
eisenhauer Sep 11, 2020
b046337
Merge pull request #2460 from eisenhauer/Mismatch
eisenhauer Sep 12, 2020
2d6aa2d
fixed a bug in SSC for handling zero data
JasonRuonanWang Sep 13, 2020
55b417e
added const function to ADIOS step read from file
guj Sep 14, 2020
bc7c03b
inherited DoSteps() function to return steps read from file
guj Sep 14, 2020
5a7bd2f
read back file content when in the append mode
guj Sep 14, 2020
0d44ee2
added append test
guj Sep 14, 2020
e116bb4
clang-format
guj Sep 14, 2020
771231a
check read results
guj Sep 14, 2020
2baa08d
Merge pull request #2459 from guj/issue2376
pnorbert Sep 15, 2020
e227979
check whether file is a hdf5 file before read
guj Sep 17, 2020
5ce226f
do not enforce .h5 as file extension
guj Sep 17, 2020
7a7d092
Hierarchical reading implementation
dmitry-ganyushin Sep 17, 2020
66a2557
Merge pull request #2463 from guj/issueAtAdiosTest32
pnorbert Sep 18, 2020
f357ea5
Enable missing combo: compression + aggregation. Fixes #2461
pnorbert Sep 18, 2020
15b8642
Merge pull request #2466 from pnorbert/fix-aggregation-compression
pnorbert Sep 18, 2020
0e6e0fc
Sometimes suppress warnings on failed messages
eisenhauer Sep 19, 2020
57fd695
Merge pull request #2468 from eisenhauer/SendWarn
eisenhauer Sep 19, 2020
508bbcf
Removed a redundant BuildTree function.
dmitry-ganyushin Sep 22, 2020
ae06d09
Fixed a memory leak.
dmitry-ganyushin Sep 22, 2020
529f3ab
Added missing header file
dmitry-ganyushin Sep 22, 2020
984faa3
Added newline
dmitry-ganyushin Sep 22, 2020
7644bf9
Removed a redundant include file
dmitry-ganyushin Sep 23, 2020
96e4d7d
Removed unused variables in a test
dmitry-ganyushin Sep 23, 2020
f32ccb5
Fixed clang formatting
dmitry-ganyushin Sep 24, 2020
89f4d7d
Fixed clang formatting
dmitry-ganyushin Sep 24, 2020
39a0f21
Fixed clang formatting
dmitry-ganyushin Sep 24, 2020
346d251
Merge pull request #2465 from dmitry-ganyushin/hierarchical_reading
dmitry-ganyushin Sep 24, 2020
1a3307d
temporarily disabled a performance optimization mechanism in SSC
JasonRuonanWang Sep 24, 2020
032b9e7
added back the performance optimization in SSC which avoids getting d…
JasonRuonanWang Sep 25, 2020
9b9c3cd
Limit DP warnings to rank 0, add <CR>
eisenhauer Sep 29, 2020
9dca351
Merge pull request #2471 from eisenhauer/DPWarning
eisenhauer Sep 29, 2020
5db13b8
Direct f2c to correct call
williamfgc Sep 29, 2020
f9da045
Fix test to enable check in number of steps
williamfgc Sep 29, 2020
3ece3e4
Try StreamReader=on
eisenhauer Sep 29, 2020
25218d7
Try StreamReader=on
eisenhauer Sep 29, 2020
c963567
Restore xml files, disable buggy tests on windows
eisenhauer Sep 29, 2020
7cd3a84
Merge pull request #2473 from williamfgc/adios2_steps
pnorbert Sep 29, 2020
994ae04
Merge pull request #2452 from eisenhauer/MPMDFix
eisenhauer Sep 29, 2020
29e88de
cleaned up dataman serializer
JasonRuonanWang Sep 30, 2020
ad1e7d7
more cleaning up
JasonRuonanWang Oct 1, 2020
9abe49d
Merge pull request #2476 from JasonRuonanWang/master
JasonRuonanWang Oct 1, 2020
ea73b47
Add BP3/BP4 options: NumAggregators (same as SubStreams) and Aggregat…
pnorbert Oct 2, 2020
8b3390b
remove zfp operator from test that was added accidentally for some ma…
pnorbert Oct 2, 2020
3dafb1f
check if dataset exists before creating in HDF5. conflict showed up w…
guj Oct 4, 2020
a8fd466
Merge pull request #2478 from guj/master
guj Oct 5, 2020
8201b44
Add a tool for measuring isolated metadata performance in staging
eisenhauer Oct 5, 2020
ab8353a
Fix sign errors in handling integer parameters
pnorbert Oct 2, 2020
1cf3c9e
include algorithm
eisenhauer Oct 5, 2020
561c051
remove unused
eisenhauer Oct 5, 2020
f52da4b
include cctype
eisenhauer Oct 5, 2020
bb0ce49
MSVC doesn't support variables arrays on the stack
eisenhauer Oct 5, 2020
ff57142
cast to int to avoid MSVC warnings
eisenhauer Oct 5, 2020
31a1d00
Other half of shortcircuit reads
eisenhauer Oct 5, 2020
89010a4
Merge pull request #2479 from eisenhauer/PerfMetaData
eisenhauer Oct 5, 2020
4ab84db
ffs 2020-10-05 (49254386)
Oct 5, 2020
8064413
Merge branch 'upstream-ffs' into upstream
eisenhauer Oct 5, 2020
f2f55df
Merge branch 'upstream-EVPath' into upstream
eisenhauer Oct 5, 2020
78bab49
EVPath 2020-10-05 (13131eb5)
Oct 5, 2020
0e0aba5
Merge pull request #2480 from eisenhauer/upstream
eisenhauer Oct 5, 2020
4b8722c
fix BP3 specific test for reading each subfile alone to make sure it …
pnorbert Oct 6, 2020
e0f2567
set aggregation to N-to-N for tests that (wrongly) assume that a bloc…
pnorbert Oct 6, 2020
6e310cd
Set aggregator ratio to 1 for the append test because of the existing…
pnorbert Oct 6, 2020
7cfd5fd
Set aggregator ratio to 1 for thei time-aggregation test because of t…
pnorbert Oct 6, 2020
efd7135
Create aggregator only if aggregators < mpi size
pnorbert Oct 6, 2020
f0ca049
replace macro to make aggregation work with complex and double comple…
pnorbert Oct 6, 2020
1172c09
signed/unsigned fix
pnorbert Oct 6, 2020
9ea6100
remove unused variable
pnorbert Oct 6, 2020
2556fd0
At the collective call BeginStep(), define ALL variables in IO to HDF5
guj Oct 7, 2020
2d03e12
making INDEPENDENT MODE explicit for hdf5
guj Oct 7, 2020
2980582
revised example to work with load inbalanced write
guj Oct 7, 2020
ce36fa3
Change size_t to uint64_t for storing sub-block-minmax info and fix u…
pnorbert Oct 6, 2020
e9b41b1
Merge pull request #2477 from pnorbert/aggregate-one-per-node
pnorbert Oct 7, 2020
1bdc379
added function to remove unwritten variables from steps
guj Oct 8, 2020
af612ab
removed empty line according to Travis
guj Oct 8, 2020
7a938a3
move the fortran order handling to HDF5Common.tcc
guj Oct 8, 2020
56999bc
Making sure all steps are created in HDF5 at BeginStep()
guj Oct 9, 2020
8f2470f
Merge pull request #2484 from guj/1006
guj Oct 9, 2020
067771e
Fixed issue 2338: Overloaded the Get function in python binging for r…
dmitry-ganyushin Oct 9, 2020
74b342f
Fixed issue 2338: Overloaded the Get function in python binging for r…
dmitry-ganyushin Oct 9, 2020
a164fa6
resolved conflict
dmitry-ganyushin Oct 9, 2020
98cd2eb
Merge pull request #2486 from dmitry-ganyushin/f2338-python-str-fullAPI
dmitry-ganyushin Oct 9, 2020
89a03cf
EVPath 2020-10-16 (3eb31f38)
Oct 16, 2020
7de8221
Merge branch 'upstream-EVPath' into Upstream
eisenhauer Oct 16, 2020
d272b4f
EVPath 2020-10-16 (1d648fbb)
Oct 16, 2020
e550361
Merge branch 'upstream-EVPath' into Upstream
eisenhauer Oct 16, 2020
ab1a088
EVPath 2020-10-16 (44184e3a)
Oct 16, 2020
532fa31
Merge branch 'upstream-EVPath' into Upstream
eisenhauer Oct 16, 2020
7263faa
Merge pull request #2488 from eisenhauer/Upstream
eisenhauer Oct 16, 2020
64fd714
Added a test to write/read a python string for low-level API
dmitry-ganyushin Oct 19, 2020
75a230b
Added a test to write/read a python string for low-level API
dmitry-ganyushin Oct 19, 2020
ea89b91
Merge pull request #2489 from dmitry-ganyushin/f2338-python-str-fullAPI
dmitry-ganyushin Oct 19, 2020
81c4a93
Python clean-up
dmitry-ganyushin Oct 20, 2020
e2306fd
Merge pull request #2492 from dmitry-ganyushin/f2338-python-str-fullAPI
dmitry-ganyushin Oct 20, 2020
4f195bb
Changed function names GetGroup and OpenGroup for InquireGroup in hie…
dmitry-ganyushin Oct 20, 2020
a2049b4
Merge pull request #2493 from dmitry-ganyushin/HierarchicalReading
dmitry-ganyushin Oct 21, 2020
7d2ac11
Fortran: Fix submodule and preprocessor issues with Cray Fortran
Oct 19, 2020
eef9a70
Fortran: Renamed submodules to have the full scope in their name.
Oct 22, 2020
2dce6b4
Fortran: detect the availability of command line arg parsing
Oct 22, 2020
bd6a788
Merge pull request #2490 from chuckatkins/fix-cray-fortran
Oct 29, 2020
6768e90
GoogleTest 2020-10-27 (3005672d)
Oct 27, 2020
7a72671
Merge branch 'upstream-GoogleTest' into update-tpl
Oct 30, 2020
0561e91
Clean KWSys for update
Oct 30, 2020
1fa26e6
KWSys 2020-09-29 (4a19ed43)
kwrobot Sep 29, 2020
1774d02
Merge branch 'upstream-KWSys' into update-tpl
Oct 30, 2020
3068767
mingw-w64 2020-10-25 (12b5d134)
Oct 25, 2020
498515d
Merge branch 'upstream-mingw-w64' into update-tpl
Oct 30, 2020
72e59ae
Clean for nlohmann_json update
Oct 30, 2020
fe7a6b8
nlohmann_json 2020-08-06 (350ff4f7)
Aug 6, 2020
281dce3
Merge branch 'upstream-nlohmann_json' into update-tpl
Oct 30, 2020
9633b24
pugixml 2020-10-26 (30761e48)
Oct 26, 2020
3b51f6f
Merge branch 'upstream-pugixml' into update-tpl
Oct 30, 2020
8e3ae4b
pubind11: use master tag for updates
Oct 30, 2020
3a8c99c
pybind11 2020-10-29 (06a54018)
Oct 29, 2020
cf116b8
Merge branch 'upstream-pybind11' into update-tpl
Oct 30, 2020
739b799
cmake: Update upstream FindHDF5.cmake
Oct 30, 2020
4fc351f
cmake: Update upstream FindMPI
Oct 30, 2020
4457ebb
nlohmann_json: Restore CMakeLists
Oct 30, 2020
0be1587
cmake: Update upstream FindPkgConfig
Oct 30, 2020
c0db4d3
Added a unittest for reading a string with high-level API in python
dmitry-ganyushin Nov 2, 2020
fecbe8c
Adjusted formatting
dmitry-ganyushin Nov 2, 2020
16c40e8
Removed unused variable
dmitry-ganyushin Nov 2, 2020
99e128a
Added comm to read/write functions
dmitry-ganyushin Nov 3, 2020
dc7adf5
kwsys: remove git files
Nov 3, 2020
d1d10d3
dataman: update for change in json api
Nov 3, 2020
a37321a
ssc: Use symbolic logic operators since keyword operators break msvc
Nov 3, 2020
c3f228a
ci: Remove pgi builds as we migrate to nvhpc sdk
Nov 3, 2020
3db4fa2
Merge pull request #2501 from chuckatkins/update-tpl
Nov 3, 2020
807f36c
Restructure FFS marshalling
eisenhauer Oct 22, 2020
7add316
Remove temporary timing code
eisenhauer Oct 27, 2020
da65c9c
Format
eisenhauer Oct 27, 2020
46ea86f
Don't run Repeated thread test on a daily basis
eisenhauer Oct 27, 2020
95299b7
Leaks
eisenhauer Oct 28, 2020
1380b62
Fortran: Fix module install rules for Cray Fortran
Nov 2, 2020
b4fcd21
Added a unittest for reading a string with high-level API in python
dmitry-ganyushin Nov 2, 2020
f3fe679
Merge remote-tracking branch 'origin/python-binding' into python-binding
dmitry-ganyushin Nov 3, 2020
8356628
Don't create var if it exists
eisenhauer Nov 3, 2020
e711561
Merge pull request #2502 from dmitry-ganyushin/python-binding
dmitry-ganyushin Nov 4, 2020
e2a40b8
Merge pull request #2499 from eisenhauer/FFSRestructure
eisenhauer Nov 4, 2020
f3f9caa
ci: Use 1g for /dev/shm in containers
Nov 5, 2020
ce24099
Merge pull request #2503 from chuckatkins/cray-fortran-install-modules
Nov 5, 2020
04072c0
Added "std::vector<size_t> GetAbsoluteSteps(const Variable<T> variabl…
pnorbert Nov 5, 2020
6e001cc
tinker with int <--> size_t issue
pnorbert Nov 5, 2020
4b24a85
Merge pull request #2508 from pnorbert/GetAbsoluteSteps
pnorbert Nov 5, 2020
659e679
added operation checking
JasonRuonanWang Oct 21, 2020
7486c7e
pass VariableBase::Operations directly to dataman serializer
JasonRuonanWang Oct 26, 2020
5d63554
pass compression parameters using the VariableBase::Operations directly
JasonRuonanWang Oct 26, 2020
f814ba1
modified compression parameter form in dataman serializer
JasonRuonanWang Oct 26, 2020
e95ef9d
fixed an error
JasonRuonanWang Oct 26, 2020
addcb47
Merge pull request #2497 from JasonRuonanWang/master
JasonRuonanWang Nov 13, 2020
f4c27c7
Release lock during timestep release in DestroyWriter in order to pre…
philip-davis May 18, 2020
28565a2
Initialize dataplane interface to zero.
philip-davis Nov 16, 2020
6afa4b3
SST RDMA TSAN
eisenhauer Jun 17, 2020
be831e5
sst: Protect fi_getinfo calls with a mutex
Jun 18, 2020
2be111b
Merge branch 'master' of github.com:ornladios/ADIOS2 into preload_param
philip-davis Nov 16, 2020
a0c19af
Trigger Build
philip-davis Nov 16, 2020
c5828ca
Do not shrink serialization buffer upon EndStep
franzpoeschel Nov 17, 2020
ae5fa3b
Make preload conditional on setting Preload Timestep on the reader
philip-davis Nov 17, 2020
9825791
Extend error checking in fabric init
philip-davis Nov 17, 2020
85ba8c7
update mgard due to its API change
eisenhauer Nov 17, 2020
da8ef20
Moved reader-side pattern lock detection to timestepArrived
philip-davis Nov 17, 2020
a205a33
Merge pull request #2517 from eisenhauer/MGardFix
eisenhauer Nov 17, 2020
9bbc846
Merge pull request #2256 from philip-davis/preload_param
philip-davis Nov 17, 2020
cda50f3
Tweak test to allow a bit of extra buffer usage (16M -> 18M)
eisenhauer Nov 17, 2020
8483536
Added bool flag to C++ IO.AvailableVariables() call to potentially re…
pnorbert Nov 18, 2020
0f4eabf
Merge pull request #2519 from pnorbert/available_variables_namesonly
pnorbert Nov 19, 2020
301b4e2
Merge pull request #2516 from franzpoeschel/fix-bp4-serializer-buffer…
pnorbert Nov 19, 2020
5629b14
ci: Update debian sid image
Nov 5, 2020
2a8c580
ci: Update suse PGI images to use the NVIDIA HPC SDK
Nov 5, 2020
de026c4
pgi: quiet some pgi warnigns in thirdparty sst deps
Nov 10, 2020
6d1f35e
pgi: Cleanup warnings
Nov 11, 2020
facd2e1
Merge pull request #2509 from chuckatkins/update-ci-images
Nov 20, 2020
fa1a509
ci: Move formatting checks to GitHub Actions
Dec 9, 2020
0f47d3e
Formatting cleanup
Dec 9, 2020
1130b5e
Merge pull request #2536 from chuckatkins/move-travis-gha
Dec 10, 2020
791c8c3
Zero out first and last KB of the DATA buffer in BP4, instead of the …
pnorbert Dec 7, 2020
79b2b38
Merge pull request #2534 from pnorbert/buffer-reset
pnorbert Dec 10, 2020
2f452b8
Pre-select steps for reading
dmitry-ganyushin Dec 10, 2020
f2e995a
Formatting
dmitry-ganyushin Dec 10, 2020
8c2d76f
added dataman zfp test
JasonRuonanWang Nov 25, 2020
7c5355d
added conditions for building dataman zfp test
JasonRuonanWang Nov 25, 2020
5f00e3c
clang format
JasonRuonanWang Nov 25, 2020
94c776c
rerun CI
JasonRuonanWang Nov 25, 2020
d96dc85
minor change
JasonRuonanWang Nov 25, 2020
3c1d404
rerun CI
JasonRuonanWang Nov 25, 2020
8268abd
added dataman bzip2 test
JasonRuonanWang Nov 26, 2020
c238c01
changed number of steps
JasonRuonanWang Nov 26, 2020
57490be
rerun CI
JasonRuonanWang Dec 2, 2020
1ce9db1
Merge pull request #2525 from JasonRuonanWang/master
JasonRuonanWang Dec 10, 2020
6d59f1d
dataman reliable mode worked again
JasonRuonanWang Dec 9, 2020
4de64fc
removed comments
JasonRuonanWang Dec 9, 2020
4dccd5f
fixed bug for fast mode
JasonRuonanWang Dec 9, 2020
660b58e
include atomic
JasonRuonanWang Dec 9, 2020
4e66d8a
updated dataman doc
JasonRuonanWang Dec 10, 2020
6110e8f
Merge pull request #2540 from dmitry-ganyushin/f2458-pre-select-steps…
dmitry-ganyushin Dec 10, 2020
4322bdc
Merge pull request #2542 from JasonRuonanWang/dataman-doc
JasonRuonanWang Dec 11, 2020
d5cee5c
fixed a bug in declaring data pointer
JasonRuonanWang Dec 11, 2020
bdcd1d9
removed verbose in dataman reliable test
JasonRuonanWang Dec 11, 2020
28e1862
use std::atomic for m_CurrentStep
JasonRuonanWang Dec 11, 2020
f921af2
use std::atomic for m_ReplyThreadActive
JasonRuonanWang Dec 11, 2020
9172062
added initialization for atomic variables
JasonRuonanWang Dec 11, 2020
6e40c94
Merge pull request #2537 from JasonRuonanWang/dataman
JasonRuonanWang Dec 11, 2020
936b2ef
Added a test to read strings for all steps at once in python
dmitry-ganyushin Dec 8, 2020
2d1f069
Merge pull request #2544 from dmitry-ganyushin/python-binding-str
dmitry-ganyushin Dec 11, 2020
abd38d1
Enable changing Variable shape (global dimensions) of global arrays w…
pnorbert Dec 4, 2020
e4bd27f
Merge pull request #2545 from pnorbert/changing-shape-in-step
pnorbert Dec 15, 2020
864b120
Fix brew mac build python install problem
eisenhauer Dec 19, 2020
19c7c91
Merge pull request #2551 from eisenhauer/MacBuildFix
eisenhauer Dec 19, 2020
cd0a8e6
Support for multiple local blocks per rank in FFS marshalling
eisenhauer Dec 18, 2020
4f9052f
Work around a bug in BP marshalling in SST
eisenhauer Dec 18, 2020
b5b1288
Disable LocalMulti for other engines
eisenhauer Dec 19, 2020
87fb867
Kill warnings
eisenhauer Dec 19, 2020
71c583d
Added tests
dmitry-ganyushin Dec 14, 2020
fd568cd
clean-up
dmitry-ganyushin Dec 20, 2020
999aac1
Merge pull request #2549 from eisenhauer/FFSBlocks
eisenhauer Dec 20, 2020
c0393b3
Merge pull request #2553 from dmitry-ganyushin/python-tests-fin
dmitry-ganyushin Dec 20, 2020
83e5388
RDMA error checking and finalize reordering
philip-davis Dec 20, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
174 changes: 135 additions & 39 deletions source/adios2/toolkit/sst/cp/ffs_marshal.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,8 @@ static void BreakdownVarName(const char *Name, char **base_name_p, int *type_p,
*base_name_p = strdup(NameStart);
}

static char *BuildArrayName(const char *base_name, const int type,
const int element_size)
static char *BuildArrayDimsName(const char *base_name, const int type,
const int element_size)
{
int Len = strlen(base_name) + 3 + strlen("SST_") + 16;
char *Ret = malloc(Len);
Expand All @@ -81,6 +81,17 @@ static char *BuildArrayName(const char *base_name, const int type,
return Ret;
}

static char *BuildArrayDBCountName(const char *base_name, const int type,
const int element_size)
{
int Len = strlen(base_name) + 3 + strlen("SST_") + 16;
char *Ret = malloc(Len);
sprintf(Ret, "SST%d_%d_", element_size, type);
strcat(Ret, base_name);
strcat(Ret, "DBCount");
return Ret;
}

static void BreakdownArrayName(const char *Name, char **base_name_p,
int *type_p, int *element_size_p)
{
Expand Down Expand Up @@ -399,7 +410,8 @@ extern void FFSFreeMarshalData(SstStream Stream)
{
free(Info->VarList[i]->VarName);
free(Info->VarList[i]->PerWriterMetaFieldOffset);
free(Info->VarList[i]->PerWriterDataFieldDesc);
free(Info->VarList[i]->PerWriterBlockCount);
free(Info->VarList[i]->PerWriterBlockStart);
free(Info->VarList[i]->PerWriterStart);
free(Info->VarList[i]->PerWriterCounts);
free(Info->VarList[i]->PerWriterIncomingData);
Expand Down Expand Up @@ -462,7 +474,8 @@ static FFSWriterRec CreateWriterRec(SstStream Stream, void *Variable,
{
// Array field. To Metadata, add FMFields for DimCount, Shape, Count
// and Offsets matching _MetaArrayRec
char *ArrayName = BuildArrayName(Name, Type, ElemSize);
char *ArrayName = BuildArrayDimsName(Name, Type, ElemSize);
char *ArrayDBCount = BuildArrayDBCountName(Name, Type, ElemSize);
AddField(&Info->MetaFields, &Info->MetaFieldCount, ArrayName, Int64,
sizeof(size_t));
free(ArrayName);
Expand All @@ -471,12 +484,15 @@ static FFSWriterRec CreateWriterRec(SstStream Stream, void *Variable,
char *ShapeName = ConcatName(Name, "Shape");
char *CountName = ConcatName(Name, "Count");
char *OffsetsName = ConcatName(Name, "Offsets");
AddField(&Info->MetaFields, &Info->MetaFieldCount, ArrayDBCount, Int64,
sizeof(size_t));
AddFixedArrayField(&Info->MetaFields, &Info->MetaFieldCount, ShapeName,
Int64, sizeof(size_t), DimCount);
AddFixedArrayField(&Info->MetaFields, &Info->MetaFieldCount, CountName,
Int64, sizeof(size_t), DimCount);
AddFixedArrayField(&Info->MetaFields, &Info->MetaFieldCount,
OffsetsName, Int64, sizeof(size_t), DimCount);
AddVarArrayField(&Info->MetaFields, &Info->MetaFieldCount, CountName,
Int64, sizeof(size_t), ArrayDBCount);
AddVarArrayField(&Info->MetaFields, &Info->MetaFieldCount, OffsetsName,
Int64, sizeof(size_t), ArrayDBCount);
free(ArrayDBCount);
free(ShapeName);
free(CountName);
free(OffsetsName);
Expand Down Expand Up @@ -516,10 +532,11 @@ typedef struct _ArrayRec

typedef struct _MetaArrayRec
{
size_t Dims;
size_t *Shape;
size_t *Count;
size_t *Offsets;
size_t Dims; // How many dimensions does this array have
size_t DBCount; // Dimens * BlockCount
size_t *Shape; // Global dimensionality [Dims] NULL for local
size_t *Count; // Per-block Counts [DBCount]
size_t *Offsets; // Per-block Offsets [DBCount] NULL for local
} MetaArrayRec;

typedef struct _FFSTimestepInfo
Expand Down Expand Up @@ -574,6 +591,14 @@ static size_t *CopyDims(const size_t Count, const size_t *Vals)
return Ret;
}

static size_t *AppendDims(size_t *OldDims, const size_t OldCount,
const size_t Count, const size_t *Vals)
{
size_t *Ret = realloc(OldDims, (OldCount + Count) * sizeof(Ret[0]));
memcpy(Ret + OldCount, Vals, Count * sizeof(Ret[0]));
return Ret;
}

static size_t CalcSize(const size_t Count, const size_t *Vals)
{
size_t i;
Expand Down Expand Up @@ -642,9 +667,11 @@ static FFSVarRec CreateVarRec(SstStream Stream, const char *ArrayName)
Ret->VarName = strdup(ArrayName);
Ret->PerWriterMetaFieldOffset =
calloc(sizeof(size_t), Stream->WriterCohortSize);
Ret->PerWriterDataFieldDesc =
calloc(sizeof(FMFieldList), Stream->WriterCohortSize);
Ret->PerWriterStart = calloc(sizeof(size_t *), Stream->WriterCohortSize);
Ret->PerWriterBlockStart =
calloc(sizeof(size_t *), Stream->WriterCohortSize);
Ret->PerWriterBlockCount =
calloc(sizeof(size_t *), Stream->WriterCohortSize);
Ret->PerWriterCounts = calloc(sizeof(size_t *), Stream->WriterCohortSize);
Ret->PerWriterIncomingData =
calloc(sizeof(void *), Stream->WriterCohortSize);
Expand Down Expand Up @@ -743,8 +770,11 @@ extern int SstFFSGetLocalDeferred(SstStream Stream, void *Variable,
memset(Req, 0, sizeof(*Req));
Req->VarRec = Var;
Req->RequestType = Local;
Req->NodeID = BlockID;
Req->BlockID = BlockID;
// make a copy of Count request
CP_verbose(Stream, TraceVerbose,
"Get request local, Name %s, BlockID %d, Count %zu\n", Name,
BlockID, Count[0]);
Req->Count = malloc(sizeof(Count[0]) * Var->DimCount);
memcpy(Req->Count, Count, sizeof(Count[0]) * Var->DimCount);
Req->Data = Data;
Expand All @@ -758,7 +788,9 @@ static int NeedWriter(FFSArrayRequest Req, int i)
{
if (Req->RequestType == Local)
{
return (Req->NodeID == i);
size_t NodeFirst = Req->VarRec->PerWriterBlockStart[i];
size_t NodeLast = Req->VarRec->PerWriterBlockCount[i] + NodeFirst - 1;
return (NodeFirst <= Req->BlockID) && (NodeLast >= Req->BlockID);
}
// else Global case
for (int j = 0; j < Req->VarRec->DimCount; j++)
Expand Down Expand Up @@ -796,7 +828,7 @@ static void IssueReadRequests(SstStream Stream, FFSArrayRequest Reqs)
{
for (int i = 0; i < Stream->WriterCohortSize; i++)
{
if (NeedWriter(Reqs, i))
if ((Info->WriterInfo[i].Status != Needed) && (NeedWriter(Reqs, i)))
{
Info->WriterInfo[i].Status = Needed;
}
Expand Down Expand Up @@ -911,7 +943,6 @@ static void DecodeAndPrepareData(SstStream Stream, int Writer)
{
VarRec->PerWriterIncomingData[Writer] = data_base->Array;
VarRec->PerWriterIncomingSize[Writer] = data_base->ElemCount;
VarRec->PerWriterDataFieldDesc[Writer] = &FieldList[i + 1];
}
i += 2;
}
Expand Down Expand Up @@ -1317,6 +1348,19 @@ static void FillReadRequests(SstStream Stream, FFSArrayRequest Reqs)

if (Reqs->RequestType == Local)
{
int LocalBlockID =
Reqs->BlockID - Reqs->VarRec->PerWriterBlockStart[i];
size_t DataOffset = 0;
for (int i = 0; i < LocalBlockID; i++)
{
int BlockElemCount = 1;
for (int j = 0; j < DimCount; j++)
{
BlockElemCount *= RankSize[j];
}
DataOffset += BlockElemCount * ElementSize;
RankSize += DimCount;
}
RankOffset = calloc(DimCount, sizeof(RankOffset[0]));
RankOffsetFree = RankOffset;
GlobalDimensions =
Expand All @@ -1331,6 +1375,7 @@ static void FillReadRequests(SstStream Stream, FFSArrayRequest Reqs)
{
GlobalDimensions[i] = RankSize[i];
}
IncomingData = (char *)IncomingData + DataOffset;
}
if ((Stream->WriterConfigParams->CompressionMethod ==
SstCompressZFP) &&
Expand Down Expand Up @@ -1767,7 +1812,7 @@ static struct ControlInfo *BuildControl(SstStream Stream, FMFormat Format)
VarRec->ElementSize = ElementSize;
C->ElementSize = ElementSize;
}
i += 4;
i += 5; // number of fields in MetaArrayRec
free(ArrayName);
C->VarRec = VarRec;
}
Expand Down Expand Up @@ -1949,13 +1994,30 @@ static void BuildVarList(SstStream Stream, TSMetadataMsg MetaData,
meta_base->Count);
}
VarRec->DimCount = meta_base->Dims;
VarRec->PerWriterBlockCount[WriterRank] =
meta_base->Dims ? meta_base->DBCount / meta_base->Dims : 1;
VarRec->PerWriterStart[WriterRank] = meta_base->Offsets;
VarRec->PerWriterCounts[WriterRank] = meta_base->Count;
VarRec->PerWriterDataFieldDesc[WriterRank] = NULL;
Stream->ArrayBlocksInfoUpcall(
Stream->SetupUpcallReader, VarRec->Variable, VarRec->Type,
WriterRank, meta_base->Dims, meta_base->Shape,
meta_base->Offsets, meta_base->Count);
if (WriterRank == 0)
{
VarRec->PerWriterBlockStart[WriterRank] = 0;
}
if (WriterRank < Stream->WriterCohortSize - 1)
{
VarRec->PerWriterBlockStart[WriterRank + 1] =
VarRec->PerWriterBlockStart[WriterRank] +
VarRec->PerWriterBlockCount[WriterRank];
}
for (int i = 0; i < VarRec->PerWriterBlockCount[WriterRank]; i++)
{
size_t *Offsets = NULL;
if (meta_base->Offsets)
Offsets = meta_base->Offsets + (i * meta_base->Dims);
Stream->ArrayBlocksInfoUpcall(
Stream->SetupUpcallReader, VarRec->Variable, VarRec->Type,
WriterRank, meta_base->Dims, meta_base->Shape, Offsets,
meta_base->Count);
}
}
else
{
Expand All @@ -1965,7 +2027,6 @@ static void BuildVarList(SstStream Stream, TSMetadataMsg MetaData,
Stream->SetupUpcallReader, VarRec->VarName, VarRec->Type,
field_data);
}
VarRec->PerWriterDataFieldDesc[WriterRank] = NULL;
VarRec->PerWriterMetaFieldOffset[WriterRank] = FieldOffset;
}
}
Expand Down Expand Up @@ -2054,6 +2115,7 @@ extern void SstFFSMarshal(SstStream Stream, void *Variable, const char *Name,
}

MBase = Stream->M;
int AlreadyWritten = FFSBitfieldTest(MBase, Rec->FieldID);
FFSBitfieldSet(MBase, Rec->FieldID);

if (Rec->DimCount == 0)
Expand All @@ -2069,15 +2131,34 @@ extern void SstFFSMarshal(SstStream Stream, void *Variable, const char *Name,

/* handle metadata */
MetaEntry->Dims = DimCount;
if (Shape)
MetaEntry->Shape = CopyDims(DimCount, Shape);
else
MetaEntry->Shape = NULL;
MetaEntry->Count = CopyDims(DimCount, Count);
if (Offsets)
MetaEntry->Offsets = CopyDims(DimCount, Offsets);
if (!AlreadyWritten)
{
if (Shape)
MetaEntry->Shape = CopyDims(DimCount, Shape);
else
MetaEntry->Shape = NULL;
MetaEntry->DBCount = DimCount;
MetaEntry->Count = CopyDims(DimCount, Count);
if (Offsets)
MetaEntry->Offsets = CopyDims(DimCount, Offsets);
else
MetaEntry->Offsets = NULL;
}
else
MetaEntry->Offsets = NULL;
{
/* already got some metadata, add blocks */
size_t PreviousDBCount = MetaEntry->DBCount;
// Assume shape is still valid (modify this if shape /global
// dimensions can change )
// Also assume Dims is always right and consistent, otherwise, bad
// things
MetaEntry->DBCount += DimCount;
MetaEntry->Count =
AppendDims(MetaEntry->Count, PreviousDBCount, DimCount, Count);
if (Offsets)
MetaEntry->Offsets = AppendDims(
MetaEntry->Offsets, PreviousDBCount, DimCount, Offsets);
}

if ((Stream->ConfigParams->CompressionMethod == SstCompressZFP) &&
ZFPcompressionPossible(Type, DimCount))
Expand All @@ -2093,12 +2174,27 @@ extern void SstFFSMarshal(SstStream Stream, void *Variable, const char *Name,
}
else
{
/* normal array case */
size_t ElemCount = CalcSize(DimCount, Count);
DataEntry->ElemCount = ElemCount;
/* this is PutSync case, so we have to copy the data NOW */
DataEntry->Array = malloc(ElemCount * ElemSize);
memcpy(DataEntry->Array, Data, ElemCount * ElemSize);
if (!AlreadyWritten)
{
/* normal array case */
size_t ElemCount = CalcSize(DimCount, Count);
DataEntry->ElemCount = ElemCount;
/* this is PutSync case, so we have to copy the data NOW */
DataEntry->Array = malloc(ElemCount * ElemSize);
memcpy(DataEntry->Array, Data, ElemCount * ElemSize);
}
else
{
size_t ElemCount = CalcSize(DimCount, Count);
/* this is PutSync case, so we have to copy the data NOW */
DataEntry->Array =
realloc(DataEntry->Array,
(DataEntry->ElemCount + ElemCount) * ElemSize);
memcpy((char *)DataEntry->Array +
DataEntry->ElemCount * ElemSize,
Data, ElemCount * ElemSize);
DataEntry->ElemCount += ElemCount;
}
}
}
}
Expand Down
5 changes: 3 additions & 2 deletions source/adios2/toolkit/sst/cp/ffs_marshal.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,12 @@ typedef struct FFSVarRec
void *Variable;
char *VarName;
size_t *PerWriterMetaFieldOffset;
FMFieldList *PerWriterDataFieldDesc;
size_t DimCount;
int Type;
int ElementSize;
size_t *GlobalDims;
size_t *PerWriterBlockStart;
size_t *PerWriterBlockCount;
size_t **PerWriterStart;
size_t **PerWriterCounts;
void **PerWriterIncomingData;
Expand All @@ -74,7 +75,7 @@ typedef struct FFSArrayRequest
{
FFSVarRec VarRec;
enum FFSRequestTypeEnum RequestType;
size_t NodeID;
size_t BlockID;
size_t *Start;
size_t *Count;
void *Data;
Expand Down
4 changes: 2 additions & 2 deletions testing/adios2/engine/staging-common/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -135,9 +135,9 @@ set (ALL_SIMPLE_TESTS "")
list (APPEND ALL_SIMPLE_TESTS ${SIMPLE_TESTS} ${SIMPLE_FORTRAN_TESTS} ${SIMPLE_MPI_TESTS} ${SIMPLE_ZFP_TESTS})

set (SST_SPECIFIC_TESTS "")
list (APPEND SST_SPECIFIC_TESTS "1x1.SstRUDP")
list (APPEND SST_SPECIFIC_TESTS "1x1.SstRUDP;1x1.LocalMultiblock")
if (ADIOS2_HAVE_MPI)
list (APPEND SST_SPECIFIC_TESTS "2x3.SstRUDP")
list (APPEND SST_SPECIFIC_TESTS "2x3.SstRUDP;2x1.LocalMultiblock;5x3.LocalMultiblock;")
endif()

#
Expand Down
10 changes: 10 additions & 0 deletions testing/adios2/engine/staging-common/ParseArgs.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ bool AdvancingAttrs = false;
int NoData = 0;
int NoDataNode = -1;
int EarlyExit = 0;
int LocalCount = 1;

std::string shutdown_name = "DieTest";
adios2::Mode GlobalWriteMode = adios2::Mode::Deferred;
Expand Down Expand Up @@ -256,6 +257,15 @@ static void ParseArgs(int argc, char **argv)
argv++;
argc--;
}
else if (std::string(argv[1]) == "--local_count")
{
std::istringstream ss(argv[2]);
if (!(ss >> LocalCount))
std::cerr << "Invalid number for --local_count argument"
<< argv[1] << '\n';
argv++;
argc--;
}
else if (std::string(argv[1]) == "--early_exit")
{
EarlyExit++;
Expand Down
Loading