diff options
Diffstat (limited to 'math/fastops')
-rw-r--r-- | math/fastops/Makefile | 20 | ||||
-rw-r--r-- | math/fastops/distinfo | 3 | ||||
-rw-r--r-- | math/fastops/files/patch-CMakeLists.txt | 13 | ||||
-rw-r--r-- | math/fastops/files/patch-fastops_core_SIMDFunctions.h | 10 | ||||
-rw-r--r-- | math/fastops/files/patch-fastops_core_avx__id.cpp | 31 | ||||
-rw-r--r-- | math/fastops/pkg-descr | 6 | ||||
-rw-r--r-- | math/fastops/pkg-plist | 11 |
7 files changed, 94 insertions, 0 deletions
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 |