Skip to content

Commit 32afbc7

Browse files
adding 20 more summaries and editing to fit second person and active voice
1 parent c0e1103 commit 32afbc7

22 files changed

Lines changed: 984 additions & 27 deletions

File tree

content/learning-paths/servers-and-cloud-computing/benchmark-nlp/_index.md

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,57 @@ learning_objectives:
1414
prerequisites:
1515
- An [Arm-based instance](/learning-paths/servers-and-cloud-computing/csp/) from a cloud service provider or an on-premise Arm server.
1616

17+
# START generated_summary_faq
18+
generated_summary_faq:
19+
template_version: summary-faq-v3
20+
generated_at: '2026-06-30T21:36:51Z'
21+
generator: ai
22+
ai_assisted: true
23+
ai_review_required: true
24+
model: gpt-5
25+
prompt_template: summary-faq-v3
26+
source_hash: a4cf1d9161b3a32e29694415762eda419752e1c3144662d5e131b6553f0a58e3
27+
summary_generated_at: '2026-06-30T21:36:51Z'
28+
summary_source_hash: a4cf1d9161b3a32e29694415762eda419752e1c3144662d5e131b6553f0a58e3
29+
faq_generated_at: '2026-06-30T21:36:51Z'
30+
faq_source_hash: a4cf1d9161b3a32e29694415762eda419752e1c3144662d5e131b6553f0a58e3
31+
summary: >-
32+
You'll deploy Hugging Face Sentiment Analysis models
33+
with PyTorch on Arm servers and measure how they perform. Starting from a working Ubuntu
34+
22.04 Arm environment, you'll run three NLP models with the Sentiment Analysis
35+
pipeline, record baseline results, and then enable BFloat16 fast math kernels to assess the
36+
impact on inference performance. The workflow is validated on Arm Neoverse-based AWS Graviton3
37+
(c7g) instances and remains applicable to Arm servers meeting the stated requirements. By
38+
the end, you'll compare before-and-after measurements to confirm the effect of BFloat16
39+
on this workload.
40+
faqs:
41+
- question: Which environment do the instructions assume?
42+
answer: >-
43+
The instructions target an Arm server running Ubuntu 22.04 LTS. They've been tested on
44+
AWS Graviton3 (c7g) instances.
45+
- question: What system resources should I provision before running the steps?
46+
answer: >-
47+
Use an Arm server instance with at least four CPU cores and 8GB of RAM. This capacity supports
48+
running the three sentiment analysis models and collecting measurements.
49+
- question: Which framework and model source are used in this path?
50+
answer: >-
51+
The path uses PyTorch to run Natural Language Processing models sourced from Hugging Face.
52+
The examples use the Sentiment Analysis pipeline.
53+
- question: How should I measure the performance uplift from BFloat16 fast math kernels?
54+
answer: >-
55+
First, run the models to collect a baseline using the same Sentiment Analysis pipeline.
56+
Then enable BFloat16 fast math kernels on supported Arm Neoverse-based AWS Graviton3 processors,
57+
rerun the same workload, and compare measurements.
58+
- question: Which models are evaluated and what should I have at the end?
59+
answer: >-
60+
The path evaluates three NLP models with the Sentiment Analysis pipeline. By the end, you
61+
should have deployed the models on your Arm server and recorded baseline and BFloat16-enabled
62+
performance results for comparison.
63+
# END generated_summary_faq
64+
1765
author: Pareena Verma
1866

19-
generate_summary_faq: true
67+
generate_summary_faq: false
2068
rerun_summary: false
2169
rerun_faqs: false
2270

content/learning-paths/servers-and-cloud-computing/bitmap_scan_sve2/_index.md

Lines changed: 50 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,59 @@ learning_objectives:
1313
- Measure performance improvements on Graviton4 instances
1414

1515
prerequisites:
16-
- An [Arm based instance](/learning-paths/servers-and-cloud-computing/csp/) from an appropriate
17-
cloud service provider.
16+
- An [Arm-based instance](/learning-paths/servers-and-cloud-computing/csp/) from an appropriate cloud service provider.
17+
18+
# START generated_summary_faq
19+
generated_summary_faq:
20+
template_version: summary-faq-v3
21+
generated_at: '2026-06-30T21:37:19Z'
22+
generator: ai
23+
ai_assisted: true
24+
ai_review_required: true
25+
model: gpt-5
26+
prompt_template: summary-faq-v3
27+
source_hash: 1701b37580fe5d012a5e6fd322307742656a748dfb766fd48914011167386e95
28+
summary_generated_at: '2026-06-30T21:37:19Z'
29+
summary_source_hash: 1701b37580fe5d012a5e6fd322307742656a748dfb766fd48914011167386e95
30+
faq_generated_at: '2026-06-30T21:37:19Z'
31+
faq_source_hash: 1701b37580fe5d012a5e6fd322307742656a748dfb766fd48914011167386e95
32+
summary: >-
33+
You'll implement and benchmark bitmap scanning for database-style
34+
workloads on Arm Neoverse V2–based servers, such as AWS Graviton4. First, you'll build a compact
35+
bit vector in C and add baseline and improved scalar scanning routines. Then, you'll implement Neon
36+
and SVE vectorized versions to process data in wider chunks. You'll use a benchmarking harness
37+
that measures each approach so the relative behavior of scalar, Neon, and SVE implementations can
38+
be compared on an Arm-based Linux instance. By the end, you'll run a single C program
39+
that exercises all variants and produces timing results suitable for side-by-side evaluation.
40+
faqs:
41+
- question: Where should I place the code as I follow the steps?
42+
answer: >-
43+
Use a single source file named bitvector_scan_benchmark.c. Add the bit vector type, helper
44+
functions, scalar scan routines, Neon and SVE implementations, and the benchmarking code
45+
into this file as directed.
46+
- question: What must the bitmap data structure contain before I add the scan functions?
47+
answer: >-
48+
It includes a byte array that holds the bits, the physical size in bytes, and the logical
49+
size in bits. The same file also adds helpers to generate and analyze test bitmaps.
50+
- question: In what order should I implement and test the scanning approaches?
51+
answer: >-
52+
Start with the per-bit scalar baseline, then the optimized scalar version, followed by the
53+
Neon implementation, and finally SVE. After each addition, run the benchmark to compare
54+
against the previous versions.
55+
- question: What result should I expect from the benchmarking step?
56+
answer: >-
57+
The framework measures elapsed time for each scan function over a chosen number of iterations
58+
and tracks how many set-bit positions were found. Use the same input bitmap and iteration
59+
count when comparing implementations.
60+
- question: How can I exercise different workload characteristics when benchmarking?
61+
answer: >-
62+
Use the provided bitmap generation helpers to create datasets with varying densities. Sparse
63+
and dense bitmaps highlight different behaviors across the scalar, Neon, and SVE implementations.
64+
# END generated_summary_faq
1865

1966
author: Pareena Verma
2067

21-
generate_summary_faq: true
68+
generate_summary_faq: false
2269
rerun_summary: false
2370
rerun_faqs: false
2471

content/learning-paths/servers-and-cloud-computing/bolt-demo/_index.md

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,59 @@ prerequisites:
2020
- GCC version 13.3 or later to compile the example program ([GCC](/install-guides/gcc/) )
2121
- A system with with sufficient hardware performance counters to use the [TopDown](/install-guides/topdown-tool) methodology. This typically requires running on bare metal rather than a virtualized environment.
2222

23+
# START generated_summary_faq
24+
generated_summary_faq:
25+
template_version: summary-faq-v3
26+
generated_at: '2026-06-30T21:37:54Z'
27+
generator: ai
28+
ai_assisted: true
29+
ai_review_required: true
30+
model: gpt-5
31+
prompt_template: summary-faq-v3
32+
source_hash: 8654b656131bf1d529e11d85f874f7a81c01f7207340d2a606b6fd2d80bfad04
33+
summary_generated_at: '2026-06-30T21:37:54Z'
34+
summary_source_hash: 8654b656131bf1d529e11d85f874f7a81c01f7207340d2a606b6fd2d80bfad04
35+
faq_generated_at: '2026-06-30T21:37:54Z'
36+
faq_source_hash: 8654b656131bf1d529e11d85f874f7a81c01f7207340d2a606b6fd2d80bfad04
37+
summary: >-
38+
You'll apply LLVM BOLT post-link optimization to AArch64 binaries
39+
using profile-guided code layout. Starting with a deliberately inefficient BubbleSort workload
40+
to make instruction locality issues visible, you'll install a suitable BOLT
41+
release, set up a working directory, and gather profiles with BRBE, SPE, instrumentation,
42+
or PMU sampling. Using a small set of Arm TopDown indicators, you'll judge
43+
whether a program is front-end bound and a good candidate for BOLT. You'll then run BOLT with
44+
collected profiles to reorganize code layout and then evaluate the impact using performance
45+
metrics and profiling data to confirm improvements in instruction delivery and locality.
46+
faqs:
47+
- question: Which BOLT version should I use if my package manager installs an older release?
48+
answer: >-
49+
Use LLVM BOLT 22.1.0 or later. If your distribution provides an older version, install a
50+
prebuilt LLVM release instead (for example, LLVM 22.1.5) to match the required features.
51+
- question: Where do the example’s build and profiling outputs go?
52+
answer: >-
53+
The path organizes outputs into three directories: out for binaries, prof for profile data,
54+
and heatmap for visualization artifacts. Keeping these separate makes it easier to rerun
55+
steps and compare results.
56+
- question: How do I know if my program is a good candidate for BOLT?
57+
answer: >-
58+
Check a small set of Arm TopDown indicators related to instruction delivery and code locality.
59+
Programs that appear front-end bound, with inefficient instruction fetch and poor locality,
60+
are strong candidates for code layout optimization with BOLT.
61+
- question: What should I use if my kernel does not meet the BRBE or SPE requirements?
62+
answer: >-
63+
If your kernel is older than the BRBE requirement, use SPE if the kernel meets the SPE version
64+
requirement. If neither is available, the path also covers using instrumentation or PMU
65+
event sampling to collect profiles.
66+
- question: What result should I expect after running BOLT with profiles?
67+
answer: >-
68+
You should be able to evaluate changes using performance metrics and profiling data. Look
69+
for improvements in instruction delivery indicators and evidence of better code locality
70+
in the optimized binary.
71+
# END generated_summary_faq
72+
2373
author: Paschalis Mpeis
2474

25-
generate_summary_faq: true
75+
generate_summary_faq: false
2676
rerun_summary: false
2777
rerun_faqs: false
2878

content/learning-paths/servers-and-cloud-computing/bolt-merge/_index.md

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,59 @@ learning_objectives:
1616
prerequisites:
1717
- An Arm-based Linux system with [BOLT](/install-guides/bolt/) and [Linux Perf](/install-guides/perf/) installed
1818

19+
# START generated_summary_faq
20+
generated_summary_faq:
21+
template_version: summary-faq-v3
22+
generated_at: '2026-06-30T21:38:23Z'
23+
generator: ai
24+
ai_assisted: true
25+
ai_review_required: true
26+
model: gpt-5
27+
prompt_template: summary-faq-v3
28+
source_hash: 84a8b96fe7df302e0a2a6e4645bbb6170b45a3e0b55e0ea3682ec47663d34819
29+
summary_generated_at: '2026-06-30T21:38:23Z'
30+
summary_source_hash: 84a8b96fe7df302e0a2a6e4645bbb6170b45a3e0b55e0ea3682ec47663d34819
31+
faq_generated_at: '2026-06-30T21:38:23Z'
32+
faq_source_hash: 84a8b96fe7df302e0a2a6e4645bbb6170b45a3e0b55e0ea3682ec47663d34819
33+
summary: >-
34+
You'll use BOLT with Linux Perf profiles to optimize an Arm application
35+
and its shared libraries. First, you'll instrument a MySQL server build to generate workload-specific
36+
profiles, create separate traces for read- and write-heavy runs, and merge them to broaden
37+
code layout guidance. Then, you'll rebuild OpenSSL to make libssl.so and
38+
libcrypto.so suitable for BOLT, collect profiles, and apply optimizations independently
39+
from the main binary. Finally, you'll compare results across baseline, isolated, and merged
40+
scenarios using a consistent Sysbench configuration to assess the
41+
impact of application and library-level optimizations on throughput and latency.
42+
faqs:
43+
- question: What output should I expect after running an instrumented workload with BOLT?
44+
answer: >-
45+
BOLT produces a profile file in .fdata format, such as profile-writeonly.fdata. These files
46+
are later used to optimize the binary and can be merged to improve coverage.
47+
- question: Should I reuse the BOLT-instrumented mysqld binary for additional workloads or create
48+
a new one?
49+
answer: >-
50+
Either approach works. The steps allow reusing the previously instrumented binary or generating
51+
a new instrumented variant as long as you produce a new .fdata profile for each workload.
52+
- question: Which shared libraries are targeted for optimization, and what if the system copies
53+
are stripped?
54+
answer: >-
55+
The path optimizes libssl.so and libcrypto.so. If system libraries are stripped, rebuild
56+
OpenSSL from source with relocations enabled so BOLT can instrument and optimize them.
57+
- question: Do I need to rebuild the application to benefit from optimized shared libraries?
58+
answer: >-
59+
The shared libraries are optimized independently of the application binary. The path focuses
60+
on rebuilding OpenSSL for symbol information and then integrating the optimized libraries
61+
with the application.
62+
- question: What test configuration is used to compare baseline and BOLT-optimized results?
63+
answer: >-
64+
Sysbench is run with --time=0 --events=10000 to complete exactly 10,000 requests per thread.
65+
Use this consistent configuration to compare baseline, application-only, and merged-with-library
66+
optimization scenarios.
67+
# END generated_summary_faq
68+
1969
author: Gayathri Narayana Yegna Narayanan
2070

21-
generate_summary_faq: true
71+
generate_summary_faq: false
2272
rerun_summary: false
2373
rerun_faqs: false
2474

content/learning-paths/servers-and-cloud-computing/bolt/_index.md

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,56 @@ prerequisites:
1515
- An Arm based system running Linux with [BOLT](/install-guides/bolt/) and [Linux Perf](/install-guides/perf/) installed. The Linux kernel should be version 5.15 or later. Earlier kernel versions can be used, but some Linux Perf features may be limited or not available. For [SPE](./bolt-spe) the version should be 6.14 or later.
1616
- (Optional) A second, more powerful Linux system to build the software executable and run BOLT.
1717

18+
# START generated_summary_faq
19+
generated_summary_faq:
20+
template_version: summary-faq-v3
21+
generated_at: '2026-06-30T21:38:54Z'
22+
generator: ai
23+
ai_assisted: true
24+
ai_review_required: true
25+
model: gpt-5
26+
prompt_template: summary-faq-v3
27+
source_hash: 2e9ac8a3c73b7d3d59fe6ba20fb6d61fc2b7e5e9320aaadc20af0a8bbb3ff959
28+
summary_generated_at: '2026-06-30T21:38:54Z'
29+
summary_source_hash: 2e9ac8a3c73b7d3d59fe6ba20fb6d61fc2b7e5e9320aaadc20af0a8bbb3ff959
30+
faq_generated_at: '2026-06-30T21:38:54Z'
31+
faq_source_hash: 2e9ac8a3c73b7d3d59fe6ba20fb6d61fc2b7e5e9320aaadc20af0a8bbb3ff959
32+
summary: >-
33+
You'll use BOLT to post-link optimize an Arm Linux executable
34+
based on real execution profiles. First, you'll prepare a target system for profiling and optionally
35+
a separate build/BOLT system, then choose a profiling method—Perf samples, ETM, or SPE—to
36+
collect runtime behavior into a perf.data file. You'll convert the profile for BOLT, and run BOLT to reorder code layout and emit a new optimized executable. By the end, you'll make an informed choice about how to collect profiles, produce the expected artifacts,
37+
and run the optimization steps in sequence so the resulting binary can be compared against
38+
the original to observe improvements.
39+
faqs:
40+
- question: How should I choose between Perf samples, ETM, and SPE for profiling?
41+
answer: >-
42+
Use the dedicated sections for each method. Perf samples provide general sampling data,
43+
while ETM and SPE record richer branch information. Follow the method that best fits your
44+
availability and profiling detail needs.
45+
- question: Can I profile on one Arm Linux system and run BOLT on another?
46+
answer: >-
47+
Yes. The target system runs the application and collects the profile, and a separate Linux
48+
system can build the application and run BOLT. Transfer the executable and the collected
49+
profile files between systems as needed.
50+
- question: What file should exist after recording with Perf before converting for BOLT?
51+
answer: >-
52+
Expect a perf.data file. Perf prints sample counts or data size when recording completes,
53+
which indicates that profiling output was captured and is ready for conversion.
54+
- question: What version of Perf do I need for the SPE workflow?
55+
answer: >-
56+
Use Linux Perf version 6.14 or later for SPE to capture the required branch stack information.
57+
Verify the version before recording so the profile contains all needed fields.
58+
- question: How do I check results after BOLT creates the optimized executable?
59+
answer: >-
60+
Run the same workload with the original and the optimized executables and compare outcomes.
61+
The optimized executable should show improved performance relative to the original after
62+
the steps are completed.
63+
# END generated_summary_faq
64+
1865
author: Jonathan Davies
1966

20-
generate_summary_faq: true
67+
generate_summary_faq: false
2168
rerun_summary: false
2269
rerun_faqs: false
2370

content/learning-paths/servers-and-cloud-computing/buildkite-gcp/_index.md

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,58 @@ prerequisites:
1919
- Familiarity with [Docker](https://docs.docker.com/get-started/) and container concepts
2020
- A [GitHub account](https://github.com/join) to host your application repository
2121

22+
# START generated_summary_faq
23+
generated_summary_faq:
24+
template_version: summary-faq-v3
25+
generated_at: '2026-06-30T21:39:35Z'
26+
generator: ai
27+
ai_assisted: true
28+
ai_review_required: true
29+
model: gpt-5
30+
prompt_template: summary-faq-v3
31+
source_hash: 4bda206717eef380430009f859826d9bcf820442d13492cd3c22a114561e2917
32+
summary_generated_at: '2026-06-30T21:39:35Z'
33+
summary_source_hash: 4bda206717eef380430009f859826d9bcf820442d13492cd3c22a114561e2917
34+
faq_generated_at: '2026-06-30T21:39:35Z'
35+
faq_source_hash: 4bda206717eef380430009f859826d9bcf820442d13492cd3c22a114561e2917
36+
summary: >-
37+
You'll provision an Arm-based Google Cloud C4A virtual machine powered by Google
38+
Axion, install Docker, Docker Buildx, and the Buildkite agent, and connect the agent to a
39+
Buildkite queue. First, you'll create a small Flask application and Dockerfile in a GitHub repository,
40+
then configure a Buildkite pipeline that uses Buildx to build a multi-architecture container
41+
image for Arm and x86 and push it to Docker Hub. You'll use Ubuntu or SUSE on the VM
42+
and validate that the agent is online. By the end, you'll have a published
43+
image and a running Flask service to confirm the build.
44+
faqs:
45+
- question: Which Google Cloud instance type and OS should I use for the VM?
46+
answer: >-
47+
The steps use a Google Axion C4A Arm VM, specifically `c4a-standard-4` with 4 vCPUs and 16
48+
GB memory. You can select either Ubuntu or SUSE Linux Enterprise Server as shown in the
49+
installation instructions.
50+
- question: Where do I create the Buildkite agent token, and when do I use it?
51+
answer: >-
52+
Create an agent token in your Buildkite organization after signing in (GitHub sign-in is
53+
supported). You use this token during the agent installation and configuration on the C4A
54+
VM.
55+
- question: How do I confirm the Buildkite agent is connected and assigned to the right queue?
56+
answer: >-
57+
After configuring the agent and queue, check the Agents page in Buildkite; the agent should
58+
appear online with the expected queue. If it does not, check the agent configuration and
59+
queue name, then repeat the verification step.
60+
- question: What files should my GitHub repository contain for the example application?
61+
answer: >-
62+
Add a Dockerfile and a Python file named app.py. The provided Dockerfile uses `python:3.12-slim`,
63+
installs Flask, exposes port 5000, and runs the app.
64+
- question: What result should I expect after the pipeline runs successfully?
65+
answer: >-
66+
A multi-architecture Docker image for Arm and x86 is built with Docker Buildx and pushed
67+
to Docker Hub. You then start the containerized Flask application and verify that it runs
68+
as the final validation step.
69+
# END generated_summary_faq
70+
2271
author: Jason Andrews
2372

24-
generate_summary_faq: true
73+
generate_summary_faq: false
2574
rerun_summary: false
2675
rerun_faqs: false
2776

0 commit comments

Comments
 (0)