Commit Graph

7300 Commits

Author SHA1 Message Date
Vijay Janapa Reddi
39c58c30b6 Extracts announcement bar configuration
Moves the announcement bar configuration to a separate file.

This change allows for easier management of the announcement bar content and enables conditional inclusion based on the build environment. The `dismissable` option is also set to `false` for production builds.
2025-08-26 00:47:06 +02:00
Vijay Janapa Reddi
517c34c8fc Merge pull request #952 from harvard-edge/fix/issue-945-transient-errors-causes
Fix/issue 945 transient errors causes
2025-08-25 22:02:17 +02:00
Vijay Janapa Reddi
4d9236e586 Reorganizes content on transient fault causes
Refactors the section on causes of transient faults for better clarity and flow.

Groups external environmental factors, power/signal integrity issues, and timing/logic vulnerabilities into distinct paragraphs.

Moves the transient fault mechanism figure to be positioned after the external environmental factors paragraph to reinforce the concepts.

Special thanks to @formlsysbookissue for the feedback, so adding to co-author list to credit for help.

Co-authored-by: formlsysbookissue <223422994+formlsysbookissue@users.noreply.github.com>
2025-08-25 22:00:39 +02:00
Vijay Janapa Reddi
3726f0f75e Merge pull request #951 from harvard-edge/fix/issue-946-memory-alloc-section-merge
fix: merge overlapping memory allocation subsections and improve table readability
2025-08-25 21:21:57 +02:00
Vijay Janapa Reddi
de2b6ceae9 Refines memory allocation discussion.
Improves the section on memory allocation for AI acceleration by providing a clearer definition, highlighting workload-specific challenges, and adding a reference to systolic arrays to illustrate the importance of efficient memory access patterns. These changes aim to enhance the reader's understanding of the critical role memory allocation plays in optimizing AI accelerator performance.
2025-08-25 21:19:48 +02:00
Vijay Janapa Reddi
f10851b3e9 Updates benchmarking bibliography entries
Corrects and standardizes several entries in the benchmarking bibliography file.

This includes:

- Updating title casing for consistency.
- Adding missing 'source' and 'date' fields where applicable.
- Using short names for publisher.
- Standardizing author name formats.
- Adding archive details where applicable.
2025-08-24 22:17:49 +02:00
Vijay Janapa Reddi
49dd1cd34a Expands discussion of energy efficiency in ML
Elaborates on the tradeoff between performance and energy
efficiency in machine learning systems.

Highlights the importance of considering energy constraints,
especially in edge devices and mobile applications, and
references research on quantization techniques.
2025-08-24 22:15:20 +02:00
Vijay Janapa Reddi
73e62cb37f Merge branch 'fix/issue-944-power-measurement-dvfs' into dev 2025-08-24 22:03:54 +02:00
Vijay Janapa Reddi
9f6d3875fc fix(benchmarking): address section 12.8.2 reader critique on performance vs energy efficiency
- Add proper citations for processor frequency scaling claims using Koomey et al. 2011
- Fix unreferenced INT8 quantization claims with Jacob et al. CVPR 2018 citation
- Add Esser et al. 2019 reference for advanced quantization techniques
- Improve section flow with better contextual introductions and transitions
- Consolidate redundant quantization discussion into coherent narrative
- Connect performance-energy tradeoffs to physical limitations and benchmarking standards
- Reorganize bibliography entries alphabetically for better maintainability

Resolves concerns about unreferenced claims, abrupt transitions, and lack of context.
2025-08-24 21:59:26 +02:00
Vijay Janapa Reddi
16871b0cdd fix(benchmarking): address reader critique on power measurement claims
- Replace unsupported 60% claim with precise 57.3% figure from Boroumand et al. ASPLOS 2018
- Add proper citation for DVFS power reduction claims using Kim et al. HPCA 2008
- Improve DVFS integration by connecting to shared infrastructure discussion
- Link DVFS back to cooling systems showing cascading effects
- Add both new references to bibliography with complete metadata

Resolves concerns about unreferenced claims and abrupt topic transitions.
2025-08-24 21:38:59 +02:00
Vijay Janapa Reddi
e6feacdd27 fix(workflow): resolve cleanup-caches syntax error for scheduled runs
- Add environment variables with proper fallback defaults
- Fix missing values when workflow runs on schedule vs manual trigger
- Update default cache retention from 7 to 14 days (more useful than GitHub's auto-eviction)
- Fix API endpoint for cache deletion
- Ensure workflow works for both scheduled and manual triggers

Resolves syntax error: cutoff_date = datetime.now() - timedelta(days=)
2025-08-24 21:04:25 +02:00
Vijay Janapa Reddi
12e8697b50 fix: add citation for power consumption claim and introduce DVFS properly
Thanks to @formlsysbookissue for reporting this issue.

- Added citation [@barroso2022datacenter] to support the claim that memory-bound inference tasks can consume up to 60% of total system power on data movement
- Introduced Dynamic Voltage and Frequency Scaling (DVFS) with proper explanation before its first mention
- Added smooth transition explaining DVFS as a power management technique that adjusts processor voltage and clock frequency based on workload demands
- Maintained academic tone and technical accuracy while improving content flow

Addresses #944
2025-08-23 23:32:15 +02:00
Vijay Janapa Reddi
0faf6aade2 fix: expand transient fault causes section to match characteristics subsection
Thanks to @formlsysbookissue for reporting this issue.

- Added comprehensive coverage of all transient fault causes mentioned in characteristics subsection
- Organized causes into logical categories: External Environmental Factors, Power and Signal Integrity Issues, and Timing and Logic Vulnerabilities
- Included detailed explanations for voltage fluctuations, ESD, ground bounce, crosstalk, timing violations, and soft errors in combinational logic
- Maintained existing citations and added proper academic structure
- Ensured consistency between characteristics and causes subsections

Addresses #945
2025-08-23 23:30:46 +02:00
Vijay Janapa Reddi
39a35a448c fix: merge overlapping memory allocation subsections and improve table readability
Thanks to @formlsysbookissue for reporting this issue.

- Merged three overlapping subsections (Definition, Importance, Effective) into single cohesive 'Fundamentals and Challenges' subsection
- Added authoritative citations for memory allocation challenges in different architectures (GPUs, TPUs, wafer-scale processors)
- Improved table formatting with bold headers for better visual clarity and readability
- Eliminated redundant explanations while preserving all technical content
- Enhanced pedagogical flow by consolidating related concepts

Addresses #946
2025-08-23 23:26:54 +02:00
Vijay Janapa Reddi
96aaab1880 Merge pull request #950 from harvard-edge/fix/issue-947-dendrite-synapse-correction
fix: Correct biological neuron mapping and add optical interconnects context
2025-08-23 16:29:58 -04:00
Vijay Janapa Reddi
f3eafb01f4 feat: Add optical interconnects context to sustainability chapter
Thanks to @formlsysbookissue for highlighting the importance of optical
interconnects in modern AI infrastructure.

- Added discussion of optical interconnects in resource challenges context
- Included concrete examples (TPUv4, Mellanox technologies)
- Added proper citation to Jouppi et al. 2023 TPU paper
- Connected optical technology adoption to germanium supply concerns
- Added explanatory footnote about Mellanox

This addition helps readers understand how emerging interconnect technologies
both address bandwidth limitations and create new material dependencies.

Part of #947
2025-08-23 22:26:23 +02:00
Vijay Janapa Reddi
79e73a530c fix: Correct biological neuron to artificial neuron mapping
Thanks to @formlsysbookissue for identifying this important clarification.

- Updated Table 3.1: Dendrites now map to inputs, synapses to weights
- Revised explanatory text throughout Chapter 3 to maintain distinction
- Updated quiz question to reflect corrected understanding
- Renumbered mapping list for clarity (1-5 instead of 1-4)

This correction helps students build accurate mental models of how biological
neural structures relate to artificial neural networks.

Part of #947
2025-08-23 22:24:52 +02:00
Vijay Janapa Reddi
403cf3db05 Merge pull request #949 from taunoe/dev
Added missing loop()
2025-08-23 16:21:41 -04:00
Tauno Erik
fc0ebf7be7 Added missing loop() 2025-08-23 19:35:02 +03:00
Vijay Janapa Reddi
7b384f9bbc fix(redirects): synchronize netlify and quarto redirect files
Corrected a typo in the EPUB path in 'quarto/_redirects' and added missing redirect rules to both 'quarto/_redirects' and 'netlify.toml'.

This ensures that the redirect behavior is consistent across both Netlify and direct GitHub Pages access, resolving discrepancies and improving robustness.
2025-08-22 07:33:37 -04:00
Vijay Janapa Reddi
0622c39e37 chore(docker): update windows dockerfile 2025-08-22 02:10:19 -04:00
Vijay Janapa Reddi
124b09bfa7 Merge branch 'fix/update-redirect-rules-for-epub-and-pdf' into dev 2025-08-22 02:03:04 -04:00
Vijay Janapa Reddi
ab2f79180c fix(redirects): make epub and pdf redirect paths absolute
The redirects for /epub and /pdf were not working as expected. This change updates the 'to' path in the netlify.toml file to be an absolute path by adding a leading slash.

This ensures that Netlify correctly interprets the destination and resolves the redirect ambiguity, which should fix the issue where the '/downloads' part of the path was being dropped.
2025-08-22 02:00:40 -04:00
Vijay Janapa Reddi
77d0412765 fix(ci): improve reliability of python environment in build workflows
This commit addresses several issues in the GitHub Actions workflows to make the Python environment more robust and the build logs clearer.

Bare-metal workflow (quarto-build-baremetal.yml):
- Reordered installation steps to install Inkscape before setting up Python. This resolves a PATH conflict on Windows runners where Inkscape's bundled Python was taking precedence over the intended version.

Container workflow (quarto-build-container.yml):
- Removed on-the-fly installation of the Pillow library from within the container. The container image should be the single source of truth for dependencies, and this change enforces that principle.
- Fixed a PowerShell parser error by changing the python -c command to use string concatenation instead of a comma, which was confusing the parser.
- Improved debug logging by using Write-Host to format the output of version and path checks, making the logs more readable.
2025-08-22 01:46:41 -04:00
Vijay Janapa Reddi
05b29ce841 fix(deploy): copy netlify.toml to deployment package
>
> The netlify.toml file was not being included in the gh-pages branch, causing Netlify to use a stale or default configuration, which resulted in incorrect redirects for /epub and /pdf.
>
> This change ensures that the netlify.toml file from the repository root is copied into the  directory during the  workflow. This makes the correct redirect rules available to Netlify upon deployment.
>
> - Added a step in  to copy .
> - Verified that the file is copied before the deployment to gh-pages.
2025-08-22 01:24:54 -04:00
Vijay Janapa Reddi
761d1a5c28 fix(workflows): add runtime Pillow dependency checking to baremetal EPUB compression
- Add Pillow version verification and automatic installation to Linux EPUB compression
- Add Pillow version verification and automatic installation to Windows EPUB compression
- Ensure consistent dependency management between container and baremetal workflows
- Improve reliability by handling missing Pillow dependencies gracefully
- Add debug output for Python and Pillow versions for troubleshooting
2025-08-22 00:56:05 -04:00
Vijay Janapa Reddi
1d339fa985 fix(workflow): resolve PowerShell parsing error in Windows container builds
- Replace string concatenation with comma-separated print arguments
- Fixes 'You must provide a value expression following the '+' operator' error
- Affects both PDF and EPUB compression steps on Windows containers
- PowerShell was incorrectly interpreting '+' as operator in quoted strings
2025-08-22 00:33:18 -04:00
Vijay Janapa Reddi
c671dd50fc fix(docker): replace bash array syntax with sh-compatible loop
- Replace bash array syntax with simple for loop in TeX Live installer
- Fixes Docker build failure: 'Syntax error: ( unexpected'
- Maintains same mirror fallback functionality and error handling
- Compatible with Docker's default /bin/sh shell
2025-08-22 00:32:15 -04:00
Vijay Janapa Reddi
8c49150b54 fix(deploy): organize PDF and EPUB files in /assets/downloads/ directory
- Update publish-live workflow to use /assets/downloads/ for better organization
- Fix netlify.toml EPUB redirect to match new directory structure
- Update all asset links and commit messages to reflect new paths
- Provides cleaner separation between downloads and other assets
2025-08-22 00:29:22 -04:00
Vijay Janapa Reddi
4691968ba2 fix(docker): add TeX Live mirror fallbacks and retry logic
- Add multiple CTAN mirror fallbacks for TeX Live installer download
- Implement retry logic for TeX Live base system installation
- Add retry mechanism for individual TeX Live package installations
- Improve error handling and recovery for network failures
- Use timeouts and multiple attempts to handle mirror reliability issues

Resolves Docker build failures caused by unreliable TeX Live mirrors
that were preventing successful container builds.
2025-08-22 00:04:41 -04:00
Vijay Janapa Reddi
b0e24db623 feat(workflow): add Windows-specific Pillow safety net and debugging
- Add try/catch block for Pillow import with fallback installation
- Add Windows environment debugging (OS version, architecture)
- Ensures Pillow>=10.0.0 works correctly on Windows containers
- Provides detailed diagnostics for troubleshooting Windows-specific issues
- Maintains container-first approach with workflow-level safety net
2025-08-21 23:57:01 -04:00
Vijay Janapa Reddi
4da3152340 refactor(workflow): remove redundant Pillow installation
- Remove on-demand Pillow installation from Windows compression steps
- Containers now have correct Pillow>=10.0.0 built-in from requirements.txt
- Keep verification step to confirm Pillow version in debug output
- Cleaner approach: dependencies managed at container level, not workflow level
2025-08-21 23:56:00 -04:00
Vijay Janapa Reddi
3632727a0a fix(deps): update Pillow to >=10.0.0 for Resampling attribute
- Update requirements.txt from Pillow>=9.0.0 to Pillow>=10.0.0
- Update workflow on-demand Pillow installation to use >=10.0.0
- Fixes 'PIL.Image has no attribute Resampling' error in compression
- Ensures compatibility with compression scripts using modern Pillow API
2025-08-21 23:53:09 -04:00
Vijay Janapa Reddi
18f47336b4 fix(workflow): ensure Pillow is available in Windows containers
- Add explicit Pillow installation before compression steps
- Add Python environment verification and debugging
- Fix PowerShell string escaping for Python commands
- Ensures both PDF and EPUB compression work on Windows
- Resolves 'Pillow library is required' errors in Windows builds
2025-08-21 23:42:32 -04:00
Vijay Janapa Reddi
dcba8d7c08 fix(workflow): correct PDF compression script paths
- Fix relative path from quarto/_build/pdf to ../../publish/compress_pdf.py
- Update both Linux and Windows PDF compression steps
- Add debug output to verify script location
- Matches EPUB compression path fix pattern
- Resolves 'No such file or directory' errors in PDF builds
2025-08-21 23:04:31 -04:00
Vijay Janapa Reddi
6bf4e78c9b fix(workflow): correct EPUB compression script paths
- Fix relative path from quarto/_build/epub to ../../publish/compress_epub.py
- Update both Linux and Windows EPUB compression steps
- Add proper debug output to verify script location
- Resolves 'No such file or directory' errors in EPUB builds
2025-08-21 22:26:25 -04:00
Vijay Janapa Reddi
94941bb15c fix(workflow): ensure quarto-build-container uses target branch input
- Add ref parameter to checkout step to use inputs.target branch
- Add debug output showing all input parameter values
- Fixes issue where workflow ignored branch selection and always used default
- Critical for proper dev/main branch builds and testing
2025-08-21 21:51:43 -04:00
Vijay Janapa Reddi
7f238c2e64 debug: add comprehensive directory debugging for container issues
Enhanced debugging to identify why quarto/publish/ is not found:
- Check quarto/ directory structure
- Verify publish/ subdirectory exists
- Show repository root contents
- Will help identify if it's a checkout, mount, or path issue
2025-08-21 21:40:36 -04:00
Vijay Janapa Reddi
5a447f0454 Removes compression scripts
Deletes the EPUB and PDF compression scripts. These scripts are no longer needed.
2025-08-21 21:26:55 -04:00
Vijay Janapa Reddi
1a6dfdb528 refactor: move publish scripts to quarto/publish/ for better architecture
Move compression scripts from tools/scripts/publish/ to quarto/publish/:
- compress_epub.py → quarto/publish/compress_epub.py
- compress_pdf.py → quarto/publish/compress_pdf.py

Rationale:
- Publishing scripts are part of Quarto workflow, not general tooling
- quarto/ directory is mounted in containers, tools/ is not
- Cleaner separation: tools/ = environment, quarto/publish/ = content packaging
- Fixes container path issues where tools/scripts/publish/ was not available

Updated all workflow references to use new paths.
This should resolve the 'No such file or directory' errors in containers.
2025-08-21 21:25:09 -04:00
Vijay Janapa Reddi
2911369115 debug(workflows): add path debugging to diagnose compression script issue
Add debugging output to see:
- GITHUB_WORKSPACE value
- Current working directory
- Expected script path
- Directory listing of tools/scripts/publish/

This will help identify why the compression script path is not resolving correctly
despite using github.workspace variable.
2025-08-21 21:05:29 -04:00
Vijay Janapa Reddi
7ad4db4457 feat(workflows): disable concurrency in validate-dev and publish-live
Complete concurrency removal across all workflows:
- validate-dev.yml: Remove concurrency controls for parallel validation
- publish-live.yml: Remove concurrency controls for parallel publishing
- Allows unlimited simultaneous workflow execution
- No more waiting or cancellation across the entire workflow ecosystem
2025-08-21 20:49:36 -04:00
Vijay Janapa Reddi
a74c20f74f feat(workflows): completely disable concurrency controls
Remove all concurrency blocks to allow unlimited parallel builds:
- No more waiting, queuing, or cancellation
- Multiple builds can run simultaneously without interference
- Faster iteration and testing without workflow bottlenecks
- Each build runs independently to completion
2025-08-21 20:47:22 -04:00
Vijay Janapa Reddi
eb09b0b011 fix(compress): add Pillow version compatibility for container environments
Fix critical issue where compression failed on images requiring resize:
- Container uses older Pillow without Image.Resampling attribute
- Added backward compatibility: try Image.Resampling.LANCZOS, fallback to Image.LANCZOS
- This was causing only 523/867 images to compress (60% completion)
- Now all images should process correctly regardless of Pillow version

Root cause: 'module PIL.Image has no attribute Resampling' error
Result: Should achieve full 77% compression in containers
2025-08-21 20:35:40 -04:00
Vijay Janapa Reddi
c794e26baf feat(workflows): re-enable concurrency with aggressive cancellation
Re-enable concurrency controls with cancel-in-progress: true
- New builds immediately cancel any running builds
- No queuing or waiting - fresh start every time
- Prevents resource waste from outdated builds
- Ensures latest changes are always being built

This gives the best of both worlds: immediate cancellation of old builds
while starting fresh builds right away.
2025-08-21 20:30:24 -04:00
Vijay Janapa Reddi
9e9d3e7a12 feat(workflows): disable concurrency controls to allow parallel builds
Remove concurrency groups from build workflows:
- quarto-build-container.yml: Commented out concurrency controls
- quarto-build-baremetal.yml: Commented out concurrency controls

This allows multiple builds to run simultaneously instead of
canceling/queuing each other, which was causing unnecessary delays.

The publish-live workflow retains its concurrency controls to prevent
multiple production deployments from conflicting.
2025-08-21 20:29:24 -04:00
Vijay Janapa Reddi
b3367b1595 fix(workflows): correct help text to reflect actual compression defaults
Update workflow echo messages to show correct values:
- quality=50 (not 60)
- max-size=1000px (not 1200px)

The actual compression script already uses these optimized defaults,
this just fixes the informational output to match reality.
2025-08-21 20:27:39 -04:00
Vijay Janapa Reddi
41f5cf671a chore(workflows): remove unnecessary fix_casing.yml workflow
The fix_casing workflow is no longer needed and has been removed
to clean up the workflow directory.
2025-08-21 20:14:04 -04:00
Vijay Janapa Reddi
6ea5ab33d8 feat: complete robust path implementation across all GitHub workflows
Merges comprehensive workflow path improvements:
- All Python script paths now use github.workspace absolute paths
- Covers compression scripts, maintenance scripts, and contributor scripts
- Eliminates all fragile relative path calculations
- Follows GitHub Actions best practices throughout
- Makes workflows maintainable and robust against directory changes
2025-08-21 20:12:22 -04:00
Vijay Janapa Reddi
4c6bb387e8 refactor(workflows): complete robust path implementation across all workflows
Updated remaining workflows to use github.workspace absolute paths:

fix_casing.yml:
- tools/scripts/maintenance/generate_casing_fix_script.py
- → ${{ github.workspace }}/tools/scripts/maintenance/generate_casing_fix_script.py

update-contributors.yml:
- .github/workflows/contributors/update_contributors.py
- → ${{ github.workspace }}/.github/workflows/contributors/update_contributors.py

All workflows now use consistent, robust absolute paths that:
- Eliminate fragile relative path calculations
- Follow GitHub Actions best practices
- Are maintainable and explicit
- Work regardless of directory structure changes
2025-08-21 20:12:10 -04:00