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/cross-platform/simd-info-demo/_index.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,30 +1,30 @@
1
1
---
2
2
title: Introduction to SIMD.info
3
3
4
-
draft: true
4
+
5
5
cascade:
6
-
draft: true
6
+
7
7
8
8
minutes_to_complete: 30
9
9
10
-
who_is_this_for: This is for advanced topic for software developers interested in porting SIMD code across Arm platforms.
10
+
who_is_this_for: This Learning Path is for software developers who are interested in porting SIMD code across Arm platforms.
11
11
12
12
learning_objectives:
13
-
- Learn how to use SIMD.info’s tools and features, such as navigation, search, and comparison, to simplify the process of finding equivalent SIMD intrinsics between architectures and improving code portability.
13
+
- Describe how to use SIMD.info’s tools and features, such as navigation, search, and comparison, to simplify the process of finding equivalent SIMD intrinsics between architectures to improve code portability.
14
14
15
15
prerequisites:
16
16
- A basic understanding of SIMD.
17
-
- Access to an Arm platform with SIMD supported engine, with recent versions of a C compiler (Clang or GCC) installed.
17
+
- Access to an Arm platform with a SIMD-supported engine, installed with recent versions of a C compiler such as Clang or GCC.
Copy file name to clipboardExpand all lines: content/learning-paths/cross-platform/simd-info-demo/_review.md
+12-12Lines changed: 12 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,34 +4,34 @@ review:
4
4
question: >
5
5
What is SIMD.info?
6
6
answers:
7
-
- An online resource for SIMD C intrinsics for all major architectures
8
-
- It's an online forum for SIMD developers
9
-
- A book about SIMD programming
7
+
- It's an online resource for SIMD C intrinsics for all major architectures.
8
+
- It's an online forum for SIMD developers.
9
+
- It's a book about SIMD programming.
10
10
correct_answer: 1
11
11
explanation: >
12
-
While it allows comments in the SIMD intrinsics, SIMD.info is not really a forum. It is an online **free** resource to assist developers porting C code between popular architectures, for example, from SSE/AVX/AVX512 to Arm ASIMD.
12
+
While it allows comments in the SIMD intrinsics, SIMD.info is not a forum. It is an online free resource to assist developers porting C code between popular architectures, for example, from SSE/AVX/AVX512 to Arm ASIMD.
13
13
14
14
- questions:
15
15
question: >
16
16
What architectures are listed in SIMD.info?
17
17
answers:
18
-
- Intel SSE and Arm ASIMD
19
-
- Power VSX and Arm ASIMD/SVE
20
-
- Intel SSE4.2/AVX/AVX2/AVX512, Arm ASIMD, Power VSX
18
+
- Intel SSE and Arm ASIMD.
19
+
- Power VSX and Arm ASIMD/SVE.
20
+
- Intel SSE4.2/AVX/AVX2/AVX512, Arm ASIMD, Power VSX.
21
21
correct_answer: 3
22
22
explanation: >
23
-
At the time of writing SIMD.info supports Intel SSE4.2/AVX/AVX2/AVX512, Arm ASIMD, Power VSX as SIMD architectures. Work is in progress to include Arm SVE/SVE2, MIPS MSA, RISC-V RVV 1.0, s390 Z and others.
23
+
SIMD.info supports Intel SSE4.2/AVX/AVX2/AVX512, Arm ASIMD, Power VSX as SIMD architectures. Work is in progress to include Arm SVE/SVE2, MIPS MSA, RISC-V RVV 1.0, s390 Z and others.
24
24
25
25
- questions:
26
26
question: >
27
27
What are SIMD.info's major features?
28
28
answers:
29
-
- Hierarchical tree, Search, AI code translation
30
-
- Search, Hierarchical tree, Code examples
31
-
- Hierarchical tree, Search, Intrinsics Comparison, Code examples, Equivalents mapping, links to official documentation
29
+
- Hierarchical tree, search, and AI code translation.
30
+
- Search, hierarchical tree, and code examples.
31
+
- Hierarchical tree, search, intrinsics comparison, code examples, equivalents mapping, and links to official documentation.
32
32
correct_answer: 3
33
33
explanation: >
34
-
SIMD.info provides multiple features, including a hierarchical tree, Search facility, Intrinsics Comparison, Code examples, Equivalents mapping, links to official documentation and others. AI code translation is not a feature of SIMD.info but will be the focus of another project, SIMD.ai.
34
+
SIMD.info provides multiple features, including a hierarchical tree, search facility, intrinsics comparison, code examples, equivalents mapping, links to official documentation, and others. AI code translation is not a feature of SIMD.info but is the focus of another project, SIMD.ai.
Copy file name to clipboardExpand all lines: content/learning-paths/cross-platform/simd-info-demo/conclusion.md
+9-5Lines changed: 9 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,12 +6,16 @@ weight: 8
6
6
layout: learningpathall
7
7
---
8
8
9
-
### Conclusion and Additional Resources
9
+
### Conclusion and further reading
10
10
11
-
Porting SIMD code between architecture can be a daunting process, in many cases requiring many hours of studying multiple ISAs in online resources or ISA manuals of thousands pages. Our primary focus in this work was to optimize the existing algorithm directly with SIMD intrinsics, without altering the algorithm or data layout. While reordering data to align with native Arm instructions could offer performance benefits, our scope remained within the constraints of the current data layout and algorithm. For those interested in data layout strategies to further enhance performance on Arm, the [vectorization-friendly data layout learning path](https://learn.arm.com/learning-paths/cross-platform/vectorization-friendly-data-layout/) offers valuable insights.
11
+
Porting SIMD code between architectures can be a daunting process, often requiring many hours of studying multiple ISAs in online resources or ISA manuals that run into thousands of pages.
12
12
13
-
Using **[SIMD.info](https://simd.info)** can be be instrumental in reducing the amount of time spent in this process, providing a centralized and user-friendly resource for finding **NEON** equivalents to intrinsics of other architectures. It saves considerable time and effort by offering detailed descriptions, prototypes, and comparisons directly, eliminating the need for extensive web searches and manual lookups.
13
+
The primary focus of this Learning Path is to optimize the existing algorithm directly with SIMD intrinsics, without altering the algorithm or data layout. While reordering data to align with native Arm instructions can offer performance benefits, this is outside the scope of this Learning Path.
14
14
15
-
While porting between vectors of different sizes is more complex, work is underway -at the time of writing this guide- to complete integration of **SVE**/**SVE2** Arm extensions and allow matching them with **AVX512**intrinsics, as they are both using predicate masks.
15
+
If you are interested in data layout strategies to further enhance performance on Arm, see the Learning Path *Optimize SIMD code with vectorization-friendly data layout* linked to in the **Next Steps**section at the of this Learning Path.
16
16
17
-
Please check **[SIMD.info](https://simd.info)** regularly for updates on this.
17
+
Using SIMD.info can be instrumental in reducing the amount of time spent in this process, providing a centralized and user-friendly resource for finding NEON equivalents to intrinsics of other architectures. It saves considerable time and effort by offering detailed descriptions, prototypes, and comparisons directly, eliminating the need for extensive web searches and manual lookups.
18
+
19
+
While porting between vectors of different sizes is more complex, work is underway to complete the integration of SVE and SVE2 Arm extensions and allow matching them with AVX512 intrinsics, as they both use predicate masks.
20
+
21
+
You can check **[SIMD.info](https://simd.info)** for updates.
Copy file name to clipboardExpand all lines: content/learning-paths/cross-platform/simd-info-demo/intro-to-simdinfo.md
+6-4Lines changed: 6 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,10 +7,12 @@ layout: learningpathall
7
7
---
8
8
9
9
### The Challenge of SIMD Code Portability
10
-
One of the biggest challenges developers face when working with SIMD code is making it portable across different platforms. SIMD instructions are designed to increase performance by executing the same operation on multiple data elements in parallel. However, each architecture has its own set of SIMD instructions, making it difficult to write code that works on all of them without major changes to the code and/or algorithm.
10
+
SIMD instructions are designed to improve performance by executing the same operation on multiple data elements in parallel. One of the biggest challenges developers face when working with SIMD code is making it portable across different platforms.
11
11
12
-
To port software written using Intel intrinsics, like SSE/AVX/AVX512, to Arm Neon, you have pay attention to data handling with the different instruction sets.
12
+
Each architecture has its own set of SIMD instructions, which makes it difficult to port code without major changes to either the code itself, or the algorithm, or both.
13
13
14
-
Having to port the code between architectures can increase development time and introduce the risk of errors during the porting process. Currently, developers rely on ISA documentation and manually search across various vendor platforms like [Arm Developer](https://developer.arm.com/architectures/instruction-sets/intrinsics/) and [Intel Intrinsics Guide](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html) to find equivalent instructions.
14
+
For example, to port software written using Intel intrinsics, such as SSE/AVX/AVX512, to Arm Neon, you must address issues with data handling with the different instruction sets.
15
15
16
-
[SIMD.info](https://simd.info) aims to solve this by helping you find equivalent instructions and providing a more streamlined way to adapt your code for different architectures.
16
+
Porting the code between architectures can increase development time and introduce the risk of errors. Currently, developers rely on ISA documentation and must manually search across various vendor platforms such as [Arm Developer](https://developer.arm.com/architectures/instruction-sets/intrinsics/) and [Intel Intrinsics Guide](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html) to find equivalent instructions.
17
+
18
+
[SIMD.info](https://simd.info) aims to address this challenge by enabling developers to find equivalent instructions and providing a streamlined way to adapt code for different architectures.
Copy file name to clipboardExpand all lines: content/learning-paths/cross-platform/simd-info-demo/simdinfo-description.md
+52-37Lines changed: 52 additions & 37 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,48 +6,63 @@ weight: 3
6
6
layout: learningpathall
7
7
---
8
8
9
-
### Comprehensive SIMD.info Capabilities
10
-
**[SIMD.info](https://simd.info/)** offers a variety of powerful tools to help developers work more efficiently with SIMD code across different architectures. With a database of over 10,000 intrinsics, it provides detailed information to support effective SIMD development.
11
-
12
-
For each intrinsic, SIMD.info provides comprehensive details, including:
13
-
14
-
1.**Purpose**: A brief description of what the intrinsic does and its primary use case.
15
-
2.**Result**: Explanation of the output or result of the intrinsic.
16
-
3.**Example**: A code snippet demonstrating how to use the intrinsic.
17
-
4.**Prototypes**: Function prototypes for different programming languages (currently C/C++).
18
-
5.**Assembly Instruction**: The corresponding assembly instruction used by the intrinsic.
19
-
6.**Notes**: Any additional notes or caveats about the intrinsic.
20
-
7.**Architecture**: List of architectures that support the intrinsic
21
-
8.**Link(s) to Official Documentation**
22
-
23
-
This detailed information ensures you have all the necessary resources to effectively use and port SIMD instructions across different platforms. Each feature is designed to simplify navigation, improve the search for equivalent instructions, and foster a collaborative environment for knowledge-sharing.
24
-
25
-
-**Tree-based navigation:****SIMD.info** uses a clear, hierarchical layout to organize instructions. It categorizes instructions into broad groups like **Arithmetic**, which are further divided into specific subcategories such as **Vector Add** and **Vector Subtract**. This organized structure makes it straightforward to browse through SIMD instruction sets across various platforms, allowing you to efficiently find and access the exact instructions you need.
26
-
An example of how the tree structure looks like:
27
-
28
-
29
-
- **Arithmetic**
30
-
- **Arithmetic (Complex Numbers)**
31
-
- **Boolean Logic & Bit Manipulation**
32
-
- **Boolean AND**
33
-
- **Boolean AND NOT**
34
-
- **Boolean AND NOT 128-bit vector**
35
-
- **Boolean AND NOT 16-bit signed integers**
36
-
- **Boolean AND NOT 16-bit unsigned integers**
37
-
- **Boolean AND NOT 256-bit vector**
38
-
- **Boolean AND NOT 32-bit floats**
39
-
- **Boolean AND NOT 32-bit signed integers**
9
+
#### SIMD.info categories of information
10
+
**[SIMD.info](https://simd.info/)** offers a variety of powerful tools to enable developers to work more efficiently with SIMD code across different architectures.
11
+
12
+
With a database of over 10,000 intrinsics, it provides valuable detailed information to support effective SIMD development.
13
+
14
+
For each intrinsic, SIMD.info provides information in the following categories:
15
+
16
+
***Purpose**: a brief description of what the intrinsic does and the primary use case.
17
+
18
+
***Result**: an explanation of the output or result of the intrinsic.
19
+
20
+
***Example**: a code snippet demonstrating how to use the intrinsic.
21
+
22
+
***Prototypes**: function prototypes for different programming languages (currently C/C++).
23
+
24
+
***Assembly Instruction**: the corresponding assembly instruction that the intrinsic uses.
25
+
26
+
***Notes**: any further information about the intrinsic, such as caveats.
27
+
28
+
***Architecture**: a list of architecture that supports the intrinsic.
29
+
30
+
***Links to official documentation**.
31
+
32
+
This information ensures that you have all the necessary resources to effectively use and port SIMD instructions across different platforms. Each feature is designed to simplify navigation, improve the search for equivalent instructions, and foster a collaborative environment for knowledge-sharing.
33
+
34
+
#### Tree-based navigation
35
+
SIMD.info uses a clear, hierarchical layout to present the instructions. It categorizes instructions into high-level groups such as **Arithmetic**, which are then further divided into specific subcategories such as **Vector Add**, and **Vector Subtract**.
36
+
37
+
This organized structure enables you to browse through SIMD instruction sets across various platforms, allowing you to efficiently find and access the instructions that you need. Below is an example of the tree structure:
38
+
39
+
- Arithmetic
40
+
- Arithmetic (Complex Numbers)
41
+
- Boolean Logic & Bit Manipulation
42
+
- Boolean AND
43
+
- Boolean AND NOT
44
+
- Boolean AND NOT 128-bit vector
45
+
- Boolean AND NOT 16-bit signed integers
46
+
- Boolean AND NOT 16-bit unsigned integers
47
+
- Boolean AND NOT 256-bit vector
48
+
- Boolean AND NOT 32-bit float
49
+
- Boolean AND NOT 32-bit signed integers
40
50
- AVX512: mm512_andnot_epi32
41
51
- NEON: vbic_s32
42
52
- NEON: vbicq_s32
43
53
- VSX: vec_andc
44
-
- **Bit Clear**
45
-
- **XOR**
54
+
- Bit Clear
55
+
- XOR
56
+
57
+
#### Advanced search functionality
58
+
With its robust search engine, SIMD.info allows you to either search for a specific intrinsic, for example `vaddq_f64`, or enter more general terms, for example "How to add 2 vectors," and it returns a list of the corresponding intrinsics.
46
59
47
-
-**Advanced search functionality:** With its robust search engine, **SIMD.info** allows you to either search for a specific intrinsic (e.g. `vaddq_f64`) or enter more general terms (e.g. *How to add 2 vectors*), and it will return a list of the corresponding intrinsics. You can also filter results based on the specific engine you're working with, such as **NEON**, **SSE4.2**, **AVX**, **AVX512**, **VSX**. This functionality streamlines the process of finding the right commands tailored to your needs.
60
+
You can also filter results based on the specific engine you're working with, such as NEON, SSE4.2, AVX, AVX512, or VSX. This functionality streamlines the process of finding the right commands tailored to your needs.
48
61
49
-
-**Comparison tools:** This feature lets you directly compare SIMD instructions from different (or the same) platforms side by side, offering a clear view of the similarities and differences. It’s a very helpful tool for porting code across architectures, as it ensures accuracy and efficiency.
62
+
#### Comparison tools
63
+
This feature lets you directly compare SIMD instructions from different, or the same, platforms side by side, offering a clear view of the similarities and differences. It’s a helpful tool for porting code across architectures, as it ensures accuracy and efficiency.
50
64
51
-
-**Discussion forum (like StackOverflow):** The integrated discussion forum, powered by **[discuss](https://disqus.com/)** allows users to ask questions, share insights, and troubleshoot problems together. This community-driven space ensures that you’re never stuck on a complex issue without support, fostering collaboration and knowledge-sharing among SIMD developers. Imagine something like **StackOverflow** but specific to SIMD intrinsics.
65
+
#### Discussion forum
66
+
The integrated discussion forum, powered by **[Disqus](https://disqus.com/)**, allows users to ask questions, share insights, and troubleshoot problems together. This community-driven space ensures that you’re never stuck on a complex issue without support. It fosters collaboration and knowledge-sharing among SIMD developers. Imagine something like **[StackOverflow](https://stackoverflow.com/)** but specific to SIMD intrinsics.
52
67
53
-
You can now learn how to use these features in the context of an actual example.
68
+
Now let's look at these features in the context of a real example.
0 commit comments