git: 3b8065a2adbf - main - math/fastops: new port had been added (+)
Date: Fri, 29 Oct 2021 10:52:49 UTC
The branch main has been updated by danfe: URL: https://cgit.FreeBSD.org/ports/commit/?id=3b8065a2adbf0f8acae9c980961cb5491034a1ad commit 3b8065a2adbf0f8acae9c980961cb5491034a1ad Author: Alexey Dokuchaev <danfe@FreeBSD.org> AuthorDate: 2021-10-29 10:49:48 +0000 Commit: Alexey Dokuchaev <danfe@FreeBSD.org> CommitDate: 2021-10-29 10:49:55 +0000 math/fastops: new port had been added (+) This small library enables acceleration of bulk calls of certain math functions on AVX and AVX2 hardware. Currently supported operations are exp, log, sigmoid, and tanh. The library is designed with extensibility in mind. Restrict the port to amd64 as it's inherently useless anywhere else and does not even build at least on i386. WWW: https://github.com/yandex/fastops --- math/Makefile | 1 + math/fastops/Makefile | 20 ++++++++++++++ math/fastops/distinfo | 3 +++ math/fastops/files/patch-CMakeLists.txt | 13 +++++++++ .../files/patch-fastops_core_SIMDFunctions.h | 10 +++++++ math/fastops/files/patch-fastops_core_avx__id.cpp | 31 ++++++++++++++++++++++ math/fastops/pkg-descr | 6 +++++ math/fastops/pkg-plist | 11 ++++++++ 8 files changed, 95 insertions(+) diff --git a/math/Makefile b/math/Makefile index d5e545695f82..1fe9497f83f0 100644 --- a/math/Makefile +++ b/math/Makefile @@ -280,6 +280,7 @@ SUBDIR += facile SUBDIR += faiss SUBDIR += fann + SUBDIR += fastops SUBDIR += fcl SUBDIR += fcl05 SUBDIR += fflas-ffpack diff --git a/math/fastops/Makefile b/math/fastops/Makefile new file mode 100644 index 000000000000..3d039e2b74af --- /dev/null +++ b/math/fastops/Makefile @@ -0,0 +1,20 @@ +# Created by: Alexey Dokuchaev <danfe@FreeBSD.org> + +PORTNAME= fastops +PORTVERSION= 1.0.0 +DISTVERSIONPREFIX= v +CATEGORIES= math + +MAINTAINER= danfe@FreeBSD.org +COMMENT= AVX/AVX2-accelerated bulk call of math functions + +LICENSE= MIT + +ONLY_FOR_ARCHS= amd64 +ONLY_FOR_ARCHS_REASON= uses AVX and AVX2 instructions + +USES= cmake compiler:c++17-lang +USE_GITHUB= yes +GH_ACCOUNT= yandex + +.include <bsd.port.mk> diff --git a/math/fastops/distinfo b/math/fastops/distinfo new file mode 100644 index 000000000000..74e54d2875f7 --- /dev/null +++ b/math/fastops/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1588749823 +SHA256 (yandex-fastops-v1.0.0_GH0.tar.gz) = 16cd75b85717c60ff9552e140ba59dfc0d49217633a9c8c8614e9d001ce1303b +SIZE (yandex-fastops-v1.0.0_GH0.tar.gz) = 266428 diff --git a/math/fastops/files/patch-CMakeLists.txt b/math/fastops/files/patch-CMakeLists.txt new file mode 100644 index 000000000000..3198b10cb280 --- /dev/null +++ b/math/fastops/files/patch-CMakeLists.txt @@ -0,0 +1,13 @@ +--- CMakeLists.txt.orig 2020-05-06 07:23:43 UTC ++++ CMakeLists.txt +@@ -3,9 +3,8 @@ cmake_minimum_required(VERSION 2.6) + project(fastops) + + include_directories("${PROJECT_SOURCE_DIR}") +-set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/install) + +-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -O3") ++set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17") + + # Specify the C++ 17 language standard for + # any version of Microsoft Visual C++ Compiler diff --git a/math/fastops/files/patch-fastops_core_SIMDFunctions.h b/math/fastops/files/patch-fastops_core_SIMDFunctions.h new file mode 100644 index 000000000000..82a90e4559b8 --- /dev/null +++ b/math/fastops/files/patch-fastops_core_SIMDFunctions.h @@ -0,0 +1,10 @@ +--- fastops/core/SIMDFunctions.h.orig 2020-05-06 07:23:43 UTC ++++ fastops/core/SIMDFunctions.h +@@ -9,6 +9,7 @@ + #include <emmintrin.h> + #include <xmmintrin.h> + #include <immintrin.h> ++#include <stdint.h> + + #if defined(__clang_major__) && !defined(__apple_build_version__) && __clang_major__ >= 8 + # define Y_HAVE_NEW_INTRINSICS diff --git a/math/fastops/files/patch-fastops_core_avx__id.cpp b/math/fastops/files/patch-fastops_core_avx__id.cpp new file mode 100644 index 000000000000..0ea3e89ab7ab --- /dev/null +++ b/math/fastops/files/patch-fastops_core_avx__id.cpp @@ -0,0 +1,31 @@ +--- fastops/core/avx_id.cpp.orig 2020-05-06 07:23:43 UTC ++++ fastops/core/avx_id.cpp +@@ -36,23 +36,23 @@ namespace NFastOps { + // This in EBX of cpuid(7) + static constexpr uint32_t AVX2_BIT = 0x00000020; + +- static void CpuId(int32_t op, int32_t* res) noexcept { ++ static void CpuId(int32_t op, int32_t sub, int32_t* res) noexcept { + #if defined(_MSC_VER) && !defined(__clang__) +- __cpuid((int*)res, op); ++ __cpuidex((int*)res, op, sub); + #else +- __cpuid(op, res[EAX], res[EBX], res[ECX], res[EDX]); ++ __cpuid_count(op, sub, res[EAX], res[EBX], res[ECX], res[EDX]); + #endif + } + + bool IsAVXEnabled() noexcept { + int32_t info[NREGS]; +- CpuId(1, info); ++ CpuId(1, 0, info); + return (info[ECX] & OSXSAVE_BIT) && IsYMMSaveEnabled() && (info[ECX] & AVX_BIT); + } + + bool IsAVX2Enabled() noexcept { + int32_t info[NREGS]; +- CpuId(7, info); ++ CpuId(7, 0, info); + return info[EBX] & AVX2_BIT; + } + } diff --git a/math/fastops/pkg-descr b/math/fastops/pkg-descr new file mode 100644 index 000000000000..b3b4a059be88 --- /dev/null +++ b/math/fastops/pkg-descr @@ -0,0 +1,6 @@ +This small library enables acceleration of bulk calls of certain math +functions on AVX and AVX2 hardware. Currently supported operations are +exp, log, sigmoid, and tanh. The library is designed with extensibility +in mind. + +WWW: https://github.com/yandex/fastops diff --git a/math/fastops/pkg-plist b/math/fastops/pkg-plist new file mode 100644 index 000000000000..736d23848c3a --- /dev/null +++ b/math/fastops/pkg-plist @@ -0,0 +1,11 @@ +bin/benchmark +bin/eval +bin/fastops_test +include/avx/ops_avx.h +include/avx2/ops_avx2.h +include/core/FastIntrinsics.h +include/core/SIMDFunctions.h +include/core/avx_id.h +include/fastops.h +include/plain/ops_plain.h +lib/libfastops.a