grasp_mpi_engine.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <grasp/utils.h>
#include <unistd.h>
#include <assert.h>
#include <signal.h>
#include <setjmp.h>
#include <stdbool.h>
#include "grasp_mpi_engine.h"

Data Structures

struct  order_t_
 
struct  result_t_
 
struct  process_info_t_
 

Typedefs

typedef enum worker_status_t_ worker_status_t
 
typedef struct process_info_t_ process_info_t
 

Enumerations

enum  { ORDER_LABEL_MAX_LEN = 255 }
 
enum  { RESULT_LABEL_MAX_LEN = 255 }
 
enum  { ORDER_WRAPPER_SIZE = 1024 }
 
enum  { RESULT_WRAPPER_SIZE = 1024 }
 
enum  {
  ORDER_OFFSET_NO_MORE_JOB = 0, ORDER_OFFSET_MESSAGE_SIZE = 8, ORDER_OFFSET_PAYLOAD_SIZE = 16, ORDER_OFFSET_LABEL = 24,
  ORDER_OFFSET_PAYLOAD = ORDER_WRAPPER_SIZE
}
 
enum  { RESULT_OFFSET_MESSAGE_SIZE = 0, RESULT_OFFSET_PAYLOAD_SIZE = 8, RESULT_OFFSET_LABEL = 16, RESULT_OFFSET_PAYLOAD = RESULT_WRAPPER_SIZE }
 
enum  { WORKER_STATUS_TAG, ORDER_TAG, RESULT_IS_READY_TAG }
 
enum  { NO_AVAILABLE_WORKER = -1 }
 
enum  worker_status_t_ { WORKER_STATUS_BUSY, WORKER_STATUS_AVAILABLE }
 

Functions

order_tgrasp_mpi_engine_new_order (const char *label, size_t payload_size, const void *payload)
 
result_tgrasp_mpi_engine_new_result (const char *label, size_t payload_size, const void *payload)
 
void grasp_mpi_engine_delete_order (order_t *order)
 
void grasp_mpi_engine_delete_result (result_t *result)
 
void grasp_mpi_engine_get_order_label (const order_t *order, size_t label_max_size, char *label)
 
void grasp_mpi_engine_get_result_label (const result_t *result, size_t label_max_size, char *label)
 
void grasp_mpi_engine_set_debug_level (int debug_level)
 
void grasp_mpi_engine_set_appname (const char *appname)
 
void * grasp_mpi_engine_get_order_payload (const order_t *order)
 
void * grasp_mpi_engine_get_result_payload (const result_t *result)
 
order_tgrasp_mpi_engine_dummy_order_callback (int worker_rank, const void *master_info, bool *no_more_order, int *num_orders)
 
result_tgrasp_mpi_engine_dummy_task_callback (const order_t *order, const void *worker_info)
 
void grasp_mpi_engine_set_order_callback (order_callback_t order_callback, int order_payload_max_size)
 
void grasp_mpi_engine_set_task_callback (task_callback_t task_callback, int result_payload_max_size)
 
void grasp_mpi_engine_set_collect_callback (collect_callback_t collect_callback)
 
void grasp_mpi_engine_set_progress_info_callback (progress_info_callback_t progress_callback)
 
bool grasp_mpi_engine_is_master (void)
 
bool grasp_mpi_engine_is_worker (void)
 
int grasp_mpi_engine_main_loop (const void *master_info, const void *worker_info)
 

Typedef Documentation

◆ process_info_t

◆ worker_status_t

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
ORDER_LABEL_MAX_LEN 

◆ anonymous enum

anonymous enum
Enumerator
RESULT_LABEL_MAX_LEN 

◆ anonymous enum

anonymous enum
Enumerator
ORDER_WRAPPER_SIZE 

◆ anonymous enum

anonymous enum
Enumerator
RESULT_WRAPPER_SIZE 

◆ anonymous enum

anonymous enum
Enumerator
ORDER_OFFSET_NO_MORE_JOB 
ORDER_OFFSET_MESSAGE_SIZE 
ORDER_OFFSET_PAYLOAD_SIZE 
ORDER_OFFSET_LABEL 
ORDER_OFFSET_PAYLOAD 

◆ anonymous enum

anonymous enum
Enumerator
RESULT_OFFSET_MESSAGE_SIZE 
RESULT_OFFSET_PAYLOAD_SIZE 
RESULT_OFFSET_LABEL 
RESULT_OFFSET_PAYLOAD 

◆ anonymous enum

anonymous enum
Enumerator
WORKER_STATUS_TAG 
ORDER_TAG 
RESULT_IS_READY_TAG 

◆ anonymous enum

anonymous enum
Enumerator
NO_AVAILABLE_WORKER 

◆ worker_status_t_

Enumerator
WORKER_STATUS_BUSY 
WORKER_STATUS_AVAILABLE 

Function Documentation

◆ grasp_mpi_engine_delete_order()

void grasp_mpi_engine_delete_order ( order_t order)

◆ grasp_mpi_engine_delete_result()

void grasp_mpi_engine_delete_result ( result_t result)

◆ grasp_mpi_engine_dummy_order_callback()

order_t* grasp_mpi_engine_dummy_order_callback ( int  worker_rank,
const void *  master_info,
bool *  no_more_order,
int *  num_orders 
)

◆ grasp_mpi_engine_dummy_task_callback()

result_t* grasp_mpi_engine_dummy_task_callback ( const order_t order,
const void *  worker_info 
)

◆ grasp_mpi_engine_get_order_label()

void grasp_mpi_engine_get_order_label ( const order_t order,
size_t  label_max_size,
char *  label 
)

◆ grasp_mpi_engine_get_order_payload()

void* grasp_mpi_engine_get_order_payload ( const order_t order)

◆ grasp_mpi_engine_get_result_label()

void grasp_mpi_engine_get_result_label ( const result_t result,
size_t  label_max_size,
char *  label 
)

◆ grasp_mpi_engine_get_result_payload()

void* grasp_mpi_engine_get_result_payload ( const result_t result)

◆ grasp_mpi_engine_is_master()

bool grasp_mpi_engine_is_master ( void  )

◆ grasp_mpi_engine_is_worker()

bool grasp_mpi_engine_is_worker ( void  )

◆ grasp_mpi_engine_main_loop()

int grasp_mpi_engine_main_loop ( const void *  master_info,
const void *  worker_info 
)

◆ grasp_mpi_engine_new_order()

order_t* grasp_mpi_engine_new_order ( const char *  label,
size_t  payload_size,
const void *  payload 
)

◆ grasp_mpi_engine_new_result()

result_t* grasp_mpi_engine_new_result ( const char *  label,
size_t  payload_size,
const void *  payload 
)

◆ grasp_mpi_engine_set_appname()

void grasp_mpi_engine_set_appname ( const char *  appname)

◆ grasp_mpi_engine_set_collect_callback()

void grasp_mpi_engine_set_collect_callback ( collect_callback_t  collect_callback)

◆ grasp_mpi_engine_set_debug_level()

void grasp_mpi_engine_set_debug_level ( int  debug_level)

◆ grasp_mpi_engine_set_order_callback()

void grasp_mpi_engine_set_order_callback ( order_callback_t  order_callback,
int  order_payload_max_size 
)

◆ grasp_mpi_engine_set_progress_info_callback()

void grasp_mpi_engine_set_progress_info_callback ( progress_info_callback_t  progress_callback)

◆ grasp_mpi_engine_set_task_callback()

void grasp_mpi_engine_set_task_callback ( task_callback_t  task_callback,
int  result_payload_max_size 
)