summaryrefslogtreecommitdiff
path: root/math
diff options
context:
space:
mode:
authorAlexey Dokuchaev <danfe@FreeBSD.org>2021-10-29 10:49:48 +0000
committerAlexey Dokuchaev <danfe@FreeBSD.org>2021-10-29 10:49:55 +0000
commit3b8065a2adbf0f8acae9c980961cb5491034a1ad (patch)
tree81f1acce00411415b5920033e7d2dedb007d5bed /math
parentsecurity/botan2: Update to 2.18.2 (diff)
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
Diffstat (limited to 'math')
-rw-r--r--math/Makefile1
-rw-r--r--math/fastops/Makefile20
-rw-r--r--math/fastops/distinfo3
-rw-r--r--math/fastops/files/patch-CMakeLists.txt13
-rw-r--r--math/fastops/files/patch-fastops_core_SIMDFunctions.h10
-rw-r--r--math/fastops/files/patch-fastops_core_avx__id.cpp31
-rw-r--r--math/fastops/pkg-descr6
-rw-r--r--math/fastops/pkg-plist11
8 files changed, 95 insertions, 0 deletions
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