Перейти к содержимому
docs.
WORKSPACE

Документации проектов

Открыть каталог проектов
Localzet ServerАсинхронный PHP-серверTriangleФреймворк и компонентыMIX IDИдентификация и интеграцииHack APIПубличные API хакатонаACNПроект и компоненты✓Userlay / UserNetПроект и компонентыAxiomПроект и компонентыМесседжинг через почтуПроект и компонентыLWT / JWT / JOSEПроект и компонентыФинансовая аналитика KimaiПроект и компонентыМультипарадигмальная БДПроект и компонентыZorin PlatformПроект и компонентыZorin TrustПроект и компонентыFloraScope / VegwatchПроект и компонентыaegis-qДокументация проектаaevumdbДокументация проектаauditДокументация проектаauto-invest-managerАвтотрейдерcaine-companionДокументация проектаcertbot-cloudflareДокументация проектаClusterLocalzet Server / ClustercmdveilДокументация проектаConsolePHP CLICronБиблиотеки Localzet Serverdata-connectorДокументация проектаdevice-controlDevice Controlenn-projectДокументация проектаEventsБиблиотеки Localzet ServerflowsintДокументация проектаforgeДокументация проектаHttpClientБиблиотеки Localzet ServerinterpreterСобственный языкinvariaДокументация проектаkeynotesДокументация проектаknotrouteKnotroutelaravel-personal-analyticsДокументация проектаlocalzet-osДокументация проектаmeridianДокументация проектаMQTTБиблиотеки Localzet Servernano-kernelСобственная ОСNoterДокументация проектаpersonal-analyticsДокументация проектаProxyБиблиотеки Localzet ServerPSRБиблиотеки Localzet ServerPSR-7Библиотеки Localzet Serverrschs-monitorДокументация проектаsemsealДокументация проектаshardsealДокументация проектаSocketIOБиблиотеки Localzet ServerSOCKS5Библиотеки Localzet Serverstandalone-analyticsДокументация проектаstatic-php-cliДокументация проектаStorageБиблиотеки Localzet ServersutureДокументация проектаtempoweaveДокументация проектаttsСинтез речиTunnelБиблиотеки Localzet Serverui-kitUI KitvesperДокументация проектаWebAnalyzerWebAnalyzerzorin-access-brokerДокументация проектаzorin-authority-brokerДокументация проектаzorin-authority-sdk-phpДокументация проектаzorin-authority-sdk-pythonДокументация проектаzorin-authority-sdk-tsДокументация проектаzorin-client-intelДокументация проектаzorin-device-core-aospДокументация проектаzorin-host-agentДокументация проектаzorin-native-labДокументация проектаzorin-nodeДокументация проектаzorin-opsДокументация проектаdonstu-python-sdkДокументация проектаfloortraceFloortraceserver-rsLocalzet Server / Cluster
Каталог

ACN-Accel is a hybrid Python + C + Assembly project with AVX2 acceleration for core neural-network primitives.

The runtime chooses between baseline C, AVX2 intrinsics, and AVX2 assembly implementations based on:

  • CPU feature availability (AVX2)
  • input size threshold
  • vector_add(float* a, float* b, float* out, int n)
  • relu(float* x, float* out, int n)
  • matmul(float* A, float* B, float* C, int M, int N, int K)

All tensors use row-major layout.

Python API (ctypes)
|
v
libacn (shared)
|
+--> adaptive.c (dispatcher + AVX2 detection)
| |
| +--> simd_avx2_asm.S (AVX2 assembly kernel)
|
| +--> simd_avx2.c (AVX2 intrinsics)
|
+--> core.c (baseline C)
  • Runtime AVX2 detection: acn_cpu_has_avx2()
  • Dispatch rules:
    • vector_add: ASM path when n >= 2048, otherwise AVX2 intrinsics for n >= 256 (if AVX2 is available)
    • relu: AVX2 path when n >= 256 and AVX2 is available
    • matmul: AVX2 path when M*N*K > 100000 and AVX2 is available
    • otherwise baseline C path
Окно терминала
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j

This produces shared library:

  • Linux: build/libacn.so
  • macOS: build/libacn.dylib (or equivalent by generator)

Install dependencies:

Окно терминала
python -m pip install numpy pytest
Окно терминала
PYTHONPATH=python ACN_LIB_PATH=build/libacn.so pytest -q

On macOS use .dylib path in ACN_LIB_PATH.

Окно терминала
PYTHONPATH=python ACN_LIB_PATH=build/libacn.so python python/benchmark.py

On macOS use .dylib path in ACN_LIB_PATH.

[ACN Benchmark]
Platform: Linux-...
CPU: AVX2 = True
Matrix 512x512:
NumPy: 120.00 ms
C: 85.00 ms
SIMD: 40.00 ms
AUTO: 41.00 ms
Speedup SIMD vs NumPy: 3.00x
  • SIMD code uses aligned loads/stores when input/output pointers are 32-byte aligned.
  • Unaligned pointers are handled safely with _mm256_loadu_ps/_mm256_storeu_ps.
  • Optional helpers are provided:
    • acn_aligned_alloc(alignment, size)
    • acn_aligned_free(ptr)
  • File: src/simd_avx2_asm.S
  • Function: vector_add_avx2_asm(const float* a, const float* b, float* out, int n)
  • ISA: AVX2 (ymm registers, vmovups, vaddps, scalar tail loop)
  • Python access: acn.vector_add(a, b, impl="asm")
acn-accel/├── CMakeLists.txt├── include/│ └── acn.h├── src/│ ├── core.c│ ├── simd_avx2.c│ ├── simd_avx2_asm.S│ └── adaptive.c├── python/│ ├── acn.py│ └── benchmark.py├── tests/│ └── test_correctness.py└── README.md
SVG ↗

Исходный код