Analysis

Functions

void *PDC_Server_get_region_data_ptr(pdcid_t object_id)
static int iterator_init(pdcid_t objectId, pdcid_t reg_id, int blocks, struct _pdc_iterator_info *iter)
pdcid_t PDCobj_data_block_iterator_create(pdcid_t obj_id, pdcid_t reg_id, int contig_blocks)

Create a PDC block iterator (general form)

Parameters:
  • obj_id – [IN] PDC object ID

  • reg_id – [IN] PDC region ID

  • contig_blocks – [IN] How many rows or columns the iterator should return

Returns:

Iterator id on success/Zero on failure

pdcid_t PDCobj_data_iter_create(pdcid_t obj_id, pdcid_t reg_id)

Create a PDC iterator (basic form which internally calls the block version with contig_blocks = 1)

Parameters:
  • obj_id – [IN] PDC object ID

  • reg_id – [IN] PDC region ID

Returns:

Iterator id on success/Zero on failure

char *PDC_get_argv0_()
Returns:

****

char *PDC_get_realpath(char *fname, char *app_path)
Parameters:
  • fname – [IN] Path of working directory

  • app_path – [IN] Name of the application

Returns:

****

perr_t PDCobj_analysis_register(char *func, pdcid_t iterIn, pdcid_t iterOut)

Register a function to be invoked at registration time and/or when data buffers referenced by the input iterator is modified.

Parameters:
  • func – [IN] String containing the [libraryname:]function to be registered. (default library name = “libpdcanalysis”)

  • iterIn – [IN] PDC iterator id containing the input data (may be a NULL iterator == 0).

  • dims – [IN] PDC iterator id containing the output data (may be a NULL iterator == 0).

Returns:

Non-negative on success/Negative on failure NOTES: In the use case where null iterators are supplied, the function will always be invoked on the data server. Because there are no data references, the supplied function will only be called at registration time. This can be used to invoke special functions such as the reading of data from files (HDF5, etc.) or to start monitoring or timing functions. One could for example provide an API to start or stop profilers, take data snapshots, etc.

size_t PDCobj_data_getSliceCount(pdcid_t iter)
Parameters:

iter – [IN] The number iteration

Returns:

********

size_t PDCobj_data_getNextBlock(pdcid_t iter, void **nextBlock, size_t *dims)

Use a PDC data iterator to retrieve object data for PDC in-locus Analysis.

Parameters:
  • iter – [IN] PDC iterator id

  • nextBlock – [OUT] Pointer to a contiguous block of memory that contains object data

  • dims – [IN/OUT] A pointer to an array (2D) of rows/columns

Returns:

Total number of elements contained by the datablock.

perr_t PDC_analysis_end()
Returns:

Non-negative on success/Negative on failure

perr_t PDC_iterator_end()
Returns:

Non-negative on success/Negative on failure

Variables

static char *default_pdc_analysis_lib = "libpdcanalysis.so"

Functions

static inline int compare_gt(int *a, int b)
perr_t PDC_Server_instantiate_data_iterator (obj_data_iterator_in_t *in ATTRIBUTE(unused), obj_data_iterator_out_t *out ATTRIBUTE(unused))
void * PDC_Server_get_ftn_reference (char *ftn ATTRIBUTE(unused))
int PDC_get_analysis_registry (struct _pdc_region_analysis_ftn_info ***registry ATTRIBUTE(unused))
static int pdc_analysis_registry_init_(size_t newSize)
static int pdc_transform_registry_init_(size_t newSize)
int pdc_analysis_registry_finalize_()
int check_analysis (pdc_obj_transform_t op_type ATTRIBUTE(unused), struct pdc_region_info *dest_region)
int PDC_add_analysis_ptr_to_registry_(struct _pdc_region_analysis_ftn_info *ftn_infoPtr)
Parameters:

ftn_infoPtr – [IN] *********

Returns:

*****

int PDCiter_get_nextId(void)
Returns:

****

int PDC_check_transform(pdc_obj_transform_t op_type, struct pdc_region_info *dest_region)
Parameters:
  • op_type – [IN] The type of transformation

  • dest_region – [IN] The struct pointing to destination region

Returns:

********

int PDC_get_transforms(struct _pdc_region_transform_ftn_info ***registry)
Parameters:

registry – [IN] *******

Returns:

******

int PDC_add_transform_ptr_to_registry_(struct _pdc_region_transform_ftn_info *ftn_infoPtr)
Parameters:

op_type – [IN] ***********

Returns:

********

int PDC_update_transform_server_meta_index(int client_index, int meta_index)
Parameters:
  • client_index – [IN] The index of the client

  • meta_index – [IN] *************

Returns:

void PDC_set_execution_locus(_pdc_loci_t locus_identifier)
Parameters:

locus_identifier – [IN] **********

_pdc_loci_t PDC_get_execution_locus()
Returns:

int PDC_get_ftnPtr_(const char *ftn, const char *loadpath, void **ftnPtr)
Parameters:
  • ftn – [IN] *******

  • loadpath – [IN] *******

  • ftnPtr – [IN] *******

Returns:

*****

HG_TEST_RPC_CB(analysis_ftn, handle)
HG_TEST_RPC_CB(obj_data_iterator, handle)
HG_TEST_THREAD_CB(obj_data_iterator)
hg_id_t PDC_obj_data_iterator_register(hg_class_t *hg_class)
void PDC_free_analysis_registry()
void PDC_free_transform_registry()
void PDC_free_iterator_cache()

Variables

size_t analysis_registry_size = 0
size_t transform_registry_size = 0
hg_atomic_int32_t registered_transform_ftn_count_g
int *i_cache_freed = NULL
size_t iterator_cache_entries = CACHE_SIZE
hg_atomic_int32_t i_cache_index
hg_atomic_int32_t i_free_index
_pdc_loci_t execution_locus = UNKNOWN
hg_thread_pool_t *hg_test_thread_pool_g
hg_thread_pool_t *hg_test_thread_pool_fs_g
struct _pdc_region_analysis_ftn_info **pdc_region_analysis_registry = NULL
struct _pdc_region_transform_ftn_info **pdc_region_transform_registry = NULL

Functions

static hg_return_t client_register_iterator_rpc_cb(const struct hg_cb_info *info)
static hg_return_t client_register_analysis_rpc_cb(const struct hg_cb_info *info)
static hg_return_t client_register_transform_rpc_cb(const struct hg_cb_info *info)
perr_t PDC_free_obj_info(struct _pdc_obj_info *obj)
perr_t PDC_Client_send_iter_recv_id(pdcid_t iter_id, pdcid_t *meta_id)

Registers an iterator.

Parameters:
  • iter_id – [IN] The ID of iteration

  • meta_id – [OUT] Metadata ID

Returns:

Non-negative on success/Negative on failure

perr_t PDC_Client_register_obj_analysis(struct _pdc_region_analysis_ftn_info *thisFtn, const char *func, const char *loadpath, pdcid_t in_local, pdcid_t out_local, pdcid_t in_meta, pdcid_t out_meta)
Parameters:
  • iterthisFtn_id – [IN] *****

  • func – [IN] *****

  • loadpath – [IN] *****

  • in_local – [IN] *****

  • out_local – [OUT] *****

  • in_meta – [IN] *****

  • out_meta – [OUT] *****

Returns:

Non-negative on success/Negative on failure

perr_t PDC_Client_register_region_transform (const char *func, const char *loadpath, pdcid_t src_region_id ATTRIBUTE(unused), pdcid_t dest_region_id, pdcid_t obj_id, int start_state, int next_state, int op_type, int when, int client_index)
Parameters:
  • func – [IN] Name of the function

  • loadpath – [IN] Name of the path

  • src_region_id – [IN] ID of source region

  • dest_region_id – [IN] ID of destination region

  • obj_id – [IN] ID of the object

  • start_state – [IN] Start start

  • next_state – [IN] Next state

  • op_type – [IN] Operation type

  • when – [IN] When to start transformation

  • client_index – [IN] Client index

Returns:

Non-negative on success/Negative on failure

Variables

static hg_context_t *send_context_g = NULL
static hg_atomic_int32_t *atomic_work_todo_g = NULL
hg_id_t analysis_ftn_register_id_g
hg_id_t transform_ftn_register_id_g
hg_id_t server_transform_ftn_register_id_g
hg_id_t object_data_iterator_register_id_g

Functions

perr_t PDC_sample_min_max(pdc_var_type_t dtype, uint64_t n, void *data, double sample_pct, double *min, double *max)
Parameters:
  • dtype – [IN] Data type

  • n – [IN] *******

  • data – [IN] *******

  • sample_pct – [IN] *******

  • min – [IN] *******

  • max – [IN] *******

Returns:

Non-negative on success/Negative on failure

double ceil_power_of_2(double number)
double floor_power_of_2(double number)
pdc_histogram_t *PDC_create_hist(pdc_var_type_t dtype, int nbin, double min, double max)

Insert the metdata received from client to the hash table.

Parameters:
  • dtype – [IN] Data type

  • nbin – [IN] ********

  • min – [IN] *******

  • max – [IN] *******

Returns:

********

perr_t PDC_hist_incr_all(pdc_histogram_t *hist, pdc_var_type_t dtype, uint64_t n, void *data)

Insert the metdata received from client to the hash table.

Parameters:
  • hist – [IN] ********

  • dtype – [IN] Data type

  • n – [IN] ********

  • data – [IN] ********

Returns:

Non-negative on success/Negative on failure

pdc_histogram_t *PDC_gen_hist(pdc_var_type_t dtype, uint64_t n, void *data)
Parameters:
  • obj_name – [IN] Data type

  • n – [IN] *******

  • data – [IN] *******

Returns:

********

void PDC_free_hist(pdc_histogram_t *hist)
Parameters:

hist – [IN] ********

void PDC_print_hist(pdc_histogram_t *hist)
Parameters:

hist – [IN] ********

pdc_histogram_t *PDC_dup_hist(pdc_histogram_t *hist)
Parameters:

hist – [IN] ********

Returns:

********

pdc_histogram_t *PDC_merge_hist(int n, pdc_histogram_t **hists)
Parameters:
  • n – [IN] ********

  • hist – [IN] ********

Returns:

********

void PDC_copy_hist(pdc_histogram_t *to, pdc_histogram_t *from)
Parameters:
  • to – [IN] ********

  • hist – [IN] ********