Who is this for?
This is an introductory topic for database developers, performance engineers, and anyone interested in optimizing data processing workloads on Arm-based cloud instances.
What will you learn?
Upon completion of this Learning Path, you will be able to:
- Understand bitmap scanning operations in database systems
- Implement bitmap scanning with scalar, Neon, and SVE instructions
- Compare performance between different implementations
- Measure performance improvements on Graviton4 instances
Prerequisites
Before starting, you will need the following:
Summary
AI-assisted
This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication.
Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.
You’ll implement and benchmark bitmap scanning for database-style workloads on Arm Neoverse V2–based servers, such as AWS Graviton4. First, you’ll build a compact bit vector in C and add baseline and improved scalar scanning routines. Then, you’ll implement Neon and SVE vectorized versions to process data in wider chunks. You’ll use a benchmarking harness that measures each approach so the relative behavior of scalar, Neon, and SVE implementations can be compared on an Arm-based Linux instance. By the end, you’ll run a single C program that exercises all variants and produces timing results suitable for side-by-side evaluation.
Frequently asked questions
AI-assisted
These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication.
Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.
Where should I place the code as I follow the steps?Use a single source file named bitvector_scan_benchmark.c. Add the bit vector type, helper functions, scalar scan routines, Neon and SVE implementations, and the benchmarking code into this file as directed.
What must the bitmap data structure contain before I can add the scan functions?The data structure must include a byte array that holds the bits, the physical size in bytes, and the logical size in bits. The same file must also add helpers to generate and analyze test bitmaps.
In what order should I implement and test the scanning approaches?Start with the per-bit scalar baseline, then the optimized scalar version, followed by the Neon implementation, and finally SVE. After each addition, run the benchmark to compare against the previous versions.
What result should I expect from the benchmarking step?The framework measures elapsed time for each scan function over a chosen number of iterations and tracks how many set-bit positions were found. Use the same input bitmap and iteration count when comparing implementations.
How can I exercise different workload characteristics when benchmarking?Use the provided bitmap generation helpers to create datasets with varying densities. Sparse and dense bitmaps highlight different behaviors across the scalar, Neon, and SVE implementations.