Skip to content

Commit 0abbbb6

Browse files
Updates
1 parent f0d80a5 commit 0abbbb6

1 file changed

Lines changed: 24 additions & 17 deletions

File tree

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

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
# User change
3-
title: "Bitmap Scanning and Vectorization on Arm"
3+
title: "Optimizing Bitmap Scanning with SVE and NEON on Arm Servers"
44

55
weight: 2
66

@@ -10,41 +10,48 @@ layout: "learningpathall"
1010

1111
Bitmap scanning is a fundamental operation in database systems, particularly for analytical workloads. It's used in bitmap indexes, bloom filters, and column filtering operations. The performance of bitmap scanning can significantly affect query execution times, especially for large datasets.
1212

13-
In this Learning Path, you will explore how to use SVE instructions available on Arm Neoverse V2 based servers like AWS Graviton4 to optimize bitmap scanning operations. You will compare the performance of scalar, NEON, and SVE implementations to demonstrate the significant performance benefits of using specialized vector instructions.
13+
In this Learning Path, you will:
1414

15-
## What is Bitmap Scanning?
15+
* Explore how to use SVE instructions on Arm Neoverse V2–based servers like AWS Graviton4 to optimize bitmap scanning
16+
* Compare scalar, NEON, and SVE implementations to demonstrate the performance benefits of specialized vector instructions
17+
18+
## What is bitmap scanning?
1619

1720
Bitmap scanning involves searching through a bit vector to find positions where bits are set (1) or unset (0). In database systems, bitmaps are commonly used to represent:
1821

19-
1. **Bitmap Indexes**: Each bit represents whether a row satisfies a particular condition
20-
2. **Bloom Filters**: Probabilistic data structures used to test set membership
21-
3. **Column Filters**: Bit vectors indicating which rows match certain predicates
22+
* **Bitmap Indexes**: each bit represents whether a row satisfies a particular condition
23+
* **Bloom Filters**: probabilistic data structures used to test set membership
24+
* **Column Filters**: bit vectors indicating which rows match certain predicates
2225

2326
The operation of scanning a bitmap to find set bits is often in the critical path of query execution, making it a prime candidate for optimization.
2427

25-
## The Evolution of Vector Processing for Bitmap Scanning
28+
## The evolution of vector processing for bitmap scanning
2629

27-
Let's look at how vector processing has evolved for bitmap scanning:
30+
Here's how vector processing has evolved to improve bitmap scanning performance:
2831

29-
1. **Generic Scalar Processing**: Traditional bit-by-bit processing with conditional branches
30-
2. **Optimized Scalar Processing**: Byte-level skipping to avoid processing empty bytes
31-
3. **NEON**: Fixed-length 128-bit SIMD processing with vector operations
32-
4. **SVE**: Scalable vector processing with predication and specialized instructions
32+
* **Generic Scalar Processing**: traditional bit-by-bit processing with conditional branches
33+
* **Optimized Scalar Processing**: byte-level skipping to avoid processing empty bytes
34+
* **NEON**: fixed-length 128-bit SIMD processing with vector operations
35+
* **SVE**: scalable vector processing with predication and specialized instructions like MATCH
3336

3437
## Set up your environment
3538

36-
To follow this learning path, you will need:
39+
To follow this Learning Path, you will need:
3740

38-
1. An AWS Graviton4 instance running `Ubuntu 24.04`.
39-
2. GCC compiler with SVE support
41+
* An AWS Graviton4 instance running `Ubuntu 24.04`.
42+
* A GCC compiler with SVE support
4043

41-
Let's start by setting up our environment:
44+
First, install the required development tools:
4245

4346
```bash
4447
sudo apt-get update
4548
sudo apt-get install -y build-essential gcc g++
4649
```
47-
An effective way to achieve optimal performance on Arm is not only through optimal flag usage, but also by using the most recent compiler version. This Learning path was tested with GCC 13 which is the default version on `Ubuntu 24.04` but you can run it with newer versions of GCC as well.
50+
{{% notice Tip %}}
51+
An effective way to achieve optimal performance on Arm is not only through optimal flag usage, but also by using the most recent compiler version. For best performance, use the latest available GCC version with SVE support. This Learning Path was tested with GCC 13, the default on Ubuntu 24.04. Newer versions should also work.
52+
{{% /notice %}}
53+
54+
4855

4956
Create a directory for your implementations:
5057
```bash

0 commit comments

Comments
 (0)