From db7c597a46df412a038093696efacc7d1f79e5ca Mon Sep 17 00:00:00 2001 From: "jacques.morice" Date: Wed, 5 Mar 2025 14:28:49 +0100 Subject: [PATCH 1/8] fix #33, add remarks in the README --- README.md | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/README.md b/README.md index a1a7af6..3327fa7 100644 --- a/README.md +++ b/README.md @@ -187,6 +187,15 @@ interlaced. Is one better than the other? If you do not know the answer to this question, just wait until ex5. :) +#### Note on the order of shares after the iteration loop {#ShareOrderAfterIterationLoop} + +To gain a better understanding of the information provided by the trace plugin, +the order of calls of differents "share" is adjusted in the ex2 to ex6 +after the iteration loops. + +This order introduces a bad behavior of the code not expected by new users of pdi. +An explication will be given after ex6. + ## Decl'HDF5 plugin From exercise 3 to exercise 9 included, we present the \ref Decl_HDF5_plugin @@ -428,6 +437,57 @@ In summary: \attention The `::PDI_multi_expose` is implemented with interlaced share/reclaim pairs. +\attention +When we used `::PDI_multi_expose` with multiple data, the order of appearance +in the arguments of the function corresponds to the order of the `PDI_share`. + +\attention +An explication of section +[Note on the order of shares after the iteration loop](#ShareOrderAfterIterationLoop) +is given here. + +The order of share are importants when we used a metadata. We explain that +without `::PDI_multi_expose` to be more clear. +In `::PDI_share`, the event "on_data" on the shared data are performed. +An example of this event is +```yaml +decl_hdf5: + - file: ex6-final-iteration.h5 + write: [ main_field ] + when: '$ii=4' +``` + +In the exercise 6, after the iteration loop, the data `main_field` is shared before the variable `ii`: +```C +PDI_share("main_field", cur, PDI_OUT); +PDI_share("ii", &ii, PDI_OUT); // update the metadata ii in PDI +PDI_event("finalization"); +PDI_reclaim("ii"); +PDI_reclaim("main_field"); +``` +In the first line, `cur` correspond to the valuee of `main_field` at iteration `ii=4`. +As `ii` is a metadata, the value is stored by pdi. Hence, in this first line the value of `ii` is equal to 3. + +Therefore, the file `ex6-final-iteration.h5` is not writing on the disk. +To solve this issue, we need to change the order of the `::PDI_share`: + +```C +PDI_share("ii", &ii, PDI_OUT); // update the metadata ii in PDI +PDI_share("main_field", cur, PDI_OUT); +PDI_event("finalization"); +PDI_reclaim("main_field"); +PDI_reclaim("ii"); +``` + +or with `::PDI_multi_expose`: + +```C +PDI_multi_expose("finalization", + "ii", &ii, PDI_OUT, + "main_field", cur, PDI_OUT, + NULL); +``` + ### Ex7. Writing a selection In this exercise, you will only write a selection of the 2D array in memory From 36a173bb9f97fc34b8644b1d676dc804d32656bc Mon Sep 17 00:00:00 2001 From: "jacques.morice" Date: Wed, 12 Mar 2025 10:48:11 +0100 Subject: [PATCH 2/8] fix #33, update the order share/reclaim --- README.md | 38 +++++++++++++++++++++----------------- ex10.c | 2 +- ex11.c | 2 +- ex12.c | 2 +- ex3.c | 4 ++-- ex4.c | 4 ++-- ex5.c | 6 +++--- ex6.c | 4 ++-- ex7.c | 2 +- ex8.c | 2 +- ex9.c | 2 +- solutions/ex2.c | 2 +- solutions/ex5.c | 4 ++-- 13 files changed, 39 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index 3327fa7..cff4c3c 100644 --- a/README.md +++ b/README.md @@ -187,15 +187,6 @@ interlaced. Is one better than the other? If you do not know the answer to this question, just wait until ex5. :) -#### Note on the order of shares after the iteration loop {#ShareOrderAfterIterationLoop} - -To gain a better understanding of the information provided by the trace plugin, -the order of calls of differents "share" is adjusted in the ex2 to ex6 -after the iteration loops. - -This order introduces a bad behavior of the code not expected by new users of pdi. -An explication will be given after ex6. - ## Decl'HDF5 plugin From exercise 3 to exercise 9 included, we present the \ref Decl_HDF5_plugin @@ -387,7 +378,6 @@ in two distinct groups `iter1` and `iter2`. To see your `h5` file in readable file format, you can check the section [Comparison with the `h5dump` command](#compare_h5_h5dump). - ### Ex6. Simplifying the code As you can notice, the %PDI code is quite redundant. @@ -439,12 +429,12 @@ The `::PDI_multi_expose` is implemented with interlaced share/reclaim pairs. \attention When we used `::PDI_multi_expose` with multiple data, the order of appearance -in the arguments of the function corresponds to the order of the `PDI_share`. +in the arguments of the function corresponds to the order of the `::PDI_share`. \attention -An explication of section -[Note on the order of shares after the iteration loop](#ShareOrderAfterIterationLoop) -is given here. +To gain a better understanding of the information provided by the trace plugin, +the order of calls of differents "share" is changed in the ex6 +after the iteration loops. The order of share are importants when we used a metadata. We explain that without `::PDI_multi_expose` to be more clear. @@ -457,7 +447,8 @@ decl_hdf5: when: '$ii=4' ``` -In the exercise 6, after the iteration loop, the data `main_field` is shared before the variable `ii`: +In the exercise 6, after the iteration loop, the data `main_field` is shared +before the variable `ii`: ```C PDI_share("main_field", cur, PDI_OUT); PDI_share("ii", &ii, PDI_OUT); // update the metadata ii in PDI @@ -465,8 +456,9 @@ PDI_event("finalization"); PDI_reclaim("ii"); PDI_reclaim("main_field"); ``` -In the first line, `cur` correspond to the valuee of `main_field` at iteration `ii=4`. -As `ii` is a metadata, the value is stored by pdi. Hence, in this first line the value of `ii` is equal to 3. +In the first line, `cur` correspond to the value of `main_field` at iteration +`ii=4`. As `ii` is a metadata, the value is stored by pdi. +Hence, in this first line the value of `ii` is equal to 3. Therefore, the file `ex6-final-iteration.h5` is not writing on the disk. To solve this issue, we need to change the order of the `::PDI_share`: @@ -488,6 +480,18 @@ PDI_multi_expose("finalization", NULL); ``` +\attention +In a `::PDI_multi_expose` if you have a data1 that depend on the data2. +You need to pass the data2 before the data1 + +For example, a vector `V` that depend on it size `N`. +```C +PDI_multi_expose("save_vector_V", + "size_of_vector", &N, PDI_OUT, + "vector_V", V, PDI_OUT, + NULL); +``` + ### Ex7. Writing a selection In this exercise, you will only write a selection of the 2D array in memory diff --git a/ex10.c b/ex10.c index 44fcf75..7b91310 100644 --- a/ex10.c +++ b/ex10.c @@ -227,7 +227,7 @@ int main( int argc, char* argv[] ) } // finally share the main field as well as the loop counter after the loop PDI_multi_expose("finalization", - "ii", &ii, PDI_OUT, + "ii", &ii, PDI_OUT, "main_field", cur, PDI_OUT, NULL); diff --git a/ex11.c b/ex11.c index aba49e2..a292807 100644 --- a/ex11.c +++ b/ex11.c @@ -300,7 +300,7 @@ int main( int argc, char* argv[] ) } // finally share the main field as well as the loop counter after the loop PDI_multi_expose("finalization", - "ii", &ii, PDI_OUT, + "ii", &ii, PDI_OUT, "main_field", cur, PDI_OUT, NULL); diff --git a/ex12.c b/ex12.c index fb39968..f7bb21c 100644 --- a/ex12.c +++ b/ex12.c @@ -282,7 +282,7 @@ int main( int argc, char* argv[] ) } // finally share the main field as well as the loop counter after the loop PDI_multi_expose("finalization", - "ii", &ii, PDI_OUT, + "ii", &ii, PDI_OUT, "main_field", cur, PDI_OUT, NULL); diff --git a/ex3.c b/ex3.c index fd3d7e1..10289a1 100644 --- a/ex3.c +++ b/ex3.c @@ -213,10 +213,10 @@ int main( int argc, char* argv[] ) // the main loop for (; ii<10; ++ii) { // share the loop counter & main field at each iteration - PDI_share("ii", &ii, PDI_OUT); - PDI_reclaim("ii"); + PDI_share("ii", &ii, PDI_OUT); PDI_share("main_field", cur, PDI_OUT); PDI_reclaim("main_field"); + PDI_reclaim("ii"); // compute the values for the next iteration iter(cur, next); diff --git a/ex4.c b/ex4.c index 1816e1a..eb16797 100644 --- a/ex4.c +++ b/ex4.c @@ -228,9 +228,9 @@ int main( int argc, char* argv[] ) double (*tmp)[dsize[1]] = cur; cur = next; next = tmp; } // finally share the loop counter and main field after the main loop body - PDI_share("main_field", cur, PDI_OUT); - PDI_share("ii", &ii, PDI_OUT); + PDI_share("ii", &ii, PDI_OUT); PDI_reclaim("ii"); + PDI_share("main_field", cur, PDI_OUT); PDI_reclaim("main_field"); // finalize PDI diff --git a/ex5.c b/ex5.c index 43f1f82..322e66b 100644 --- a/ex5.c +++ b/ex5.c @@ -231,10 +231,10 @@ int main( int argc, char* argv[] ) // swap the current and next values double (*tmp)[dsize[1]] = cur; cur = next; next = tmp; } - // // finally share the loop counter and main field after the main loop body - PDI_share("main_field", cur, PDI_OUT); - PDI_share("ii", &ii, PDI_OUT); + // finally share the loop counter and main field after the main loop body + PDI_share("ii", &ii, PDI_OUT); PDI_reclaim("ii"); + PDI_share("main_field", cur, PDI_OUT); PDI_reclaim("main_field"); // finalize PDI diff --git a/ex6.c b/ex6.c index ed12ba8..bac3d8f 100644 --- a/ex6.c +++ b/ex6.c @@ -236,11 +236,11 @@ int main( int argc, char* argv[] ) // finally share the main field as well as the loop counter after the loop //*** use PDI_multi_expose to replace PDI_share + event + reclaim //... - PDI_share("ii", &ii, PDI_OUT); PDI_share("main_field", cur, PDI_OUT); + PDI_share("ii", &ii, PDI_OUT); PDI_event("finalization"); - PDI_reclaim("main_field"); PDI_reclaim("ii"); + PDI_reclaim("main_field"); // finalize PDI PDI_finalize(); diff --git a/ex7.c b/ex7.c index babdf3e..668bbd4 100644 --- a/ex7.c +++ b/ex7.c @@ -227,8 +227,8 @@ int main( int argc, char* argv[] ) } // finally share the main field as well as the loop counter after the loop PDI_multi_expose("finalization", + "ii", &ii, PDI_OUT, "main_field", cur, PDI_OUT, - "ii", &ii, PDI_OUT, NULL); // finalize PDI diff --git a/ex8.c b/ex8.c index 96cbc53..8cafd2d 100644 --- a/ex8.c +++ b/ex8.c @@ -227,8 +227,8 @@ int main( int argc, char* argv[] ) } // finally share the main field as well as the loop counter after the loop PDI_multi_expose("finalization", + "ii", &ii, PDI_OUT, "main_field", cur, PDI_OUT, - "ii", &ii, PDI_OUT, NULL); // finalize PDI diff --git a/ex9.c b/ex9.c index b7d20c1..4292f15 100644 --- a/ex9.c +++ b/ex9.c @@ -227,8 +227,8 @@ int main( int argc, char* argv[] ) } // finally share the main field as well as the loop counter after the loop PDI_multi_expose("finalization", + "ii", &ii, PDI_OUT, "main_field", cur, PDI_OUT, - "ii", &ii, PDI_OUT, NULL); // finalize PDI diff --git a/solutions/ex2.c b/solutions/ex2.c index ef38ea8..0560cfd 100644 --- a/solutions/ex2.c +++ b/solutions/ex2.c @@ -229,7 +229,7 @@ int main( int argc, char* argv[] ) // swap the current and next values double (*tmp)[dsize[1]] = cur; cur = next; next = tmp; } - //*** finally share the loop counter and main field after the main loop body + // finally share the loop counter and main field after the main loop body PDI_share("ii", &ii, PDI_OUT); PDI_reclaim("ii"); PDI_share("main_field", cur, PDI_OUT); diff --git a/solutions/ex5.c b/solutions/ex5.c index d2f753b..2b0c6dc 100644 --- a/solutions/ex5.c +++ b/solutions/ex5.c @@ -232,9 +232,9 @@ int main( int argc, char* argv[] ) double (*tmp)[dsize[1]] = cur; cur = next; next = tmp; } // finally share the loop counter and main field after the main loop body - PDI_share("main_field", cur, PDI_OUT); - PDI_share("ii", &ii, PDI_OUT); + PDI_share("ii", &ii, PDI_OUT); PDI_reclaim("ii"); + PDI_share("main_field", cur, PDI_OUT); PDI_reclaim("main_field"); // finalize PDI From 83633471c313ceb905489f5a016dedcfc7c811fa Mon Sep 17 00:00:00 2001 From: Jacques Morice Date: Thu, 3 Apr 2025 18:01:18 +0200 Subject: [PATCH 3/8] Update README.md Co-authored-by: JAuriac <56091659+JAuriac@users.noreply.github.com> --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cff4c3c..5c113f4 100644 --- a/README.md +++ b/README.md @@ -433,8 +433,8 @@ in the arguments of the function corresponds to the order of the `::PDI_share`. \attention To gain a better understanding of the information provided by the trace plugin, -the order of calls of differents "share" is changed in the ex6 -after the iteration loops. +the call order of different "share" is changed in the ex6 +after the main loop. The order of share are importants when we used a metadata. We explain that without `::PDI_multi_expose` to be more clear. From 2c5d88ec04a9553e5546b80914023c354d15179b Mon Sep 17 00:00:00 2001 From: Jacques Morice Date: Thu, 3 Apr 2025 18:01:41 +0200 Subject: [PATCH 4/8] Update README.md Co-authored-by: JAuriac <56091659+JAuriac@users.noreply.github.com> --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5c113f4..cfb6de8 100644 --- a/README.md +++ b/README.md @@ -428,8 +428,8 @@ In summary: The `::PDI_multi_expose` is implemented with interlaced share/reclaim pairs. \attention -When we used `::PDI_multi_expose` with multiple data, the order of appearance -in the arguments of the function corresponds to the order of the `::PDI_share`. +When we used `::PDI_multi_expose` with multiple data, the order of appearance +of the arguments of the function corresponds to the order of the `::PDI_share`. \attention To gain a better understanding of the information provided by the trace plugin, From d94753f1827fa670bc6032f3e619d50d507ae7ea Mon Sep 17 00:00:00 2001 From: Jacques Morice Date: Thu, 3 Apr 2025 18:01:50 +0200 Subject: [PATCH 5/8] Update README.md Co-authored-by: JAuriac <56091659+JAuriac@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cfb6de8..4c58fca 100644 --- a/README.md +++ b/README.md @@ -447,7 +447,7 @@ decl_hdf5: when: '$ii=4' ``` -In the exercise 6, after the iteration loop, the data `main_field` is shared +In the exercise 6, after the main loop, the data `main_field` is shared before the variable `ii`: ```C PDI_share("main_field", cur, PDI_OUT); From 69b43951ab838ad2c2067080a766b81f923c0838 Mon Sep 17 00:00:00 2001 From: Jacques Morice Date: Thu, 3 Apr 2025 18:04:04 +0200 Subject: [PATCH 6/8] Update README.md Co-authored-by: JAuriac <56091659+JAuriac@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4c58fca..493ea3f 100644 --- a/README.md +++ b/README.md @@ -456,7 +456,7 @@ PDI_event("finalization"); PDI_reclaim("ii"); PDI_reclaim("main_field"); ``` -In the first line, `cur` correspond to the value of `main_field` at iteration +In the first line, `cur` corresponds to the value of `main_field` at iteration `ii=4`. As `ii` is a metadata, the value is stored by pdi. Hence, in this first line the value of `ii` is equal to 3. From 9792d475f5e3f9fceb6adbe97e3e4327db0cf1db Mon Sep 17 00:00:00 2001 From: Jacques Morice Date: Thu, 3 Apr 2025 18:07:12 +0200 Subject: [PATCH 7/8] Update README.md Co-authored-by: JAuriac <56091659+JAuriac@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 493ea3f..e6f9e46 100644 --- a/README.md +++ b/README.md @@ -484,7 +484,7 @@ PDI_multi_expose("finalization", In a `::PDI_multi_expose` if you have a data1 that depend on the data2. You need to pass the data2 before the data1 -For example, a vector `V` that depend on it size `N`. +For example, a vector `V` that depends on its size `N`. ```C PDI_multi_expose("save_vector_V", "size_of_vector", &N, PDI_OUT, From c9f830e80c244403265e1decb2895fce651f0ee6 Mon Sep 17 00:00:00 2001 From: "jacques.morice" Date: Tue, 8 Apr 2025 13:01:46 +0200 Subject: [PATCH 8/8] Fix indent and improve README.md --- README.md | 62 +++++++++++++++++++++++++++------------------- ex10.c | 4 +-- ex11.c | 4 +-- ex12.c | 4 +-- ex7.c | 4 +-- ex8.c | 4 +-- ex9.c | 4 +-- solutions/ex12.yml | 2 +- 8 files changed, 49 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index e6f9e46..5529078 100644 --- a/README.md +++ b/README.md @@ -433,39 +433,48 @@ of the arguments of the function corresponds to the order of the `::PDI_share`. \attention To gain a better understanding of the information provided by the trace plugin, -the call order of different "share" is changed in the ex6 -after the main loop. +the call order of different "share" is changed in the ex6 after the main loop. -The order of share are importants when we used a metadata. We explain that -without `::PDI_multi_expose` to be more clear. -In `::PDI_share`, the event "on_data" on the shared data are performed. -An example of this event is -```yaml -decl_hdf5: - - file: ex6-final-iteration.h5 - write: [ main_field ] - when: '$ii=4' -``` +The order of share is important when we used a metadata. To demonstrate this, +we decompose `::PDI_multi_expose`. In the exercise 6, after the main loop, the data `main_field` is shared before the variable `ii`: ```C -PDI_share("main_field", cur, PDI_OUT); -PDI_share("ii", &ii, PDI_OUT); // update the metadata ii in PDI +// end of the main loop +PDI_share("main_field", cur, PDI_OUT); // event "on_data" for "main_field" +PDI_share("ii", &ii, PDI_OUT); // update the metadata ii in PDI to 4 PDI_event("finalization"); PDI_reclaim("ii"); PDI_reclaim("main_field"); ``` -In the first line, `cur` corresponds to the value of `main_field` at iteration -`ii=4`. As `ii` is a metadata, the value is stored by pdi. -Hence, in this first line the value of `ii` is equal to 3. +At the end of the main loop, `ii` is equal to 4. Therefore, `cur` corresponds +to the value of `main_field` at iteration 4. + +As `ii` is a metadata, the value is stored by pdi. This value correspond to +the last value of `ii` shared with pdi. Hence, at the end of the main loop, +this value is equal to the value of the previous iteration 3. + +In `::PDI_share`, an event "on_data" on the shared data is automatically +performed. An example of this event is +```yaml +decl_hdf5: + - file: ex6-final-iteration.h5 + write: [ main_field ] + when: '$ii=4' +``` +This event is done when we call +```C +PDI_share("main_field", cur, PDI_OUT); // event "on_data" for "main_field" +``` +But at this moment, the value of `ii` in pdi is still the value of the previous iteration 3. Therefore, the file `ex6-final-iteration.h5` is not writing on the disk. -To solve this issue, we need to change the order of the `::PDI_share`: +To solve this issue, we need to change the order of the `::PDI_share`: ```C -PDI_share("ii", &ii, PDI_OUT); // update the metadata ii in PDI -PDI_share("main_field", cur, PDI_OUT); +PDI_share("ii", &ii, PDI_OUT); // update the metadata ii in PDI to 4 +PDI_share("main_field", cur, PDI_OUT); // event "on_data" for "main_field" PDI_event("finalization"); PDI_reclaim("main_field"); PDI_reclaim("ii"); @@ -476,20 +485,21 @@ or with `::PDI_multi_expose`: ```C PDI_multi_expose("finalization", "ii", &ii, PDI_OUT, - "main_field", cur, PDI_OUT, - NULL); + "main_field", cur, PDI_OUT, + NULL); ``` \attention In a `::PDI_multi_expose` if you have a data1 that depend on the data2. -You need to pass the data2 before the data1 +You need to pass the arguments corresponding to data2 before the arguments +corresponding to data1 in this function. -For example, a vector `V` that depends on its size `N`. +For example, a vector `V` that depends on its size `N`: ```C PDI_multi_expose("save_vector_V", "size_of_vector", &N, PDI_OUT, - "vector_V", V, PDI_OUT, - NULL); + "vector_V", V, PDI_OUT, + NULL); ``` ### Ex7. Writing a selection diff --git a/ex10.c b/ex10.c index 7b91310..7c51a4b 100644 --- a/ex10.c +++ b/ex10.c @@ -228,8 +228,8 @@ int main( int argc, char* argv[] ) // finally share the main field as well as the loop counter after the loop PDI_multi_expose("finalization", "ii", &ii, PDI_OUT, - "main_field", cur, PDI_OUT, - NULL); + "main_field", cur, PDI_OUT, + NULL); // finalize PDI PDI_finalize(); diff --git a/ex11.c b/ex11.c index a292807..fd0d6a3 100644 --- a/ex11.c +++ b/ex11.c @@ -301,8 +301,8 @@ int main( int argc, char* argv[] ) // finally share the main field as well as the loop counter after the loop PDI_multi_expose("finalization", "ii", &ii, PDI_OUT, - "main_field", cur, PDI_OUT, - NULL); + "main_field", cur, PDI_OUT, + NULL); // finalize PDI PDI_finalize(); diff --git a/ex12.c b/ex12.c index f7bb21c..0c6a5b1 100644 --- a/ex12.c +++ b/ex12.c @@ -283,8 +283,8 @@ int main( int argc, char* argv[] ) // finally share the main field as well as the loop counter after the loop PDI_multi_expose("finalization", "ii", &ii, PDI_OUT, - "main_field", cur, PDI_OUT, - NULL); + "main_field", cur, PDI_OUT, + NULL); // close the file should_output.dat close_file(); diff --git a/ex7.c b/ex7.c index 668bbd4..dbba767 100644 --- a/ex7.c +++ b/ex7.c @@ -228,8 +228,8 @@ int main( int argc, char* argv[] ) // finally share the main field as well as the loop counter after the loop PDI_multi_expose("finalization", "ii", &ii, PDI_OUT, - "main_field", cur, PDI_OUT, - NULL); + "main_field", cur, PDI_OUT, + NULL); // finalize PDI PDI_finalize(); diff --git a/ex8.c b/ex8.c index 8cafd2d..31ad786 100644 --- a/ex8.c +++ b/ex8.c @@ -228,8 +228,8 @@ int main( int argc, char* argv[] ) // finally share the main field as well as the loop counter after the loop PDI_multi_expose("finalization", "ii", &ii, PDI_OUT, - "main_field", cur, PDI_OUT, - NULL); + "main_field", cur, PDI_OUT, + NULL); // finalize PDI PDI_finalize(); diff --git a/ex9.c b/ex9.c index 4292f15..e254438 100644 --- a/ex9.c +++ b/ex9.c @@ -228,8 +228,8 @@ int main( int argc, char* argv[] ) // finally share the main field as well as the loop counter after the loop PDI_multi_expose("finalization", "ii", &ii, PDI_OUT, - "main_field", cur, PDI_OUT, - NULL); + "main_field", cur, PDI_OUT, + NULL); // finalize PDI PDI_finalize(); diff --git a/solutions/ex12.yml b/solutions/ex12.yml index 7d12327..450ecac 100644 --- a/solutions/ex12.yml +++ b/solutions/ex12.yml @@ -11,7 +11,7 @@ pdi: dsize: { type: array, subtype: int, size: 2 } psize: { type: array, subtype: int, size: 2 } pcoord: { type: array, subtype: int, size: 2 } - should_output: logical + should_output: int switch: int data: # values for which PDI does not keep a copy main_field: { type: array, subtype: double, size: [ '$dsize[0]', '$dsize[1]' ] }