From a1172429974beadbd21f351af069c6ceb2cd5200 Mon Sep 17 00:00:00 2001 From: vitler Date: Sat, 27 Jun 2026 11:13:20 +0100 Subject: [PATCH] algorithm content --- Makefile | 31 ++++++ basic.c | 238 ++++++++++++++++++++++++++++++++++++++++++++ basic.h | 7 ++ control-skeleton.c | 91 +++++++++++++++++ control.h | 15 +++ documents/pp-t2.pdf | Bin 0 -> 108611 bytes global.h | 12 +++ termination.c | 116 +++++++++++++++++++++ util.c | 54 ++++++++++ util.h | 13 +++ 10 files changed, 577 insertions(+) create mode 100644 Makefile create mode 100644 basic.c create mode 100644 basic.h create mode 100644 control-skeleton.c create mode 100644 control.h create mode 100644 documents/pp-t2.pdf create mode 100644 global.h create mode 100644 termination.c create mode 100644 util.c create mode 100644 util.h diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..cb91787 --- /dev/null +++ b/Makefile @@ -0,0 +1,31 @@ +# replace with the file containing your algorithm +CONTROL_ALGORITHM = control-skeleton.c + +# add extra flags here +XCFLAGS = + +CC = mpicc +CFLAGS = -std=gnu11 -Wall -Wno-parentheses -g3 $(XWARN) $(XCFLAGS) + +#LDLIBS = -lrt + +XWARN = # -Wextra -Wconversion + + +C_FILES = termination.c basic.c util.c $(CONTROL_ALGORITHM) +O_FILES = $(addsuffix .o, $(basename $(C_FILES))) + +H_FILES = global.h util.h basic.h control.h + +termination : $(O_FILES) + + +# dependencies + +$(O_FILES) : $(H_FILES) + +$(addsuffix .o, $(basename $(CONTROL_ALGORITHM))) : control.h + + +clean : + @$(RM) $(O_FILES) termination diff --git a/basic.c b/basic.c new file mode 100644 index 0000000..b31c2f2 --- /dev/null +++ b/basic.c @@ -0,0 +1,238 @@ +/* + Parallel Programming - 2026/2027 + + Basic algorithm +*/ + +#include +#include + +#include +#include +#include + +#include "global.h" +#include "basic.h" + +#include "util.h" +#include "control.h" + +#define SEND_BASIC_MESSAGE_PROBABILITY 50 +#define BECOME_PASSIVE_PROBABILITY 30 + +#define WORK_TIME_MIN 500 // ms +#define WORK_TIME_MAX 1500 // ms + +#define BASIC_MESSAGE 1 // basic message tag + +// a process is either active or passive +typedef enum { ACTIVE, PASSIVE } process_state_t; + +// basic messages +typedef struct { int value; } basic_message_t; + +static int pid; // this process id + +static bool is_initiator = false; +static process_state_t state = PASSIVE; + +/* + Process with id ID becomes active. +*/ +static void basic_set_active(int id) +{ + state = ACTIVE; + + trace("%d: is ACTIVE\n", id); + + control_become_active_hook(id); +} + +/* + Process with id ID becomes passive. +*/ +static void basic_set_passive(int id) +{ + state = PASSIVE; + + trace("%d: is PASSIVE\n", id); + + control_become_passive_hook(id); +} + +/* + Active process with id ID becomes passive with probability + BECOME_PASSIVE_PROBABILITY. +*/ +static process_state_t basic_new_state(int id) +{ + if (rand_ab(1, 100) <= BECOME_PASSIVE_PROBABILITY) + basic_set_passive(id); + + return state; +} + +/* + Receive a basic message. The process is blocked until a message is + received. + + The contents of the message are stored at address PTR and the id of + the sender process is stored at PEER. +*/ +static void basic_receive_message(int id, basic_message_t *ptr, int *peer) +{ + MPI_Status status; + + MPI_Recv(ptr, sizeof(basic_message_t), MPI_BYTE, MPI_ANY_SOURCE, + BASIC_MESSAGE, MPI_COMM_WORLD, &status); + + *peer = status.MPI_SOURCE; + + control_basic_receive_hook(id, *peer); +} + +/* + Receive a basic message, in case there is a pending message + (non-blocking). + + If there is a pending message, the contents of the message are + stored at address PTR, the id of the sender process is stored at + PEER and return true. + + Otherwise, return false. + */ +static bool basic_receive_message_maybe(int id, basic_message_t *ptr, int *peer) +{ + int flag; + MPI_Status status; + + MPI_Iprobe(MPI_ANY_SOURCE, BASIC_MESSAGE, MPI_COMM_WORLD, &flag, &status); + + if (flag == 0) + return false; + + MPI_Recv(ptr, sizeof(basic_message_t), MPI_BYTE, MPI_ANY_SOURCE, + BASIC_MESSAGE, MPI_COMM_WORLD, &status); + + *peer = status.MPI_SOURCE; + + control_basic_receive_hook(id, *peer); + + return true; +} + +/* + Send a basic message, with probability + SEND_BASIC_MESSAGE_PROBABILITY, to a random process. + + PROCESSES is the total number of processes running the basic + algorithm. +*/ +static void basic_send_message_maybe(int id, int processes) +{ + static int msg_no = 0; + int peer; + basic_message_t message; + + if (rand_ab(1, 100) > SEND_BASIC_MESSAGE_PROBABILITY) + return; + + message.value = ++msg_no; + + // choose the process to send the message to + do + peer = rand_ab(0, processes - 1); + while (peer == id); + + control_basic_send_hook(id, peer); + + MPI_Send(&message, sizeof(basic_message_t), MPI_BYTE, peer, BASIC_MESSAGE, + MPI_COMM_WORLD); + + trace("%d: sent %d to %d\n", id, message.value, peer); +} + +/* + The basic algorithm: + + - An initiator process is initially active, a non-initiator process + is initially passive. + + - While a process is active: + - It sends a message to some other process, with probability + SEND_BASIC_MESSAGE_PROBABILITY; + - It becomes passive with probability BECOME_PASSIVE_PROBABILITY. + + - A passive process waits to be sent a message and the becomes + active. + + The arguments of the basic algorithm are the ID of the process, the + number of PROCESSES running the algorithm, and whether the process + is an initiator. +*/ +void *basic_algorithm(void *_args) +{ + thread_args_t *args = _args; + int id = args->id; + int processes = args->processes; + bool initiator = args->initiator; + + basic_message_t message; + + pid = id; + + is_initiator = initiator; + + // tell the control algorithm that the basic algorithm has started; + // allows the synchronisation of both algorithms + control_basic_start_hook(id); + + if (!is_initiator) + { + int peer; + + // wait for a message + basic_receive_message(id, &message, &peer); + + trace("%d: got %d from %d\n", id, message.value, peer); + } + + // process becomes active + basic_set_active(id); + + while (true) + { + if (state == ACTIVE) + { + // may send a message to another process + basic_send_message_maybe(id, processes); + + // may become passive + state = basic_new_state(id); + } + + if (state == PASSIVE) + { + int peer; + + // wait for an incoming message + basic_receive_message(id, &message, &peer); + + trace("%d: got %d from %d\n", id, message.value, peer); + + // process becomes active + basic_set_active(id); + } + else + { + int peer; + + // see if there's an incoming message + if (basic_receive_message_maybe(id, &message, &peer)) + trace("%d: got %d from %d\n", id, message.value, peer); + } + + // let some time go by + rand_sleep(WORK_TIME_MIN, WORK_TIME_MAX); + } +} diff --git a/basic.h b/basic.h new file mode 100644 index 0000000..1ae8f10 --- /dev/null +++ b/basic.h @@ -0,0 +1,7 @@ +/* + Parallel Programming - 2026/2027 + + Basic algorithm interface +*/ + +void *basic_algorithm(void *); diff --git a/control-skeleton.c b/control-skeleton.c new file mode 100644 index 0000000..464b8cc --- /dev/null +++ b/control-skeleton.c @@ -0,0 +1,91 @@ +/* + Parallel Programming - 2026/2027 + + Skeleton of an implementation of a termination detection algorithm +*/ + +#include +#include + +#include +#include +#include + +#include "global.h" +#include "control.h" +#include "util.h" + +// the tag(s) of the control messages +//#define ... + +// type for control messages +//typedef struct { +// ... +//} control_message_t; + +// local variables +//static ... + +/* + Main loop of the termination detection algorithm. + + When termination is detected, it must end (returning NULL or another + appropriate value), which signals the main thread that the basic + algorithm has terminated. + + The arguments of the termination detection algorithm are the ID of + the process, the number of PROCESSES running the basic algorithm, + and whether the process is an initiator. +*/ +void *detect_termination(void *_args) +{ + thread_args_t *args = _args; + int id = args->id; + int processes = args->processes; + bool initiator = args->initiator; + + // THE FOLLOWING TWO LINES OF CODE MUST BE REPLACED BY THE CODE OF + // THE TERMINATION DETECTION ALGORITHM + + // let the basic algorithm run for 10 seconds + sleep(10); + + return NULL; +} + +/* + Called at startup of the basic algorithm in process ID. +*/ +void control_basic_start_hook(int id) +{ +} + +/* + Called when the basic algorithm process ID becomes passive. +*/ +void control_become_passive_hook(int id) +{ +} + +/* + Called when the basic algorithm process ID becomes active. +*/ +void control_become_active_hook(int id) +{ +} + +/* + Called when the basic algorithm process ID sends a basic message to + process PEER. +*/ +void control_basic_send_hook(int id, int peer) +{ +} + +/* + Called when the basic algorithm process ID receives a basic message + from process PEER. +*/ +void control_basic_receive_hook(int id, int peer) +{ +} diff --git a/control.h b/control.h new file mode 100644 index 0000000..b2b963d --- /dev/null +++ b/control.h @@ -0,0 +1,15 @@ +/* + Parallel Programming - 2026/2027 + + Control algorithm interface +*/ + +void *detect_termination(void *); + +void control_basic_start_hook(int); + +void control_become_passive_hook(int); +void control_become_active_hook(int); + +void control_basic_send_hook(int, int); +void control_basic_receive_hook(int, int); diff --git a/documents/pp-t2.pdf b/documents/pp-t2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d8e38e17868a4c87669d190a967f8790a2a6e65f GIT binary patch literal 108611 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

j(` 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 JGODuZ{|7yGu|xm> literal 0 HcmV?d00001 diff --git a/global.h b/global.h new file mode 100644 index 0000000..5545b10 --- /dev/null +++ b/global.h @@ -0,0 +1,12 @@ +/* + Parallel Programming - 2026/2027 + + Common variables, constants and types +*/ + +#include + +typedef struct { + int id, processes; + bool initiator; +} thread_args_t; diff --git a/termination.c b/termination.c new file mode 100644 index 0000000..7be3f34 --- /dev/null +++ b/termination.c @@ -0,0 +1,116 @@ +/* + Parallel Programming - 2026/2027 + + The main program +*/ + +#include +#include + +#include +#include +#include +#include + +#include "global.h" +#include "basic.h" +#include "control.h" +#include "util.h" + +/* + Main program: + + - Initialise the MPI environment. + - Process command line arguments. + - Start the basic algorithm thread. + - Start the control algorithm (termination detection) thread. + - Wait for the control algorithm to terminate, signalling that the + terminatation of the basic algorithm has been detected. + - Cancel the basic algorithm thread. +*/ +int main(int argc, char *argv[]) +{ + // process data + int rank, processes; + + int mpi_threads_support; + + // initialise MPI framework + MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &mpi_threads_support); + + MPI_Comm_rank(MPI_COMM_WORLD, &rank); // get process id + MPI_Comm_size(MPI_COMM_WORLD, &processes); // get number of processes + + if (mpi_threads_support < MPI_THREAD_MULTIPLE && rank == 0) + warn("%s: warning: threads not fully supported\n", argv[0]); + + if (processes < 2) + warn("%s: warning: there must be at least 2 processes\n", argv[0]); + + // parse arguments + int arg = 1; + + while (arg < argc) + { + // parse one argument + if (strcmp(argv[arg], "--quiet") == 0) + { + // silence debugging messages + QUIET = 1; + } + else if (strcmp(argv[arg], "-r") == 0) + { + // re-seed random number generator + srand(time(0)); + } + else + warn("%s: unknown option `%s'\n", argv[0]); + + arg++; + } + + // give all the processes a chance to start + MPI_Barrier(MPI_COMM_WORLD); + + // the program + if (rank == 0) + printf("Starting basic algorithm\n"); + + // arguments for the basic and the control algorithms + thread_args_t threads_args = { rank, processes, rank == 0 }; + + // start basic algorithm thread + pthread_t basic_thread; + + if (pthread_create(&basic_thread, NULL, basic_algorithm, &threads_args) != 0) + { + perror("pthread_create (basic)"); + + return 1; + } + + // start control thread + pthread_t control_thread; + + if (pthread_create(&control_thread, NULL, detect_termination, &threads_args) != 0) + { + perror("pthread_create (control)"); + + return 2; + } + + // wait for control thread to end + pthread_join(control_thread, NULL); + + // stop (terminated) basic algorithm thread + pthread_cancel(basic_thread); + pthread_join(basic_thread, NULL); + + // wrap up + MPI_Finalize(); + + if (rank == 0) + printf("Terminating\n"); + + return 0; +} diff --git a/util.c b/util.c new file mode 100644 index 0000000..65e145e --- /dev/null +++ b/util.c @@ -0,0 +1,54 @@ +/* + Parallel Programming - 2026/2027 + + Utility functions +*/ + +#include +#include +#include +#include + + +// controls the output of debugging messages, set to 1 to have no +// messages +int QUIET = 0; + + +// returns a random integer in [A,B] +int rand_ab(int a, int b) +{ + return a + rand() % (b - a + 1); +} + +// sleep between MIN and MAX ms +void rand_sleep(int min, int max) +{ + int ms = rand_ab(min, max); + struct timespec ts = { ms / 1000, (ms % 1000) * 1000 }; + + nanosleep(&ts, NULL); +} + +// output a debugging message to stderr +void trace(char *format, ...) +{ + va_list args; + + if (QUIET) + return; + + va_start (args, format); + vfprintf(stderr, format, args); + va_end (args); +} + +// unconditionally output a message to stderr +void warn(char *format, ...) +{ + va_list args; + + va_start (args, format); + vfprintf(stderr, format, args); + va_end (args); +} diff --git a/util.h b/util.h new file mode 100644 index 0000000..3e963ee --- /dev/null +++ b/util.h @@ -0,0 +1,13 @@ +/* + Parallel Programming - 2026/2027 + + Utility functions header file +*/ + +extern int QUIET; + +int rand_ab(int, int); +void rand_sleep(int, int); + +void trace(char *, ...); +void warn(char *, ...); -- 2.47.3