Wall Heating mini-project for 02613.
Dataset: /dtu/projects/02613_2025/data/modified_swiss_dwellings
wall_heating/— library code (data loading, solvers, metrics, parallel scheduling)scripts/— runnable scripts for each taskjobs/— LSF job scripts for the HPC clusterresults/andfigures/— default output folders
Run from the repo root.
source /dtu/projects/02613_2025/conda/conda_init.sh
conda activate 02613_2026
make run-ref N=20
make inspect N=4
make visualize N=4 MAX_ITER=2000python scripts/run_solver.py 40 --solver reference --workers 1
python scripts/run_solver.py 40 --solver reference --workers 8 --schedule static
python scripts/run_solver.py 40 --solver reference --workers 8 --schedule dynamic
python scripts/run_solver.py 40 --solver numba-cpu --workers 1
python scripts/run_solver.py 40 --solver numba-cuda --workers 1 --max-iter 20000
python scripts/run_solver.py 40 --solver cupy --workers 1Solver options:
reference— baseline from the assignmentnumpy— optimized NumPy with ping-pong buffersnumba-cpu— CPU JIT (requiresnumba)numba-cuda— custom CUDA kernel, fixed iterations (requiresnumba+ CUDA)cupy— GPU vectorized (requirescupy)
- Profile Jacobi:
kernprof -l -v scripts/profile_jacobi.py - Speedup + Amdahl:
python scripts/benchmark_speedup.py --schedule static/--schedule dynamic - CuPy nsys profile:
make submit-cupy-nsys N=20 - Final analysis:
python scripts/analyze_results.py results/all_buildings_stats.csv
Queues used: hpc (CPU) and c02613 (GPU).
make submit-ref N=20
make submit-static N=80
make submit-dynamic N=80
make submit-numba-cpu N=40
make submit-numba-cuda N=40 MAX_ITER=20000
make submit-cupy N=40
make submit-cupy-nsys N=20
make submit-fullJob files in jobs/:
lsf_reference_hpc.lsflsf_speedup_static_hpc.lsflsf_speedup_dynamic_hpc.lsflsf_numba_cpu_hpc.lsflsf_numba_cuda.lsflsf_cupy_gpu.lsflsf_cupy_nsys.lsflsf_full_run_hpc.lsf
- The course conda environment
02613_2026is shared and pre-provisioned; this repo does not install packages into it. - GPU tasks require CUDA-enabled packages already present in
02613_2026.