Core parallel computing#
- Baseline
- The reference used for comparison. In Phase II, the baseline is the 1-thread run.
- Benchmark
- A controlled performance test that measures execution time under fixed conditions.
- Concurrency
- Multiple tasks making progress in overlapping time periods. Concurrency does not always mean the tasks run at the same instant.
- Correctness check
- A step that confirms the multithreaded result matches the single-thread result.
- Data parallelism
- A strategy that applies the same operation to different parts of the data at the same time.
- Execution time
- The total time a program or configuration takes to finish. This project reports it in milliseconds.
- Overhead
- The extra cost of running in parallel, such as thread creation, synchronization, scheduling or process management.
- Parallelism
- Using multiple processing units, threads or processes to do work simultaneously.
- Scalability
- How performance changes as more threads or processes are added.
- Speedup
- How much faster a parallel version is than the baseline. In this project,
Speedup = T(1) / T(n). - Synchronization
- The coordination that ensures parallel tasks finish safely and their results are combined correctly.
- Throughput
- The amount of work completed per unit of time. This project focuses on execution time, which is closely related.
Phase I · Processes#
- Child process
- A process created by another process with
fork(). fork()- A Unix system call that creates a new child process. Phase I uses it to divide matrix multiplication across processes.
wait()- A system call the parent uses to pause until its child processes finish.
- Matrix multiplication
- The Phase I workload: multiplying matrices
AandBto produce matrixC. - Process
- An independent running program with its own execution state and resources.
- Process-based parallelism
- Parallel execution achieved by running multiple processes rather than multiple threads.
- Virtual machine (VM)
- A software-based computer. Phase I ran Ubuntu Linux in one to keep the environment controlled.
Phase II · Threads#
- Array partitioning
- Dividing the input array into non-overlapping ranges so each thread processes a different slice.
- Chunk
- A contiguous part of the array assigned to one worker thread.
join()- In Java, makes one thread wait until another finishes. Phase II calls it before combining the partial sums.
- Multithreading
- Using multiple threads inside one program to do work in parallel.
- Partial sum
- The result one worker computes locally, before all the workers' results are added together.
Runnable- A Java interface for code that can run on a thread.
Summer.javaimplements it. - Sum of cubes
- The Phase II workload: each array value contributes
x^3to the final result. - Thread
- A lightweight unit of execution inside a process. Threads share the same memory but can work on different parts of a task concurrently.
- Thread configuration
- The number of threads used in one experiment run:
1,2,4,6or8. - Worker thread
- A thread responsible for computing one assigned part of the input.
Measurement & reporting#
- Average execution time
- The mean runtime across repeated runs of the same configuration.
- Configuration
- A specific test setup, such as a given matrix size, process count or thread count.
- Controlled experiment
- An experiment where only the chosen variables change and everything else stays fixed.
- Graph interpretation
- An explanation of what a graph shows and why the trend appears.
- Machine specifications
- The hardware and software details of the benchmark machine, such as CPU, RAM, OS and Java version.
- Percentage improvement
- The percentage reduction in execution time compared with the baseline:
((T1 - Tn) / T1) * 100. - Raw timing data
- The run-by-run execution times, before averaging.
- Reproducibility
- Whether the same setup and method produce comparable results when the experiment is repeated.
No terms match that filter.
Project reference#
The official repository: CS330-Parallel-Performance-Evaluation-in-Linux-Project.