cctools
|
00001 #ifndef MPI_QUEUE_H 00002 #define MPI_QUEUE_H 00003 00004 #include "timestamp.h" 00005 00006 00007 #define MPI_QUEUE_LINE_MAX 256 00008 #define MPI_QUEUE_DEFAULT_PORT 9123 00009 00010 #define MPI_QUEUE_WAITFORTASK -1 00011 00012 #define MPI_QUEUE_RETURN_STATUS_UNSET -1 00013 #define MPI_QUEUE_RESULT_UNSET -1 00014 00015 00016 #define MPI_QUEUE_INPUT 0 00017 #define MPI_QUEUE_OUTPUT 1 00018 00019 00022 struct mpi_queue_task { 00023 char *tag; 00024 char *command_line; 00025 char *output; 00026 struct list *input_files; 00027 struct list *output_files; 00028 int taskid; 00029 int status; 00030 int return_status; 00031 int result; 00033 timestamp_t submit_time; 00034 timestamp_t start_time; 00035 timestamp_t finish_time; 00036 timestamp_t transfer_start_time; 00037 timestamp_t computation_time; 00039 INT64_T total_bytes_transferred; 00040 timestamp_t total_transfer_time; 00041 }; 00042 00043 00047 struct mpi_queue_task *mpi_queue_task_create(const char *full_command); 00048 00056 void mpi_queue_task_specify_file(struct mpi_queue_task *t, const char *name, int type); 00057 00058 00064 void mpi_queue_task_specify_tag(struct mpi_queue_task *t, const char *tag); 00065 00066 00070 void mpi_queue_task_delete(struct mpi_queue_task *t); 00071 00072 00089 struct mpi_queue *mpi_queue_create(int port); 00090 00096 void mpi_queue_submit(struct mpi_queue *q, struct mpi_queue_task *t); 00097 00103 struct mpi_queue_task *mpi_queue_wait(struct mpi_queue *q, int timeout); 00104 00108 int mpi_queue_empty(struct mpi_queue *q); 00109 00114 int mpi_queue_port(struct mpi_queue *q); 00115 00119 void mpi_queue_delete(struct mpi_queue *q); 00120 00121 #endif 00122