#include "cs_defs.h"#include "cs_base.h"#include "cs_base_accel.h"#include "cs_interface.h"#include "cs_rank_neighbors.h"#include "fvm_periodicity.h" Include dependency graph for cs_halo.h:
 Include dependency graph for cs_halo.h:Go to the source code of this file.
| Data Structures | |
| struct | cs_halo_t | 
| Typedefs | |
| typedef struct _cs_halo_state_t | cs_halo_state_t | 
| Enumerations | |
| enum | cs_halo_type_t { CS_HALO_STANDARD , CS_HALO_EXTENDED , CS_HALO_N_TYPES } | 
| enum | cs_halo_comm_mode_t { CS_HALO_COMM_P2P , CS_HALO_COMM_RMA_GET } | 
| Functions | |
| cs_halo_t * | cs_halo_create (const cs_interface_set_t *ifs) | 
| Create a halo structure given an interface set.  More... | |
| void | cs_halo_create_complete (cs_halo_t *halo) | 
| Ready halo for use.  More... | |
| cs_halo_t * | cs_halo_create_from_ref (const cs_halo_t *ref) | 
| Create a halo structure, given a reference halo.  More... | |
| cs_halo_t * | cs_halo_create_from_rank_neighbors (const cs_rank_neighbors_t *rn, cs_lnum_t n_local_elts, cs_lnum_t n_distant_elts, const int elt_rank_id[], const cs_lnum_t elt_id[]) | 
| Create a halo structure from distant element distant ranks and ids.  More... | |
| void | cs_halo_destroy (cs_halo_t **halo) | 
| cs_halo_state_t * | cs_halo_state_create (void) | 
| Create a halo state structure.  More... | |
| void | cs_halo_state_destroy (cs_halo_state_t **halo_state) | 
| Destroy a halo state structure.  More... | |
| cs_halo_state_t * | cs_halo_state_get_default (void) | 
| Get pointer to default halo state structure.  More... | |
| static size_t | cs_halo_pack_size (const cs_halo_t *halo, cs_datatype_t data_type, int stride) | 
| Compute required size for packing send data into dense buffer.  More... | |
| void | cs_halo_renumber_cells (cs_halo_t *halo, const cs_lnum_t new_cell_id[]) | 
| void | cs_halo_renumber_ghost_cells (cs_halo_t *halo, const cs_lnum_t old_cell_id[]) | 
| void * | cs_halo_sync_pack_init_state (const cs_halo_t *halo, cs_halo_type_t sync_mode, cs_datatype_t data_type, int stride, void *send_buf, cs_halo_state_t *hs) | 
| Initialize halo state prior to packing halo data to send.  More... | |
| void | cs_halo_sync_pack (const cs_halo_t *halo, cs_halo_type_t sync_mode, cs_datatype_t data_type, int stride, void *val, void *send_buf, cs_halo_state_t *hs) | 
| Pack halo data to send into dense buffer.  More... | |
| void | cs_halo_sync_start (const cs_halo_t *halo, void *val, cs_halo_state_t *hs) | 
| Launch update array of values in case of parallelism or periodicity.  More... | |
| void | cs_halo_sync_wait (const cs_halo_t *halo, void *val, cs_halo_state_t *hs) | 
| Wait for completion of update array of values in case of parallelism or periodicity.  More... | |
| void | cs_halo_sync (const cs_halo_t *halo, cs_halo_type_t sync_mode, cs_datatype_t data_type, int stride, void *val) | 
| Update array of values in case of parallelism or periodicity.  More... | |
| void | cs_halo_sync_untyped (const cs_halo_t *halo, cs_halo_type_t sync_mode, size_t size, void *val) | 
| void | cs_halo_sync_num (const cs_halo_t *halo, cs_halo_type_t sync_mode, cs_lnum_t num[]) | 
| void | cs_halo_sync_var (const cs_halo_t *halo, cs_halo_type_t sync_mode, cs_real_t var[]) | 
| void | cs_halo_sync_var_strided (const cs_halo_t *halo, cs_halo_type_t sync_mode, cs_real_t var[], int stride) | 
| bool | cs_halo_get_use_barrier (void) | 
| void | cs_halo_set_use_barrier (bool use_barrier) | 
| cs_halo_comm_mode_t | cs_halo_get_comm_mode (void) | 
| Get default communication mode for halo exchange.  More... | |
| void | cs_halo_set_comm_mode (cs_halo_comm_mode_t mode) | 
| Set default communication mode for halo exchange.  More... | |
| cs_alloc_mode_t | cs_halo_get_buffer_alloc_mode (void) | 
| Get default host/device allocation mode for message packing arrays.  More... | |
| void | cs_halo_set_buffer_alloc_mode (cs_alloc_mode_t mode) | 
| Set default host/device allocation mode for message packing arrays.  More... | |
| void | cs_halo_dump (const cs_halo_t *halo, int print_level) | 
| typedef struct _cs_halo_state_t cs_halo_state_t | 
Structure to maintain halo exchange state
| enum cs_halo_comm_mode_t | 
| enum cs_halo_type_t | 
| cs_halo_t* cs_halo_create | ( | const cs_interface_set_t * | ifs | ) | 
Create a halo structure given an interface set.
| [in] | ifs | pointer to a cs_interface_set structure | 
| void cs_halo_create_complete | ( | cs_halo_t * | halo | ) | 
Ready halo for use.
This function should be called after building a halo using the cs_halo_create_function and defined locally. It is called automatically by cs_halo_create_from_ref and cs_halo_create_from_rank_neigbors so does not need to be called again using these functions.
| [in] | halo | pointer to halo structure | 
This function should be called after building a halo using the cs_halo_create_function and defined locally. It is called automatically by cs_halo_create_from_ref and cs_halo_create_from_rank_neighbors so does not need to be called again using these functions.
| [in] | halo | pointer to halo structure | 
| cs_halo_t* cs_halo_create_from_rank_neighbors | ( | const cs_rank_neighbors_t * | rn, | 
| cs_lnum_t | n_local_elts, | ||
| cs_lnum_t | n_distant_elts, | ||
| const int | elt_rank_id[], | ||
| const cs_lnum_t | elt_id[] | ||
| ) | 
Create a halo structure from distant element distant ranks and ids.
| [in] | rn | associated rank neighbors info | 
| [in] | n_local_elts | number of elements for local rank | 
| [in] | n_distant_elts | number of distant elements for local rank | 
| [in] | elt_rank_id | distant element rank index in rank neighbors, ordered by rank (size: n_distant_elts) | 
| [in] | elt_id | distant element id (at distant rank), ordered by rank (size: n_distant_elts) | 
Create a halo structure, given a reference halo.
| [in] | ref | pointer to reference halo | 
| void cs_halo_destroy | ( | cs_halo_t ** | halo | ) | 
brief Destroy a halo structure.
| [in,out] | halo | pointer to pointer to cs_halo structure to destroy. | 
| void cs_halo_dump | ( | const cs_halo_t * | halo, | 
| int | print_level | ||
| ) | 
| cs_alloc_mode_t cs_halo_get_buffer_alloc_mode | ( | void | ) | 
Get default host/device allocation mode for message packing arrays.
| cs_halo_comm_mode_t cs_halo_get_comm_mode | ( | void | ) | 
Get default communication mode for halo exchange.
| bool cs_halo_get_use_barrier | ( | void | ) | 
| 
 | inlinestatic | 
Compute required size for packing send data into dense buffer.
| [in] | halo | pointer to halo structure | 
| [in] | data_type | data type | 
| [in] | stride | number of (interlaced) values by entity | 
| void cs_halo_set_buffer_alloc_mode | ( | cs_alloc_mode_t | mode | ) | 
Set default host/device allocation mode for message packing arrays.
| [in] | mode | allocation mode to set | 
| void cs_halo_set_comm_mode | ( | cs_halo_comm_mode_t | mode | ) | 
Set default communication mode for halo exchange.
| [in] | mode | allocation mode to set | 
| void cs_halo_set_use_barrier | ( | bool | use_barrier | ) | 
| cs_halo_state_t* cs_halo_state_create | ( | void | ) | 
Create a halo state structure.
| void cs_halo_state_destroy | ( | cs_halo_state_t ** | halo_state | ) | 
Destroy a halo state structure.
| [in,out] | halo_state | pointer to pointer to cs_halo_state structure to destroy. | 
| cs_halo_state_t* cs_halo_state_get_default | ( | void | ) | 
Get pointer to default halo state structure.
| void cs_halo_sync | ( | const cs_halo_t * | halo, | 
| cs_halo_type_t | sync_mode, | ||
| cs_datatype_t | data_type, | ||
| int | stride, | ||
| void * | val | ||
| ) | 
Update array of values in case of parallelism or periodicity.
This function aims at copying main values from local elements (id between 1 and n_local_elements) to ghost elements on distant ranks (id between n_local_elements + 1 to n_local_elements_with_halo).
| [in] | halo | pointer to halo structure | 
| [in] | sync_mode | synchronization mode (standard or extended) | 
| [in] | data_type | data type | 
| [in] | stride | number of (interlaced) values by entity | 
| [in] | val | pointer to variable value array | 
| void cs_halo_sync_num | ( | const cs_halo_t * | halo, | 
| cs_halo_type_t | sync_mode, | ||
| cs_lnum_t | num[] | ||
| ) | 
| void cs_halo_sync_pack | ( | const cs_halo_t * | halo, | 
| cs_halo_type_t | sync_mode, | ||
| cs_datatype_t | data_type, | ||
| int | stride, | ||
| void * | val, | ||
| void * | send_buf, | ||
| cs_halo_state_t * | hs | ||
| ) | 
Pack halo data to send into dense buffer.
A local state handler may be provided, or the default state handler will be used.
A local state and/or buffer may be provided, or the default (global) state and buffer will be used. If provided explicitely, the buffer must be of sufficient size.
| [in] | halo | pointer to halo structure | 
| [in] | sync_mode | synchronization mode (standard or extended) | 
| [in] | data_type | data type | 
| [in] | stride | number of (interlaced) values by entity | 
| [in] | val | pointer to variable value array | 
| [out] | send_buf | pointer to send buffer, nullptr for global buffer | 
| [in,out] | hs | pointer to halo state, nullptr for global state | 
| void* cs_halo_sync_pack_init_state | ( | const cs_halo_t * | halo, | 
| cs_halo_type_t | sync_mode, | ||
| cs_datatype_t | data_type, | ||
| int | stride, | ||
| void * | send_buf, | ||
| cs_halo_state_t * | hs | ||
| ) | 
Initialize halo state prior to packing halo data to send.
A local state handler may be provided, or the default state handler will be used.
This function is included in cs_halo_sync_pack, but may be called separately for specific implementations, such as for accelerator devices.
A local state and/or buffer may be provided, or the default (global) state and buffer will be used. If provided explicitely, the buffer must be of sufficient size.
| [in] | halo | pointer to halo structure | 
| [in] | sync_mode | synchronization mode (standard or extended) | 
| [in] | data_type | data type | 
| [in] | stride | number of (interlaced) values by entity | 
| [out] | send_buf | pointer to send buffer, nullptr for global buffer | 
| [in,out] | hs | pointer to halo state, nullptr for global state | 
| void cs_halo_sync_start | ( | const cs_halo_t * | halo, | 
| void * | val, | ||
| cs_halo_state_t * | hs | ||
| ) | 
Launch update array of values in case of parallelism or periodicity.
This function aims at copying main values from local elements (id between 1 and n_local_elements) to ghost elements on distant ranks (id between n_local_elements + 1 to n_local_elements_with_halo).
The cs_halo_sync_pack function should have been called before this function, using the same hs argument.
| [in] | halo | pointer to halo structure | 
| [in] | val | pointer to variable value array | 
| [in,out] | hs | pointer to halo state, nullptr for global state | 
| void cs_halo_sync_untyped | ( | const cs_halo_t * | halo, | 
| cs_halo_type_t | sync_mode, | ||
| size_t | size, | ||
| void * | val | ||
| ) | 
| void cs_halo_sync_var | ( | const cs_halo_t * | halo, | 
| cs_halo_type_t | sync_mode, | ||
| cs_real_t | var[] | ||
| ) | 
| void cs_halo_sync_var_strided | ( | const cs_halo_t * | halo, | 
| cs_halo_type_t | sync_mode, | ||
| cs_real_t | var[], | ||
| int | stride | ||
| ) | 
| void cs_halo_sync_wait | ( | const cs_halo_t * | halo, | 
| void * | val, | ||
| cs_halo_state_t * | hs | ||
| ) | 
Wait for completion of update array of values in case of parallelism or periodicity.
This function aims at copying main values from local elements (id between 1 and n_local_elements) to ghost elements on distant ranks (id between n_local_elements + 1 to n_local_elements_with_halo).
The cs_halo_sync_start function should have been called before this function, using the same hs argument.
| [in] | halo | pointer to halo structure | 
| [in] | val | pointer to variable value array | 
| [in,out] | hs | pointer to halo state, nullptr for global state |