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.
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>
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.
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.
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.
- 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.
- 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.
- 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=)
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
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
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
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
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
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.
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.
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.
>
> 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.
- 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
- 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
- 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
- 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.
- 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
- 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
- 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
- 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
- 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
- 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
- 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
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
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.
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.
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
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
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
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.
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.
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.
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