You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/bitmap_scan_sve2/01-introduction.md
+24-17Lines changed: 24 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
# User change
3
-
title: "Bitmap Scanning and Vectorization on Arm"
3
+
title: "Optimizing Bitmap Scanning with SVE and NEON on Arm Servers"
4
4
5
5
weight: 2
6
6
@@ -10,41 +10,48 @@ layout: "learningpathall"
10
10
11
11
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.
12
12
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:
14
14
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?
16
19
17
20
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:
18
21
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
22
25
23
26
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.
24
27
25
-
## The Evolution of Vector Processing for Bitmap Scanning
28
+
## The evolution of vector processing for bitmap scanning
26
29
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:
28
31
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
33
36
34
37
## Set up your environment
35
38
36
-
To follow this learning path, you will need:
39
+
To follow this Learning Path, you will need:
37
40
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
40
43
41
-
Let's start by setting up our environment:
44
+
First, install the required development tools:
42
45
43
46
```bash
44
47
sudo apt-get update
45
48
sudo apt-get install -y build-essential gcc g++
46
49
```
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.
0 commit comments