- Serial Implementation:
src/serial/serial_spmv.cpp - Parallel Implementation:
src/openmp/parallel_spmv.cpp - Validation Program:
./validate(all tests passed!) - Benchmark Program:
./benchmark(with CSV results)
Exactly 2 pages in two-column format including:
✅ Problem Statement - Mathematical formulation and importance
✅ Algorithm Design - Foster's methodology (Partitioning, Communication, Agglomeration, Mapping)
✅ Pseudocode - Algorithm 1 (Serial) and Algorithm 2 (Parallel OpenMP)
✅ Validation - 4 test cases with error < 10^-10
✅ Performance Evaluation - Table with YOUR actual results
✅ Graphs - Speedup and Execution Time comparisons (from results/ folder)
✅ Analysis & Tuning - Optimization insights, scheduling strategy
✅ Challenges - Load imbalance, memory bandwidth, overhead
✅ References - Properly cited in bibliography
- Maximum Speedup: 12.28× (2,000×2,000 matrix)
- Average Speedup: 4.60×
- Peak Efficiency: 76.8%
- Test Range: 100×100 to 10,000×10,000
- Graphs: 4 PNG files in
results/directory - Raw Data:
benchmark_results.csv
Open report_final.tex and change:
\author{
Ranime Shehata\\ % <-- YOUR NAME
\textit{Department of Computer Science}\\ % <-- YOUR DEPARTMENT
\textit{University Name}\\ % <-- YOUR UNIVERSITY
email@example.com % <-- YOUR EMAIL
}Then recompile:
cd /home/ranime/Desktop/Sparse-Matrix-Vector-Multiplication
pdflatex -interaction=nonstopmode report_final.tex
pdflatex -interaction=nonstopmode report_final.tex
mv report_final.pdf report.pdf# Clean and rebuild
make clean
make all
# Run validation
./validate
# Should show: "✓ ALL TESTS PASSED"
# Run benchmarks
./benchmark
# Should create: benchmark_results.csv
# Generate graphs
python3 src/plotting/plot_results.py
# Should create: results/*.pngYour submission folder contains:
Sparse-Matrix-Vector-Multiplication/
├── report.pdf ⭐ 2-PAGE REPORT (440KB)
├── src/
│ ├── SparseMatrix.{h,cpp} # CSR implementation
│ ├── serial/
│ │ └── serial_spmv.{h,cpp} # Serial algorithm
│ ├── openmp/
│ │ └── parallel_spmv.{h,cpp}# Parallel algorithm
│ ├── testing/
│ │ ├── validate.cpp # Validation program
│ │ └── benchmark.cpp # Benchmarking program
│ └── plotting/
│ └── plot_results.py # Visualization script
├── results/
│ ├── speedup.png # Referenced in report
│ ├── execution_time.png # Referenced in report
│ ├── efficiency.png
│ └── execution_time_log.png
├── benchmark_results.csv # Raw performance data
├── Makefile # Build system
└── README.md # Documentation
- Updated author information in
report_final.tex - Recompiled report with your name
- Verified report is exactly 2 pages
- Ran
./validate- all tests pass - Ran
./benchmark- CSV generated - Graphs exist in
results/folder - All graphs referenced in report
- Code compiles without errors (
make all) - README.md is complete
| Size | Serial (ms) | Parallel (ms) | Speedup |
|---|---|---|---|
| 100 | 0.001 | 6.686 | 0.00 |
| 500 | 0.021 | 0.004 | 5.82 |
| 2,000 | 0.325 | 0.026 | 12.28 |
| 5,000 | 2.413 | 0.206 | 11.74 |
| 10,000 | 9.994 | 4.388 | 2.28 |
# Build everything
make all
# Validate correctness
make test
# Run benchmarks
make bench
# Generate graphs
make plot
# Complete workflow
make run
# View report
xdg-open report.pdf # or
firefox report.pdf # or
evince report.pdf- Complete Implementation: Both serial and parallel versions working
- Rigorous Validation: 4 test cases with numerical verification
- Real Performance Data: Actual measurements from your system
- Professional Report: IEEE-style, exactly 2 pages, all sections covered
- Methodology: Clear application of Foster's parallel design approach
- Analysis: In-depth discussion of overhead, efficiency, and bottlenecks
- Visualizations: Professional graphs embedded in report
- Documentation: Pseudocode, algorithms, and clear explanations
- Report won't compile? Use Overleaf (upload
report_final.tex+results/folder) - Need IEEE template? Current version uses standard article class (works fine!)
- Want to add more? You've covered all requirements - don't overcomplicate!
Your project meets ALL requirements:
- ✅ Working serial implementation
- ✅ Working parallel implementation
- ✅ 2-page report with two-column layout
- ✅ Problem statement
- ✅ Algorithm design (Foster's methodology)
- ✅ Pseudocode
- ✅ Validation
- ✅ Performance evaluation
- ✅ Graphs
- ✅ Analysis and tuning
- ✅ Challenges
- ✅ References
Good luck with your submission! 🎓