filmov
tv
Learning by doing :: MPI -- Datatypes In MPI, Part 4
![preview_player](https://i.ytimg.com/vi/AdjGqHHfGPU/maxresdefault.jpg)
Показать описание
This video is part of the new series called "Learning by doing :: MPI" which serves as an introductory course on MPI (Message Passing Interface). In this video we talked about datatypes in MPI! This topic corresponds to chapter 5 of the MPI standard v4.1. It is a lengthy chapter with a lot of information to digest. This time I haven't made the same strategic mistake as in point to point communications having a single episode which has 58 minutes of content! I decomposed this chapter into 4 parts of (on average) 20 minutes which is much more pleasant to digest. In part one we covered the idea of dealing with heterogeneous and noncontiguous data and the usage of general datatypes. Then we moved on with the following datatype constructors : MPI_Type_contiguous, MPI_Type_vector, MPI_Type_create_hvector, MPI_Type_indexed and MPI_Type_create_hindexed.
In part 2 we continued with the following datatype constructors : MPI_Type_create_indexed_block, MPI_Type_create_hindexed_block, MPI_Type_create_struct, MPI_Type_create_subarray and MPI_Type_create_darray. Then we talked about usage of absolute addresses for displacements. This section covers the following functions : MPI_Get_address, MPI_Aint_add, MPI_Aint_diff and MPI_Type_size.
In part 3 we continued our discussion with MPI_Aint_add, MPI_Aint_diff and MPI_Type_size functions. Then we moved on with the next section dealing with custom lower bound(lb) and upper bound(ub) markers and usage of MPI_Type_create_resized. The next section we dealt with was extent and bounds of datatypes dealing with MPI_Type_get_extent and MPI_Type_get_true_extent. Next the idea of committing and freeing derived datatypes was presented(with MPI_Type_commit and MPI_Type_free). Duplicating a datatype with MPI_Type_dup was mentioned briefly. We followed our discussion with the subtle difference between MPI_Get_elements and MPI_Get_count on the receive side of the communication.
Last but not the least, in part 4 we wrapped things up by packing and unpacking and the following functions were discussed : MPI_Pack, MPI_Unpack, MPI_Pack_size, MPI_Pack_external, MPI_Unpack_external and MPI_Pack_external_size.
* The latest version at the time of this video is mpich-4.2.2
Hope you learned something from this video. If you have further questions don't hesitate to comment down below. Have fun!
In part 2 we continued with the following datatype constructors : MPI_Type_create_indexed_block, MPI_Type_create_hindexed_block, MPI_Type_create_struct, MPI_Type_create_subarray and MPI_Type_create_darray. Then we talked about usage of absolute addresses for displacements. This section covers the following functions : MPI_Get_address, MPI_Aint_add, MPI_Aint_diff and MPI_Type_size.
In part 3 we continued our discussion with MPI_Aint_add, MPI_Aint_diff and MPI_Type_size functions. Then we moved on with the next section dealing with custom lower bound(lb) and upper bound(ub) markers and usage of MPI_Type_create_resized. The next section we dealt with was extent and bounds of datatypes dealing with MPI_Type_get_extent and MPI_Type_get_true_extent. Next the idea of committing and freeing derived datatypes was presented(with MPI_Type_commit and MPI_Type_free). Duplicating a datatype with MPI_Type_dup was mentioned briefly. We followed our discussion with the subtle difference between MPI_Get_elements and MPI_Get_count on the receive side of the communication.
Last but not the least, in part 4 we wrapped things up by packing and unpacking and the following functions were discussed : MPI_Pack, MPI_Unpack, MPI_Pack_size, MPI_Pack_external, MPI_Unpack_external and MPI_Pack_external_size.
* The latest version at the time of this video is mpich-4.2.2
Hope you learned something from this video. If you have further questions don't hesitate to comment down below. Have fun!