• Stars
    star
    106
  • Rank 325,871 (Top 7 %)
  • Language
    C
  • License
    Apache License 2.0
  • Created almost 5 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Encapsulate the frequently used AVX instructions as independent modules to reduce repeated development workload.

AVX TO NEON

Overview

When applications using Intel intrinsic instructions are ported from the x86 architecture to the Kunpeng architecture, the instructions need to be further developed because the Arm64 instruction names and functions are different from that of x86. As a result, huge porting workloads are caused. In this project, the frequently used AVX instructions are encapsulated as independent modules to reduce repeated development workload. The AVX instructions are replaced with related NEON SIMD instructions, while the instruction names and functions remain unchanged. Users can invoke the corresponding instructions by importing related header files into the application software.

License

It is licensed under the APACHE LICENSE, VERSION 2.0. For more information, see the license file..

Requirements

  • CPU: Kunpeng 920

Guidelines

In the source code directory, the source directory contains the function implementation files. The avx512intrin.h, avxintrin.h, and emmintrin.h files implement instruction translation, and the avx2neon.h file contains the header files of them. Users can execute the instructions if the application software contains avx2neon.h. Users need to add compilation options, for example, ARCH_CFLAGS = -march=armv8-a+fp+simd+crc, when using the header file.

Test

This project also provides interface test cases for developers. The logic implementation code of test cases is located in the tests directory, and the input data and expected output of the test cases are in the data directory. Use the following commands to perform test cases:

(1) cd tests
(2) make
(3) ./test

After the test command is executed, information similar to the following is displayed on the console:

Running Test MM512_CASTPS128_PS512

...

Running Test MM256_SET_EPI32

AVX2NEONTest Complete: Passed 265 tests: Failed 0

All the instructions provided in this project have been verified on CentOS Linux release 7.6.1810 (AltArch) and EulerOS V2.0SP8, and GCC 7.3, GCC 4.8.5, and GCC 9.2.0.

More Information

For more information, visit

https://www.huaweicloud.com/kunpeng/software.html

If you have questions or comments, we encourage you to create an issue on Github. If you wish to contact the huawei team directly, you can send email to

[email protected].

Obtaining Code

If you wish to get source code of functions listed in supportedlist.md, you can send an email to [email protected].

Copyright

Copyright © 2020 Huawei Corporation. All rights reserved.

More Repositories

1

Kunpeng

Welcome to the Kunpeng compute community. Find the right repo where you want to create an issue.
76
star
2

KAE

A high-performance hardware acceleration algorithm library of OpenSSL engine based on Kunpeng processor
C
36
star
3

kunpengcompute.github.io

Kunpeng Tech Blog: https://kunpengcompute.github.io/
Stylus
17
star
4

KAEzip

A high-performance hardware accelerator for compression/decompression algorithm library of zlib based on kunpeng processor
C
17
star
5

devkitdemo

Demo of DevKit
C
17
star
6

boostkit-bigdata

Java
11
star
7

KAEdriver

Driver for Kunpeng Accelerator Engine (KAE)
C
10
star
8

HW265

A high-performance H.265/HEVC video encoder
C
9
star
9

Spark-ml-algo-lib

Open-source code of the Kunpeng machine learning library
Cuda
8
star
10

Spark-graph-algo-lib

Open-source code of the Kunpeng graph library
Scala
8
star
11

gzip

GNU Gzip with Kunpeng optimization.
C
7
star
12

Kbox

6
star
13

ceph-global-cache-adaptor

C++
4
star
14

omnidata-openlookeng-connector

Java
4
star
15

android-qemu

Client libraries for the Android emulator
C
4
star
16

hadoop-fs-ceph

Using Ceph instead of HDFS as the storage system of Hadoop.
Java
4
star
17

hpc-tuning-patches

hpc-tuning-patches is a series of KunPeng optimization patches for open-source software. Users can get better performance with these patches.
4
star
18

devkit-intellij-plugin

Kunpeng Porting Advisor & Hyper Tuner front end code for intellij plugins
Java
3
star
19

bcache

Modified bcache module that is used with Kunpeng smart storage IO acceleration library.
C
3
star
20

global-cache-adaptor

C++
2
star
21

vmi

Deployment script and configuration file for the instruction cloud phone
C++
2
star
22

omnidata-hive-connector

Java
2
star
23

goldfish-opengl

Server libraries for the Android emulator
C++
1
star
24

hbase-trie-index

It reconstructs the HFile leaf index to a prefix tree.
Java
1
star
25

arm-landscape

Track Arm CI landscape status for open source projects, including areas like big data, database, web, cloud, AI, etc.
SCSS
1
star
26

kernel-alt

Pvsched optimization of kernel-alt
1
star
27

KunpengSecL

This project collects, ports, adapts, designs and develops basic security software components running on Kunpeng processors such as security libraries, security middleware, and security tools.
Shell
1
star