The phase in four steps#
Build the environment#
Create an Ubuntu 24.04 ARM64 virtual machine in UTM with 4 cores and 4 GB of RAM, then install the build tools. VM & Linux setup →
Compile and verify#
Compile matrix_fork.c with gcc -Wall, run it, and confirm it prints an execution time with no warnings or crashes. Build & run →
Run controlled experiments#
Test N = 1200, 1800 and 2400 with PROCS = 1 and 4, three runs each, on an otherwise idle VM. Experiment plan →
Objectives#
Environment setup#
Configure a Linux VM so that experiments are reproducible and controlled.
Clean compilation#
Compile and run the provided C program without warnings or runtime errors.
Understand processes#
Analyze how fork() and wait() produce process-based parallel execution.
Measure performance#
Time the program under different values of N and PROCS.
Collect data#
Record structured performance data for analysis and reporting.
Report#
Explain the setup, results and scaling behaviour in a written analysis.
Scope of work#
Observation, not optimization
The provided source code is used without structural changes. Only two parameters change: the matrix size N and the number of processes PROCS. The goal is to analyze the program's behaviour, not to rewrite or optimize the algorithm.
Outcome#
Phase I produced:
- a reliable, documented experimental environment,
- baseline performance data for process-based parallelism,
- a structured evaluation method that Phase II builds on.
The central finding is that four processes never beat one at these matrix sizes. Process overhead outweighed the parallel work. Phase II asks the same question again, this time with Java threads.