Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
fb5dce7
Add: Sum & Scale APIs
ashvardanian Oct 31, 2024
6cdd147
Docs: PyTorch examples & Element-wise ops
ashvardanian Oct 28, 2024
d436795
Improve: Faster scale/shift on Haswell with FMA
ashvardanian Oct 31, 2024
a57264a
Add: `simsimd_ndindex_t` for high-rank tensors
ashvardanian Nov 1, 2024
e382774
Merge pull request #223 from ashvardanian/main
ashvardanian Nov 1, 2024
25a76ca
Make: Mark tests in CMake (#226)
Spixmaster Nov 2, 2024
7666884
Add: Same-type element-wise ops
ashvardanian Nov 4, 2024
999243e
Merge branch 'main-elementwise' of https://github.com/ashvardanian/Si…
ashvardanian Nov 4, 2024
617e1f7
Fix: Increment `global_offset` on final step
ashvardanian Nov 4, 2024
0ce4024
Fix: Cast in `sum_i8_haswell`
ashvardanian Nov 4, 2024
d54f567
Fix: Conflicting type on Windows
ashvardanian Nov 4, 2024
a334e99
Merge branch 'main' into main-elementwise
ashvardanian Nov 5, 2024
18c41fd
Improve: Type-casting logic
ashvardanian Nov 5, 2024
47f79c7
Improve: `ndindex` -> `mdindices`
ashvardanian Nov 6, 2024
4bfe1d1
Improve: Drop `global_offset`
ashvardanian Nov 6, 2024
ac5841f
Add: `mdspan`
ashvardanian Nov 6, 2024
4c69e7d
Add: Type-casts to & from `[iuf]64`
ashvardanian Nov 6, 2024
4646d6b
Break: Support mixed-type element-wise ops
ashvardanian Nov 6, 2024
383b799
Break: Shorter op-codes
ashvardanian Nov 6, 2024
08010ba
Improve: Same type-casting as NumPy
ashvardanian Nov 7, 2024
54bb07d
Add: `i16` element-wise kernels for NEON
ashvardanian Nov 8, 2024
1f91b92
Add: `i32` element-wise kernels for NEON
ashvardanian Nov 8, 2024
75993e7
Add: `i64` element-wise kernels for NEON
ashvardanian Nov 8, 2024
38df49c
Break: Shorter symbol names
ashvardanian Nov 8, 2024
0e7c656
Add: `i16` element-wise kernels for Haswell
ashvardanian Nov 8, 2024
e2698b0
Add: `i32` element-wise kernels for Haswell
ashvardanian Nov 8, 2024
d10d27e
Add: `i8` element-wise kernels for Skylake
ashvardanian Nov 8, 2024
8950a7e
Add: `i16` element-wise kernels for Skylake
ashvardanian Nov 9, 2024
d1bb51c
Add: `i32` element-wise kernels for Skylake
ashvardanian Nov 9, 2024
463e8f3
Add: `i64`element-wise kernels for Skylake
ashvardanian Nov 9, 2024
e089626
Improve: Unsigned type literals for masks
ashvardanian Nov 9, 2024
09735ea
Add: Element-wise saturated addition for Ice Lake
ashvardanian Nov 9, 2024
602f812
Add: Dynamic dispatch for element-wise ops
ashvardanian Nov 9, 2024
3aac9ad
Add: Missing serial integer `wsum`-s
ashvardanian Nov 9, 2024
02236d1
Fix: Match type-casting rules of NumPy
ashvardanian Nov 9, 2024
48bd712
Add: `simsimd.multiply`
ashvardanian Nov 9, 2024
7aa118b
Fix: `_mm256_adds_epi32` emulation
ashvardanian Nov 10, 2024
8295e11
Fix: Serial emulation of `_mm256_adds_epu32`
ashvardanian Nov 10, 2024
400dfaa
Fix: `sadd` for `u(8|16|32)`
ashvardanian Nov 10, 2024
d81868a
Add: `simsimd.multiply`
ashvardanian Nov 10, 2024
79c4552
Fix: Missing 64-bit Haswell kernels
ashvardanian Nov 10, 2024
3f48285
Improve: Clipping doubles on Haswell
ashvardanian Nov 11, 2024
bcbe538
Fix: Missing `__m256d[]` operator on MSVC
ashvardanian Nov 11, 2024
9afe040
Improve: Reduce fuzzy tests
ashvardanian Nov 11, 2024
a4fce6d
Fix: Keeping one capability ON
ashvardanian Nov 11, 2024
ac60194
Improve: Overflow clipping on Skylake
ashvardanian Nov 11, 2024
45e806f
Improve: Clipping on x86
ashvardanian Nov 11, 2024
69e3a94
Fix: Inferring `possible_capabilities`
ashvardanian Nov 11, 2024
e568e6c
Improve: Log operand descriptor
ashvardanian Nov 11, 2024
4d0880f
Merge branch 'main' into main-elementwise
ashvardanian Nov 11, 2024
a0f88b7
Improve: Test saturating arithmetic
ashvardanian Nov 11, 2024
72b219e
Merge branch 'main-elementwise' of https://github.com/ashvardanian/Si…
ashvardanian Nov 11, 2024
0bf67d0
Improve: Re-group Py/Rs benchmarks
ashvardanian Nov 12, 2024
b3f98e6
Add: `u8` APIs to Rust SDK
ashvardanian Nov 12, 2024
c49abe3
Make: Bump Rust dependencies
ashvardanian Nov 12, 2024
6f69eee
Improve: Generalize Rust benchmarks
ashvardanian Nov 12, 2024
cf507db
Improve: Report throughput in Rust benchmarks
ashvardanian Nov 12, 2024
a22607d
Add: BLAS benchmarks for elementwise ops
ashvardanian Nov 12, 2024
b6012ca
Fix: FMA can't be implemented in BLAS
ashvardanian Nov 13, 2024
8fb5a0c
Add: Element-wise Python benchmark
ashvardanian Nov 13, 2024
fe62187
Improve: Mixed `dtype` benchmarks
ashvardanian Nov 13, 2024
8c9b71e
Improve: "MD" -> "XD"
ashvardanian Nov 15, 2024
b480b5c
Break: `cos` distance renamed to `angular`
ashvardanian Nov 20, 2024
d65c6e8
Improve: Ignore renaming to `angular`
ashvardanian Nov 20, 2024
96adae5
Add: Trigonometry based on SLEEF
ashvardanian Nov 20, 2024
cb14ffb
Improve: Polish `simsimd_f32_sin`
ashvardanian Nov 20, 2024
d4a6288
Improve: Cleaner trigonometry
ashvardanian Nov 21, 2024
bc6ed87
Add: `atan` & `atan2` serial variants
ashvardanian Nov 22, 2024
02711a5
Add: Trigonometric functions for Skylake
ashvardanian Nov 22, 2024
5cdb364
Make: Compile with OpenMP
ashvardanian Nov 22, 2024
844feab
Improve: Benchmark Trigonometry
ashvardanian Nov 22, 2024
f03aea9
Fix: `f64` logic
ashvardanian Nov 22, 2024
f438847
Merge branch 'main-dev' into main-elementwise
ashvardanian Oct 1, 2025
8595f58
Break: Rename to MathKong
ashvardanian Oct 1, 2025
fe28f22
Break: Rename files to MathKong
ashvardanian Oct 1, 2025
842f5aa
Break: Renaming uppercase symbols
ashvardanian Oct 1, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
a4022a988287e527757ecc9bc16a4f2e7dc4770e
750c59f5116a2000507a0cec09db009fd7d31232
b480b5c3ebddd6de0f8e1c179cdc02f18edbb8ae
186 changes: 93 additions & 93 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,98 +3,98 @@ description: Something doesn't work as expected?
title: "Bug: "
labels: ["bug"]
assignees:
- octocat
- octocat
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
If you have a small question, it may be faster to ask the maintainers on [Discord](https://discord.gg/4mxGrenbNt).
- type: textarea
id: what
attributes:
label: Describe the bug
placeholder: A short description of what the bug is.
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to reproduce
placeholder: Detail the steps taken to reproduce the behavior.
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
placeholder: A clear and concise description of what you expected to happen.
validations:
required: true
- type: input
id: version
attributes:
label: SimSIMD version
placeholder: vX.Y.Z
validations:
required: true
- type: input
id: os
attributes:
label: Operating System
placeholder: Ubuntu 22.04
validations:
required: true
- type: dropdown
id: hardware
attributes:
label: Hardware architecture
options:
- x86
- Arm
validations:
required: true
- type: dropdown
id: frontend
attributes:
label: Which interface are you using?
options:
- C implementation
- C++ bindings
- Python bindings
- Rust bindings
- Other bindings
validations:
required: true
- type: input
id: contact
attributes:
label: Contact Details
description: How can we get in touch with you if we need more info?
placeholder: [email protected]
validations:
required: false
- type: checkboxes
id: mentions
attributes:
label: Are you open to being tagged as a contributor?
description: Sometimes, a bug report is just as valuable as a patch 🤗
options:
- label: I am open to being mentioned in the project `.git` history as a contributor
required: false
- type: checkboxes
id: duplicate
attributes:
label: Is there an existing issue for this?
description: Please search [our issues](https://github.com/ashvardanian/simsimd/issues) to see if this bug already exists.
options:
- label: I have searched the existing issues
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
If you have a small question, it may be faster to ask the maintainers on [Discord](https://discord.gg/4mxGrenbNt).
- type: textarea
id: what
attributes:
label: Describe the bug
placeholder: A short description of what the bug is.
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to reproduce
placeholder: Detail the steps taken to reproduce the behavior.
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
placeholder: A clear and concise description of what you expected to happen.
validations:
required: true
- type: input
id: version
attributes:
label: MathKong version
placeholder: vX.Y.Z
validations:
required: true
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/ashvardanian/simsimd/blob/main/CODE_OF_CONDUCT.md)
options:
- label: I agree to follow this project's Code of Conduct
required: true
- type: input
id: os
attributes:
label: Operating System
placeholder: Ubuntu 22.04
validations:
required: true
- type: dropdown
id: hardware
attributes:
label: Hardware architecture
options:
- x86
- Arm
validations:
required: true
- type: dropdown
id: frontend
attributes:
label: Which interface are you using?
options:
- C implementation
- C++ bindings
- Python bindings
- Rust bindings
- Other bindings
validations:
required: true
- type: input
id: contact
attributes:
label: Contact Details
description: How can we get in touch with you if we need more info?
placeholder: [email protected]
validations:
required: false
- type: checkboxes
id: mentions
attributes:
label: Are you open to being tagged as a contributor?
description: Sometimes, a bug report is just as valuable as a patch 🤗
options:
- label: I am open to being mentioned in the project `.git` history as a contributor
required: false
- type: checkboxes
id: duplicate
attributes:
label: Is there an existing issue for this?
description: Please search [our issues](https://github.com/ashvardanian/mathkong/issues) to see if this bug already exists.
options:
- label: I have searched the existing issues
required: true
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/ashvardanian/mathkong/blob/main/CODE_OF_CONDUCT.md)
options:
- label: I agree to follow this project's Code of Conduct
required: true
110 changes: 55 additions & 55 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,60 +3,60 @@ description: Something we haven't implemented yet?
title: "Feature: "
labels: ["enhancement"]
assignees:
- octocat
- octocat
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this feature request!
We have already scheduled a few features for our [next milestone](https://github.com/ashvardanian/simsimd/milestones).
- type: textarea
id: what
attributes:
label: Describe what you are looking for
placeholder: A short description of what the feature would look like, ideally with code examples.
validations:
required: true
- type: checkboxes
id: check
attributes:
label: Can you contribute to the implementation?
options:
- label: I can contribute
- type: dropdown
id: interface
attributes:
label: Is your feature request specific to a certain interface?
options:
- It applies to everything
- C implementation
- C++ bindings
- Python bindings
- Other bindings
- Other
validations:
required: true
- type: input
id: contact
attributes:
label: Contact Details
description: How can we get in touch with you if we need more info?
placeholder: [email protected]
validations:
required: false
- type: checkboxes
id: duplicate
attributes:
label: Is there an existing issue for this?
description: Please search [our issues](https://github.com/ashvardanian/simsimd/issues) to see if this bug already exists.
options:
- label: I have searched the existing issues
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this feature request!
We have already scheduled a few features for our [next milestone](https://github.com/ashvardanian/mathkong/milestones).
- type: textarea
id: what
attributes:
label: Describe what you are looking for
placeholder: A short description of what the feature would look like, ideally with code examples.
validations:
required: true
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/ashvardanian/simsimd/blob/main/CODE_OF_CONDUCT.md)
options:
- label: I agree to follow this project's Code of Conduct
required: true
- type: checkboxes
id: check
attributes:
label: Can you contribute to the implementation?
options:
- label: I can contribute
- type: dropdown
id: interface
attributes:
label: Is your feature request specific to a certain interface?
options:
- It applies to everything
- C implementation
- C++ bindings
- Python bindings
- Other bindings
- Other
validations:
required: true
- type: input
id: contact
attributes:
label: Contact Details
description: How can we get in touch with you if we need more info?
placeholder: [email protected]
validations:
required: false
- type: checkboxes
id: duplicate
attributes:
label: Is there an existing issue for this?
description: Please search [our issues](https://github.com/ashvardanian/mathkong/issues) to see if this bug already exists.
options:
- label: I have searched the existing issues
required: true
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/ashvardanian/mathkong/blob/main/CODE_OF_CONDUCT.md)
options:
- label: I agree to follow this project's Code of Conduct
required: true
12 changes: 6 additions & 6 deletions .github/workflows/prerelease.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ jobs:
package.json:"version": "(\d+\.\d+\.\d+)"
CMakeLists.txt:VERSION (\d+\.\d+\.\d+)
update-major-version-in: |
include/simsimd/simsimd.h:^#define SIMSIMD_VERSION_MAJOR (\d+)
include/mathkong/mathkong.h:^#define MATHKONG_VERSION_MAJOR (\d+)
update-minor-version-in: |
include/simsimd/simsimd.h:^#define SIMSIMD_VERSION_MINOR (\d+)
include/mathkong/mathkong.h:^#define MATHKONG_VERSION_MINOR (\d+)
update-patch-version-in: |
include/simsimd/simsimd.h:^#define SIMSIMD_VERSION_PATCH (\d+)
include/mathkong/mathkong.h:^#define MATHKONG_VERSION_PATCH (\d+)
dry-run: "true"

test_c:
Expand All @@ -57,11 +57,11 @@ jobs:

- name: Build locally
run: |
cmake -D CMAKE_BUILD_TYPE=Release -D SIMSIMD_BUILD_TESTS=1 -D SIMSIMD_BUILD_BENCHMARKS=1 -D SIMSIMD_BUILD_BENCHMARKS_WITH_CBLAS=1 -B build_release
cmake -D CMAKE_BUILD_TYPE=Release -D MATHKONG_BUILD_TESTS=1 -D MATHKONG_BUILD_BENCHMARKS=1 -D MATHKONG_BUILD_BENCHMARKS_WITH_CBLAS=1 -B build_release
cmake --build build_release --config Release

- name: Test
run: build_release/simsimd_test_run_time
run: build_release/mathkong_test_run_time

test_python:
name: Test Python ${{ matrix.python-version }} on ${{ matrix.architecture }} ${{ matrix.os }}
Expand Down Expand Up @@ -103,7 +103,7 @@ jobs:

- name: Test with PyTest
run: |
python -c "import simsimd; print(simsimd.get_capabilities())"
python -c "import mathkong; print(mathkong.get_capabilities())"
pytest scripts/test.py -s -x -Wd -v

test_nodejs:
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,11 @@ jobs:
package.json:"version": "(\d+\.\d+\.\d+)"
CMakeLists.txt:VERSION (\d+\.\d+\.\d+)
update-major-version-in: |
include/simsimd/simsimd.h:^#define SIMSIMD_VERSION_MAJOR (\d+)
include/mathkong/mathkong.h:^#define MATHKONG_VERSION_MAJOR (\d+)
update-minor-version-in: |
include/simsimd/simsimd.h:^#define SIMSIMD_VERSION_MINOR (\d+)
include/mathkong/mathkong.h:^#define MATHKONG_VERSION_MINOR (\d+)
update-patch-version-in: |
include/simsimd/simsimd.h:^#define SIMSIMD_VERSION_PATCH (\d+)
include/mathkong/mathkong.h:^#define MATHKONG_VERSION_PATCH (\d+)
dry-run: "false"
push: "true"
create-release: "true"
Expand Down Expand Up @@ -323,7 +323,7 @@ jobs:
runs-on: ubuntu-22.04
environment:
name: pypi
url: https://pypi.org/p/simsimd
url: https://pypi.org/p/mathkong
permissions:
id-token: write

Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ build_release
build_debug
build
_deps
simsimd.egg-info
mathkong.egg-info
CMakeFiles
__pycache__
wheelhouse/
Expand Down
Loading
Loading