Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
12 changes: 4 additions & 8 deletions contrib/build_with_parsec/dtd_test_allreduce.c
Original file line number Diff line number Diff line change
Expand Up @@ -148,13 +148,11 @@ int main(int argc, char **argv)
parsec_taskpool_t *dtd_tp = parsec_dtd_taskpool_new( );
#if PARSEC_VERSION_MAJOR < 4
parsec_add2arena_rect(&parsec_dtd_arenas_datatypes[TILE_FULL],
parsec_datatype_int32_t, nb, 1, nb);
#else
parsec_arena_datatype_t *adt;
adt = parsec_dtd_create_arena_datatype(parsec, &TILE_FULL);
parsec_add2arena_rect( adt,
parsec_arena_datatype_t *adt = parsec_matrix_adt_new_rect(parsec_datatype_int32_t, nb, 1, nb);
parsec_dtd_attach_arena_datatype(parsec, adt, &TILE_FULL);
#endif
parsec_datatype_int32_t,
nb, 1, nb);

parsec_matrix_block_cyclic_t *m = (parsec_matrix_block_cyclic_t*)malloc(sizeof(parsec_matrix_block_cyclic_t));
parsec_matrix_block_cyclic_init(m, PARSEC_MATRIX_COMPLEX_DOUBLE, PARSEC_MATRIX_TILE,
Expand Down Expand Up @@ -235,9 +233,7 @@ int main(int argc, char **argv)
#if PARSEC_VERSION_MAJOR < 4
PARSEC_OBJ_RELEASE(parsec_dtd_arenas_datatypes[0].arena);
#else
parsec_del2arena(adt);
PARSEC_OBJ_RELEASE(adt->arena);
parsec_dtd_destroy_arena_datatype(parsec, TILE_FULL);
parsec_dtd_free_arena_datatype(parsec, TILE_FULL);
#endif
parsec_dtd_data_collection_fini( A );
parsec_tiled_matrix_destroy_data(dcA);
Expand Down
65 changes: 0 additions & 65 deletions contrib/renaming/README

This file was deleted.

132 changes: 132 additions & 0 deletions contrib/renaming/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
Changes that can be automated when updating from PaRSEC API v3.x to PaRSEC API v4.x
===================================================================================

With the 4.0 release, PaRSEC has undergone a major renaming in an effort to properly namespace symbols provided by PaRSEC.
This will likely affect existing codes that will have to adapt to using the new symbols.
To help with this effort, the sed script `contrib/renaming/rename.sed` is provided that can be used to apply the changes to existing source code files.
To apply the changes, users can execute the following command:

```sh
find . -name "*.c" -or -name "*.h" -or -name "*.cc" -or -name "*.jdf" -or -name "*.h.in" | xargs sed -i -f $PARSEC_SOURCE_DIR/contrib/renaming/rename.sed
```

Depending on your source code, your may have to adapt the above line to apply to all relevant files.

The full list of replacements can be found below:

```sh
# data types
enum matrix_type -> parsec_matrix_type_t
matrix_RealDouble -> PARSEC_MATRIX_DOUBLE
matrix_RealFloat -> PARSEC_MATRIX_FLOAT
matrix_Integer -> PARSEC_MATRIX_INTEGER
matrix_Byte -> PARSEC_MATRIX_BYTE
matrix_ComplexFloat -> PARSEC_MATRIX_COMPLEX_FLOAT
matrix_ComplexDouble -> PARSEC_MATRIX_COMPLEX_DOUBLE

# storage
enum matrix_storage -> parsec_matrix_storage_t
matrix_Lapack -> PARSEC_MATRIX_LAPACK
matrix_Tile -> PARSEC_MATRIX_TILE

# matrix shapes
enum matrix_uplo -> parsec_matrix_uplo_t
matrix_UpperLower -> PARSEC_MATRIX_FULL
matrix_Upper -> PARSEC_MATRIX_UPPER
matrix_Lower -> PARSEC_MATRIX_LOWER

# vector shapes
enum vector_distrib -> parsec_vector_two_dim_cyclic_distrib_t
matrix_VectorRow -> PARSEC_VECTOR_DISTRIB_ROW
matrix_VectorCol -> PARSEC_VECTOR_DISTRIB_COL
matrix_VectorDiag -> PARSEC_VECTOR_DISTRIB_DIAG

# matrix implementations
parsec_tiled_matrix_dc* -> parsec_tiled_matrix*
sym_two_dim_block_cyclic* -> parsec_matrix_sym_block_cyclic*
two_dim_block_cyclic* -> parsec_matrix_block_cyclic*
two_dim_tabular_* -> parsec_matrix_tabular_*
two_dim_td_table_clone_table_structure -> parsec_matrix_tabular_clone_table_structure

# symbols in matrix.h
tiled_matrix_submatrix -> parsec_tiled_matrix_submatrix
parsec_matrix_create_data -> parsec_tiled_matrix_create_data
parsec_matrix_add2arena -> parsec_matrix_adt_define
parsec_add2arena -> parsec_matrix_adt_define
parsec_matrix_del2arena -> parsec_matrix_arena_datatype_destruct_free_type
parsec_del2arena -> parsec_matrix_arena_datatype_destruct_free_type
parsec_matrix_data_* -> parsec_tiled_matrix_data_*

# vector
vector_two_dim_cyclic_* -> parsec_vector_two_dim_cyclic*

# 2D grid
grid_2Dcyclic_* -> parsec_grid_2Dcyclic_*

# matrix ops
tiled_matrix_unary_op_t -> parsec_tiled_matrix_unary_op_t
tiled_matrix_binary_op_t -> parsec_tiled_matrix_binary_op_t

# arena_datatype contructors/destructors
parsec_dtd_destroy_arena_datatype -> parsec_dtd_free_arena_datatype
```

Changes that are not automated when updating between PaRSEC API v3.x and v4.x
=============================================================================

DTD initialization of arena datatypes has changed to avoid memory leakage.
--------------------------------------------------------------------------

We show below some typical conversions. More can be found by examining the commit that modified this line.

This snippet extracted from `contrib/build_with_parsec/dtd_text_allreduce.c` shows both the v3.x and v4.x canonical snippet:
```c
// v3.x to v4.0 release: DTD arena_datatype allocation and initialization
#if PARSEC_VERSION_MAJOR < 4
parsec_add2arena_rect(&parsec_dtd_arenas_datatypes[TILE_FULL],
parsec_datatype_int32_t, nb, 1, nb);
#else
parsec_arena_datatype_t *adt = parsec_matrix_adt_new_rect(
parsec_datatype_int32_t, nb, 1, nb);
parsec_dtd_attach_arena_datatype(parsec, adt, &TILE_FULL);
#endif
```

If you had updated to pre-release v4.x, you may have to do the following change:
```diff
// v4.x pre-release to v4.0 release: DTD arena_datatype allocation and initialization
- parsec_arena_datatype_t *adt;
- adt = parsec_dtd_create_arena_datatype(parsec, &TILE_FULL);
- parsec_add2arena_rect( adt,
- parsec_datatype_int32_t, nb, 1, nb);
+ parsec_arena_datatype_t *adt = parsec_matrix_adt_new_rect(
+ parsec_datatype_int32_t, nb, 1, nb);
+ parsec_dtd_attach_arena_datatype(parsec, adt, &TILE_FULL);
```

The cleanup of DTD allocated arena datatypes can be significantly simplified:
```diff
// v3.x to v4.0: DTD arena_datatype cleanup
- adt = parsec_dtd_get_arena_datatype(parsec, TILE_FULL);
- assert(NULL != adt);
- parsec_type_free(&adt->opaque_dtt);
- PARSEC_OBJ_RELEASE(adt->arena);
- parsec_dtd_destroy_arena_datatype(parsec, TILE_FULL);
+ adt = parsec_dtd_detach_arena_datatype(parsec, TILE_FULL);
+ assert(NULL != adt);
+ parsec_matrix_adt_free(&adt);
```

This snippet repeated itself often enough that we have a shorthand for detaching the adt,
clearing the type, and releasing the adt all in one go:
```diff
// equivalent to the new code above
+ parsec_dtd_free_arena_datatype(parsec, DATA);
```
PTG use of del2arena
--------------------

In some PTG wrappers, v3.x canonical approach would have a `parsec_del2arena(adt)`
call followed by `PARSEC_OBJ_RELEASE(adt->arena)`.

in v4.x the `parsec_arena_datatype_t` destructor recursively destructs the internal members of the `adt`. Hence the `PARSEC_OBJ_RELEASE(adt->arena)` is not necessary anymore. (legacy code that still call the explicit release remain correct, the adt destructor will care not to cause a double free).
10 changes: 8 additions & 2 deletions contrib/renaming/rename.sed
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,11 @@ s/two_dim_td_table_clone_table_structure/parsec_matrix_tabular_clone_table_struc
# symbols in matrix.h
s/tiled_matrix_submatrix/parsec_tiled_matrix_submatrix/g
s/parsec_matrix_create_data/parsec_tiled_matrix_create_data/g
s/parsec_matrix_add2arena/parsec_add2arena/g
s/parsec_matrix_del2arena/parsec_del2arena/g
s/parsec_matrix_add2arena/parsec_matrix_adt_define/g
s/parsec_add2arena/parsec_matrix_adt_define/g
s/parsec_matrix_adt_define_tile/parsec_matrix_adt_define_square/g
s/parsec_matrix_del2arena/parsec_matrix_arena_datatype_destruct_free_type/g
s/parsec_del2arena/parsec_matrix_arena_datatype_destruct_free_type/g
s/parsec_matrix_data_/parsec_tiled_matrix_data_/g

# vector
Expand All @@ -47,3 +50,6 @@ s/grid_2Dcyclic_/parsec_grid_2Dcyclic_/g
# matrix ops
s/tiled_matrix_unary_op_t/parsec_tiled_matrix_unary_op_t/g
s/tiled_matrix_binary_op_t/parsec_tiled_matrix_binary_op_t/g

# DTD arena datatypes
s/parsec_dtd_destroy_arena_datatype/parsec_dtd_free_arena_datatype/g
8 changes: 4 additions & 4 deletions examples/Ex02_Chain.jdf
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ extern "C" %{
* circulate from one task to another
* private variables
* guarded calls, RW
* parsec_arena_datatype_construct()
* parsec_arena_datatype_set_type()
*
* @version 4.0
* @email [email protected]
Expand Down Expand Up @@ -113,9 +113,9 @@ int main(int argc, char *argv[])
* datatype of the DEFAULT type, so it can allocate the required memory
* space.
*/
parsec_arena_datatype_construct( &tp->arenas_datatypes[PARSEC_Ex02_Chain_DEFAULT_ADT_IDX],
sizeof(int), PARSEC_ARENA_ALIGNMENT_SSE,
parsec_datatype_int_t );
parsec_arena_datatype_set_type( &tp->arenas_datatypes[PARSEC_Ex02_Chain_DEFAULT_ADT_IDX],
sizeof(int), PARSEC_ARENA_ALIGNMENT_SSE,
parsec_datatype_int_t );

rc = parsec_context_add_taskpool( parsec, (parsec_taskpool_t*)tp );
PARSEC_CHECK_ERROR(rc, "parsec_context_add_taskpool");
Expand Down
6 changes: 3 additions & 3 deletions examples/Ex03_ChainMPI.jdf
Original file line number Diff line number Diff line change
Expand Up @@ -139,9 +139,9 @@ int main(int argc, char *argv[])
* The arena is now also used to describe the layout to the communication
* engine (MPI)
*/
parsec_arena_datatype_construct( &tp->arenas_datatypes[PARSEC_Ex03_ChainMPI_DEFAULT_ADT_IDX],
sizeof(int), PARSEC_ARENA_ALIGNMENT_SSE,
parsec_datatype_int_t );
parsec_arena_datatype_set_type( &tp->arenas_datatypes[PARSEC_Ex03_ChainMPI_DEFAULT_ADT_IDX],
sizeof(int), PARSEC_ARENA_ALIGNMENT_SSE,
parsec_datatype_int_t );

rc = parsec_context_add_taskpool( parsec, (parsec_taskpool_t*)tp );
PARSEC_CHECK_ERROR(rc, "parsec_context_add_taskpool");
Expand Down
6 changes: 3 additions & 3 deletions examples/Ex04_ChainData.jdf
Original file line number Diff line number Diff line change
Expand Up @@ -134,9 +134,9 @@ int main(int argc, char *argv[])
mydata.vpid_of = vpid_of;
mydata.data_key = data_key;

parsec_arena_datatype_construct( &adt,
sizeof(int), PARSEC_ARENA_ALIGNMENT_SSE,
parsec_datatype_int_t );
parsec_arena_datatype_set_type( &adt,
sizeof(int), PARSEC_ARENA_ALIGNMENT_SSE,
parsec_datatype_int_t );

ddata_mycounter = parsec_data_create( &ddata_mycounter, /* The parsec_data_t taskpool value */
&mydata, /* The descriptor associated to it */
Expand Down
6 changes: 3 additions & 3 deletions examples/Ex05_Broadcast.jdf
Original file line number Diff line number Diff line change
Expand Up @@ -133,9 +133,9 @@ int main(int argc, char *argv[])
mydata.data_key = data_key;
mydata.data_of = data_of;

parsec_arena_datatype_construct( &adt,
sizeof(int), PARSEC_ARENA_ALIGNMENT_SSE,
parsec_datatype_int_t );
parsec_arena_datatype_set_type( &adt,
sizeof(int), PARSEC_ARENA_ALIGNMENT_SSE,
parsec_datatype_int_t );

ddata_mycounter = parsec_data_create(
&ddata_mycounter, &mydata, 0,
Expand Down
6 changes: 3 additions & 3 deletions examples/Ex06_RAW.jdf
Original file line number Diff line number Diff line change
Expand Up @@ -149,9 +149,9 @@ int main(int argc, char *argv[])
mydata.data_key = data_key;
mydata.data_of = data_of;

parsec_arena_datatype_construct( &adt,
sizeof(int), PARSEC_ARENA_ALIGNMENT_SSE,
parsec_datatype_int_t );
parsec_arena_datatype_set_type( &adt,
sizeof(int), PARSEC_ARENA_ALIGNMENT_SSE,
parsec_datatype_int_t );

mycounter = 300 + rank;
ddata_mycounter = parsec_data_create(
Expand Down
10 changes: 5 additions & 5 deletions examples/Ex07_RAW_CTL.jdf
Original file line number Diff line number Diff line change
Expand Up @@ -156,9 +156,9 @@ int main(int argc, char *argv[])
mydata.data_key = data_key;
mydata.data_of = data_of;

parsec_arena_datatype_construct( &adt,
sizeof(int), PARSEC_ARENA_ALIGNMENT_SSE,
parsec_datatype_int_t );
parsec_arena_datatype_set_type( &adt,
sizeof(int), PARSEC_ARENA_ALIGNMENT_SSE,
parsec_datatype_int_t );

mycounter = 300 + rank;
ddata_mycounter = parsec_data_create(
Expand All @@ -168,8 +168,8 @@ int main(int argc, char *argv[])

tp = parsec_Ex07_RAW_CTL_new(&mydata, world, rank);

tp->arenas_datatypes[PARSEC_Ex07_RAW_CTL_DEFAULT_ADT_IDX] = adt;
tp->arenas_datatypes[PARSEC_Ex07_RAW_CTL_DEFAULT_ADT_IDX] = adt;

rc = parsec_context_add_taskpool( parsec, (parsec_taskpool_t*)tp );
PARSEC_CHECK_ERROR(rc, "parsec_context_add_taskpool");
rc = parsec_context_start(parsec);
Expand Down
Loading