maxsim-fast


Namemaxsim-fast JSON
Version 0.1.1 PyPI version JSON
download
home_pageNone
SummaryFast CPU implementation of MaxSim scoring
upload_time2025-11-04 06:23:48
maintainerNone
docs_urlNone
authorBenjamin Clavié, Mixedbread Team
requires_python>=3.8
licenseApache-2.0
keywords maxsim similarity ranking cpu simd performance
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # maxsim-cpu

`maxsim-cpu` is a high-performance CPU implementation of MaxSim scoring for late-interaction (ColBERT, ColPali) workflows.

It is a python library written in Rust and powered by `libsxmm` on x86 CPUs and Apple Accelerate on ARM macs. It only supports Linux x86 machines and ARM Macs at the moment.

`maxsim-cpu` is built to run exclusively on CPU, and achieves speed-ups that scale with core count on the scoring machine. It's designed to be used in situations where index/scoring machines do not have access to GPUs, and achieves ~2-3x speed-ups on ARM macs and 5x speedups on Linux CPUs over common PyTorch maxsim implementations.

It also implements effective just-in-time batching and padding for variable documents, greatly reducing padding overhead and needless computations.

## Getting Started

Pre-built wheels are available on Pypi for Python 3.9 through 3.13 and can be installed in the usual way:

```bash
uv pip install maxsim-cpu # You may use vanilla pip install but why would you? If you're sophisticated, you could use `uv add` too!
```

Once installed, the simple API exposes two methods. For uniform-length inputs, you may use:

```python
import numpy as np
import maxsim_cpu

# Prepare normalized embeddings
query = np.random.randn(32, 128).astype(np.float32)  # [num_query_tokens, dim]

# NOTE: maxsim-cpu expects normalized vectors.
query /= np.linalg.norm(query, axis=1, keepdims=True)

docs = np.random.randn(1000, 512, 128).astype(np.float32)  # [num_docs, doc_len, dim]
# Normalize document embeddings...

# Compute MaxSim scores
scores = maxsim_cpu.maxsim_scores(query, docs)  # Returns [num_docs] scores
```

For variable length inputs, you should use the alternate `maxsim_scores_variable`:

```python
import numpy as np
import maxsim_cpu

# Prepare normalized embeddings
query = np.random.randn(32, 128).astype(np.float32)  # [num_query_tokens, dim]

# NOTE: maxsim-cpu expects normalized vectors.
query /= np.linalg.norm(query, axis=1, keepdims=True)

# Create variable-length documents as a list
docs = [
    np.random.randn(np.random.randint(50, 800), 128).astype(np.float32)  # Variable length docs
    for _ in range(1000)
]
# Normalize document embeddings...

# Compute MaxSim scores
scores = maxsim_cpu.maxsim_scores_variable(query, docs)  # Returns [num_docs] scores
```

## Platform Requirements

- **macOS ARM**: Apple Silicon (M1+)
- **macOS Intel**: x86_64 with AVX2 (Intel Haswell 2013+ - Core i3/i5/i7 4xxx series or newer)
- **Linux**: x86_64 with AVX2 (Intel Haswell 2013+, AMD Excavator 2015+)

We currently do not support Windows or take advantage of AVX512 instructions, nor do we optimise caching for specific CPUs. Contributions/PRs in this direction are welcome!

**Note**: Pre-built wheels on PyPI are currently only available for Linux x86_64 and macOS ARM (Apple Silicon). For Intel Mac users, you'll need to build from source (see below).

## Building

We use `maturin` as our build system. 

#### Linux

The easy way to build `maxsim-cpu` from source on Linux is as follows:

```bash
# Install necessary system deps
apt-get install libssl-dev libopenblas-dev -y
apt-get install pkg-config -y
# Install tooling
uv pip install maturin patchelf numpy
# Install libxsmm
git@github.com:libxsmm/libxsmm.git && cd libxsmm && make STATIC=1 && make
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
. "$HOME/.cargo/env"
# Clone and install maxsim-cpu
git clone git@github.com:mixedbread-ai/maxsim-cpu.git
cd maxsim-cpu
RUSTFLAGS="-L native=$(pwd)/../libxsmm/lib" maturin build --release --features use-libxsmm
```

Step by step:
- This installs OpenSSL and OpenBLAS, which will be required for compiling, as well as pkg-config so they can be found easily.
- It then clones `libxsmm`, on which most of the performance depends, and installs it.
- Installs RUST and enables its environment
- Clones this repository and finally build it

You may modify it and remove any step depending on dependencies already present on your machine.

#### Mac

On Mac, the installation is simplified, assuming you use homebrew:

**For Apple Silicon (M1+):**
```bash
# Install maturin
uv pip install maturin
# Install patchelf
brew install patchelf
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
. "$HOME/.cargo/env"
# Clone and install maxsim-cpu
git clone git@github.com:mixedbread-ai/maxsim-cpu.git
cd maxsim-cpu
maturin build --release
```

**For Intel Mac (x86_64):**
```bash
# Install maturin
uv pip install maturin
# Install patchelf
brew install patchelf
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
. "$HOME/.cargo/env"
# Clone and install maxsim-cpu
git clone git@github.com:mixedbread-ai/maxsim-cpu.git
cd maxsim-cpu
# Build with AVX2 support (requires Intel Haswell 2013+ or newer)
RUSTFLAGS="-C target-cpu=haswell" maturin build --release
```

## Performance

For documents of uniform lengths, performance on Linux is slower than Jax on 4 core machines and either somewhat faster or slower depending on the CPU at 8 cores, and always faster than alternatives on ARM Macs. For variable document lengths (evaluated as a uniform distribution between 128 and 1536 tokens), `maxsim-cpu` is always pretty fast thanks to more efficient batching.

### Mac M4 Ultra

![Mac M4 Ultra performance](speedup_comparisons/maxsim_speedup_mac.png)


### Linux AMD EPYC

#### 32 core limit performance

![Linux AMD EPYC 32 core performance](speedup_comparisons/maxsim_speedup_32cores.png)

#### 16 core limit performance

*It seems our performance was hindered during benchmarking due to a Rayon config issue when limiting the available cores. Leaving reporting as-is for now but performance is expected to be considerably better on an actual 16-core CPU.*

![Linux AMD EPYC 16 core performance](speedup_comparisons/maxsim_speedup_16cores.png)


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "maxsim-fast",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "maxsim, similarity, ranking, cpu, simd, performance",
    "author": "Benjamin Clavi\u00e9, Mixedbread Team",
    "author_email": null,
    "download_url": null,
    "platform": null,
    "description": "# maxsim-cpu\n\n`maxsim-cpu` is a high-performance CPU implementation of MaxSim scoring for late-interaction (ColBERT, ColPali) workflows.\n\nIt is a python library written in Rust and powered by `libsxmm` on x86 CPUs and Apple Accelerate on ARM macs. It only supports Linux x86 machines and ARM Macs at the moment.\n\n`maxsim-cpu` is built to run exclusively on CPU, and achieves speed-ups that scale with core count on the scoring machine. It's designed to be used in situations where index/scoring machines do not have access to GPUs, and achieves ~2-3x speed-ups on ARM macs and 5x speedups on Linux CPUs over common PyTorch maxsim implementations.\n\nIt also implements effective just-in-time batching and padding for variable documents, greatly reducing padding overhead and needless computations.\n\n## Getting Started\n\nPre-built wheels are available on Pypi for Python 3.9 through 3.13 and can be installed in the usual way:\n\n```bash\nuv pip install maxsim-cpu # You may use vanilla pip install but why would you? If you're sophisticated, you could use `uv add` too!\n```\n\nOnce installed, the simple API exposes two methods. For uniform-length inputs, you may use:\n\n```python\nimport numpy as np\nimport maxsim_cpu\n\n# Prepare normalized embeddings\nquery = np.random.randn(32, 128).astype(np.float32)  # [num_query_tokens, dim]\n\n# NOTE: maxsim-cpu expects normalized vectors.\nquery /= np.linalg.norm(query, axis=1, keepdims=True)\n\ndocs = np.random.randn(1000, 512, 128).astype(np.float32)  # [num_docs, doc_len, dim]\n# Normalize document embeddings...\n\n# Compute MaxSim scores\nscores = maxsim_cpu.maxsim_scores(query, docs)  # Returns [num_docs] scores\n```\n\nFor variable length inputs, you should use the alternate `maxsim_scores_variable`:\n\n```python\nimport numpy as np\nimport maxsim_cpu\n\n# Prepare normalized embeddings\nquery = np.random.randn(32, 128).astype(np.float32)  # [num_query_tokens, dim]\n\n# NOTE: maxsim-cpu expects normalized vectors.\nquery /= np.linalg.norm(query, axis=1, keepdims=True)\n\n# Create variable-length documents as a list\ndocs = [\n    np.random.randn(np.random.randint(50, 800), 128).astype(np.float32)  # Variable length docs\n    for _ in range(1000)\n]\n# Normalize document embeddings...\n\n# Compute MaxSim scores\nscores = maxsim_cpu.maxsim_scores_variable(query, docs)  # Returns [num_docs] scores\n```\n\n## Platform Requirements\n\n- **macOS ARM**: Apple Silicon (M1+)\n- **macOS Intel**: x86_64 with AVX2 (Intel Haswell 2013+ - Core i3/i5/i7 4xxx series or newer)\n- **Linux**: x86_64 with AVX2 (Intel Haswell 2013+, AMD Excavator 2015+)\n\nWe currently do not support Windows or take advantage of AVX512 instructions, nor do we optimise caching for specific CPUs. Contributions/PRs in this direction are welcome!\n\n**Note**: Pre-built wheels on PyPI are currently only available for Linux x86_64 and macOS ARM (Apple Silicon). For Intel Mac users, you'll need to build from source (see below).\n\n## Building\n\nWe use `maturin` as our build system. \n\n#### Linux\n\nThe easy way to build `maxsim-cpu` from source on Linux is as follows:\n\n```bash\n# Install necessary system deps\napt-get install libssl-dev libopenblas-dev -y\napt-get install pkg-config -y\n# Install tooling\nuv pip install maturin patchelf numpy\n# Install libxsmm\ngit@github.com:libxsmm/libxsmm.git && cd libxsmm && make STATIC=1 && make\n# Install Rust\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n. \"$HOME/.cargo/env\"\n# Clone and install maxsim-cpu\ngit clone git@github.com:mixedbread-ai/maxsim-cpu.git\ncd maxsim-cpu\nRUSTFLAGS=\"-L native=$(pwd)/../libxsmm/lib\" maturin build --release --features use-libxsmm\n```\n\nStep by step:\n- This installs OpenSSL and OpenBLAS, which will be required for compiling, as well as pkg-config so they can be found easily.\n- It then clones `libxsmm`, on which most of the performance depends, and installs it.\n- Installs RUST and enables its environment\n- Clones this repository and finally build it\n\nYou may modify it and remove any step depending on dependencies already present on your machine.\n\n#### Mac\n\nOn Mac, the installation is simplified, assuming you use homebrew:\n\n**For Apple Silicon (M1+):**\n```bash\n# Install maturin\nuv pip install maturin\n# Install patchelf\nbrew install patchelf\n# Install Rust\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n. \"$HOME/.cargo/env\"\n# Clone and install maxsim-cpu\ngit clone git@github.com:mixedbread-ai/maxsim-cpu.git\ncd maxsim-cpu\nmaturin build --release\n```\n\n**For Intel Mac (x86_64):**\n```bash\n# Install maturin\nuv pip install maturin\n# Install patchelf\nbrew install patchelf\n# Install Rust\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n. \"$HOME/.cargo/env\"\n# Clone and install maxsim-cpu\ngit clone git@github.com:mixedbread-ai/maxsim-cpu.git\ncd maxsim-cpu\n# Build with AVX2 support (requires Intel Haswell 2013+ or newer)\nRUSTFLAGS=\"-C target-cpu=haswell\" maturin build --release\n```\n\n## Performance\n\nFor documents of uniform lengths, performance on Linux is slower than Jax on 4 core machines and either somewhat faster or slower depending on the CPU at 8 cores, and always faster than alternatives on ARM Macs. For variable document lengths (evaluated as a uniform distribution between 128 and 1536 tokens), `maxsim-cpu` is always pretty fast thanks to more efficient batching.\n\n### Mac M4 Ultra\n\n![Mac M4 Ultra performance](speedup_comparisons/maxsim_speedup_mac.png)\n\n\n### Linux AMD EPYC\n\n#### 32 core limit performance\n\n![Linux AMD EPYC 32 core performance](speedup_comparisons/maxsim_speedup_32cores.png)\n\n#### 16 core limit performance\n\n*It seems our performance was hindered during benchmarking due to a Rayon config issue when limiting the available cores. Leaving reporting as-is for now but performance is expected to be considerably better on an actual 16-core CPU.*\n\n![Linux AMD EPYC 16 core performance](speedup_comparisons/maxsim_speedup_16cores.png)\n\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "Fast CPU implementation of MaxSim scoring",
    "version": "0.1.1",
    "project_urls": {
        "Bug Tracker": "https://github.com/zhuwenxing/maxsim-cpu/issues",
        "Homepage": "https://github.com/zhuwenxing/maxsim-cpu"
    },
    "split_keywords": [
        "maxsim",
        " similarity",
        " ranking",
        " cpu",
        " simd",
        " performance"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "591fe79e1c710a3d35b6ddd0c3702d0096e933b69708d68060fa66790ffdb23a",
                "md5": "a50c8a496b2761cab354ebb77162fe5c",
                "sha256": "bdbb80e5fa6e7e48ea53b406256cb1d8d2d9355649fd0299019e82e52db0c90f"
            },
            "downloads": -1,
            "filename": "maxsim_fast-0.1.1-cp310-cp310-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a50c8a496b2761cab354ebb77162fe5c",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 232711,
            "upload_time": "2025-11-04T06:23:48",
            "upload_time_iso_8601": "2025-11-04T06:23:48.962088Z",
            "url": "https://files.pythonhosted.org/packages/59/1f/e79e1c710a3d35b6ddd0c3702d0096e933b69708d68060fa66790ffdb23a/maxsim_fast-0.1.1-cp310-cp310-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "567b5fe69f56b6940035db915ce0b4a78c4e7e59a9b427d8b1724bb49dcba6a2",
                "md5": "3dd3bf721ad2f32f7a9112713810137f",
                "sha256": "13e7df8aca971c8ce225600b6bf79e3b775a3faa1c2aac06c08f01830be1e7c9"
            },
            "downloads": -1,
            "filename": "maxsim_fast-0.1.1-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "3dd3bf721ad2f32f7a9112713810137f",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 215360,
            "upload_time": "2025-11-04T06:23:50",
            "upload_time_iso_8601": "2025-11-04T06:23:50.316354Z",
            "url": "https://files.pythonhosted.org/packages/56/7b/5fe69f56b6940035db915ce0b4a78c4e7e59a9b427d8b1724bb49dcba6a2/maxsim_fast-0.1.1-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fd8a4f6c5088ece15945900f9c436f63895d3097b7cc246ba00edbfab94b5635",
                "md5": "03fd141bb5d5d1889e751228713240a6",
                "sha256": "d44c80d3a79971209796a85db0947cd7660cc62b81bc2e53a071f00fd1dc5454"
            },
            "downloads": -1,
            "filename": "maxsim_fast-0.1.1-cp310-cp310-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "03fd141bb5d5d1889e751228713240a6",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 1022329,
            "upload_time": "2025-11-04T06:23:51",
            "upload_time_iso_8601": "2025-11-04T06:23:51.657014Z",
            "url": "https://files.pythonhosted.org/packages/fd/8a/4f6c5088ece15945900f9c436f63895d3097b7cc246ba00edbfab94b5635/maxsim_fast-0.1.1-cp310-cp310-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6dedfaf3ccc32d80e6ef7e47b86002b112a9d83ce0f5f68daf76401363c129f4",
                "md5": "d9d2dde52ba0a75b47b0efe3dce0cd3d",
                "sha256": "1f9e5251e46c1d75dba1174bbdd7f2e380e7ef1e8c0ccab34b817677be4f43da"
            },
            "downloads": -1,
            "filename": "maxsim_fast-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d9d2dde52ba0a75b47b0efe3dce0cd3d",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 232710,
            "upload_time": "2025-11-04T06:23:52",
            "upload_time_iso_8601": "2025-11-04T06:23:52.732396Z",
            "url": "https://files.pythonhosted.org/packages/6d/ed/faf3ccc32d80e6ef7e47b86002b112a9d83ce0f5f68daf76401363c129f4/maxsim_fast-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b8852d393c3a09e074d9f3ecfce20fd043d950d2ccdee9323cce4dc3af3e54e9",
                "md5": "7b5cd100b3c170a1b387168443163468",
                "sha256": "869118712b13c59bd1a65acb119c459b91003ade101b7a4828c46632f32edeaa"
            },
            "downloads": -1,
            "filename": "maxsim_fast-0.1.1-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "7b5cd100b3c170a1b387168443163468",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 215359,
            "upload_time": "2025-11-04T06:23:53",
            "upload_time_iso_8601": "2025-11-04T06:23:53.746685Z",
            "url": "https://files.pythonhosted.org/packages/b8/85/2d393c3a09e074d9f3ecfce20fd043d950d2ccdee9323cce4dc3af3e54e9/maxsim_fast-0.1.1-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "96f673dc23ba199c0fe7ba4d473d8074b9252c083da39f0cfbd16e7db8726c5d",
                "md5": "987063e66a8ec513f652975044acabde",
                "sha256": "bc655ed5f9a4b94f17706f0342e0f90f904ff19ebba1458a5c1e14eae935edbd"
            },
            "downloads": -1,
            "filename": "maxsim_fast-0.1.1-cp311-cp311-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "987063e66a8ec513f652975044acabde",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 1022328,
            "upload_time": "2025-11-04T06:23:55",
            "upload_time_iso_8601": "2025-11-04T06:23:55.124817Z",
            "url": "https://files.pythonhosted.org/packages/96/f6/73dc23ba199c0fe7ba4d473d8074b9252c083da39f0cfbd16e7db8726c5d/maxsim_fast-0.1.1-cp311-cp311-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a7ccb5ccd58ca8639ddf999f4c90920b83774abf673dcb8d29f90ec8e0344c6a",
                "md5": "a04116f1db73695399a69b30537b4e9c",
                "sha256": "d5ef4d3efbc8bbe8cd9be9996651196cae5bd8e51593cd923bca59f5d0e8814c"
            },
            "downloads": -1,
            "filename": "maxsim_fast-0.1.1-cp312-cp312-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a04116f1db73695399a69b30537b4e9c",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 232708,
            "upload_time": "2025-11-04T06:23:56",
            "upload_time_iso_8601": "2025-11-04T06:23:56.156446Z",
            "url": "https://files.pythonhosted.org/packages/a7/cc/b5ccd58ca8639ddf999f4c90920b83774abf673dcb8d29f90ec8e0344c6a/maxsim_fast-0.1.1-cp312-cp312-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "00ac2e56c0edfc51eea5e78e0d751bfda569ca5021db7a8cc10a4948f2192e4d",
                "md5": "c68e4c43716804659941d9b1062852b0",
                "sha256": "f79a2c56a5f9db204ba523ae0736221c994d9ecc84e19cc4b6af1c6a8c9915d9"
            },
            "downloads": -1,
            "filename": "maxsim_fast-0.1.1-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "c68e4c43716804659941d9b1062852b0",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 215357,
            "upload_time": "2025-11-04T06:23:57",
            "upload_time_iso_8601": "2025-11-04T06:23:57.455835Z",
            "url": "https://files.pythonhosted.org/packages/00/ac/2e56c0edfc51eea5e78e0d751bfda569ca5021db7a8cc10a4948f2192e4d/maxsim_fast-0.1.1-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ffb3994ce478532e64a161bc74dcf576d2ecf864d246dc2b27c8f98a9fc3da41",
                "md5": "1429c742db4c876f49274893d407a3c9",
                "sha256": "24ad6be4711cb1b78816948ffcdc5a9c8916702ce0d131dae1178a92ab80fc0d"
            },
            "downloads": -1,
            "filename": "maxsim_fast-0.1.1-cp312-cp312-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1429c742db4c876f49274893d407a3c9",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 1022329,
            "upload_time": "2025-11-04T06:23:58",
            "upload_time_iso_8601": "2025-11-04T06:23:58.492930Z",
            "url": "https://files.pythonhosted.org/packages/ff/b3/994ce478532e64a161bc74dcf576d2ecf864d246dc2b27c8f98a9fc3da41/maxsim_fast-0.1.1-cp312-cp312-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "de7b13cb8fbac51f128bc51a51f8139f905d760615719f0fed957dde25d7b8bf",
                "md5": "0c9f16290b6de5b24ec096795aa187f4",
                "sha256": "a765d936ddca732effbd6ba0ba306735d947ae746e406e5bbe5d74d8a79a2e88"
            },
            "downloads": -1,
            "filename": "maxsim_fast-0.1.1-cp313-cp313-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0c9f16290b6de5b24ec096795aa187f4",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 232709,
            "upload_time": "2025-11-04T06:23:59",
            "upload_time_iso_8601": "2025-11-04T06:23:59.847315Z",
            "url": "https://files.pythonhosted.org/packages/de/7b/13cb8fbac51f128bc51a51f8139f905d760615719f0fed957dde25d7b8bf/maxsim_fast-0.1.1-cp313-cp313-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f69fa4587ed5a8e41adcc7cae8918a913f4a3e86d94a862f04ffc6d900ef29a3",
                "md5": "53415df1da111a6a4550065a1a39d387",
                "sha256": "179583b4263895488b79685765963d0f8c2d6bc4902e5e0146bf0fae40cbd8ad"
            },
            "downloads": -1,
            "filename": "maxsim_fast-0.1.1-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "53415df1da111a6a4550065a1a39d387",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 215360,
            "upload_time": "2025-11-04T06:24:01",
            "upload_time_iso_8601": "2025-11-04T06:24:01.137686Z",
            "url": "https://files.pythonhosted.org/packages/f6/9f/a4587ed5a8e41adcc7cae8918a913f4a3e86d94a862f04ffc6d900ef29a3/maxsim_fast-0.1.1-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6aede041b5790cebba039aa3e66f0583e7d25a63d4790cb77b7a52d75d42e0a2",
                "md5": "00810f1b83071b1f7bb535d32838dd6a",
                "sha256": "cabe11c6a6ca5907b4aa33e144770734aab9a0684ce81b036e09687d7d22e094"
            },
            "downloads": -1,
            "filename": "maxsim_fast-0.1.1-cp313-cp313-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "00810f1b83071b1f7bb535d32838dd6a",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 1022328,
            "upload_time": "2025-11-04T06:24:02",
            "upload_time_iso_8601": "2025-11-04T06:24:02.177041Z",
            "url": "https://files.pythonhosted.org/packages/6a/ed/e041b5790cebba039aa3e66f0583e7d25a63d4790cb77b7a52d75d42e0a2/maxsim_fast-0.1.1-cp313-cp313-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "81158ba824c4afc255f27b802a66ae3b73c6e6fc4ec4fbcff2f1d9f8783bb53c",
                "md5": "7e8ac8293c5b6257d9e42fcbbd12806d",
                "sha256": "6086612779c414d2f1f2391163f207e7e9ffd666fde8a74f6d10e5b325069581"
            },
            "downloads": -1,
            "filename": "maxsim_fast-0.1.1-cp39-cp39-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7e8ac8293c5b6257d9e42fcbbd12806d",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 233005,
            "upload_time": "2025-11-04T06:24:03",
            "upload_time_iso_8601": "2025-11-04T06:24:03.289934Z",
            "url": "https://files.pythonhosted.org/packages/81/15/8ba824c4afc255f27b802a66ae3b73c6e6fc4ec4fbcff2f1d9f8783bb53c/maxsim_fast-0.1.1-cp39-cp39-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3fb6ca4baa7a54dac8a1300e9be5d1a7d07600ee5e265d15765915b4c3a11dcb",
                "md5": "e47dceff8fa31e834f6520d47d1595d8",
                "sha256": "990d89db4905443f93f6ee0f80227801bffc7b891c42e5ff8707024bdc4287b0"
            },
            "downloads": -1,
            "filename": "maxsim_fast-0.1.1-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "e47dceff8fa31e834f6520d47d1595d8",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 215538,
            "upload_time": "2025-11-04T06:24:04",
            "upload_time_iso_8601": "2025-11-04T06:24:04.571394Z",
            "url": "https://files.pythonhosted.org/packages/3f/b6/ca4baa7a54dac8a1300e9be5d1a7d07600ee5e265d15765915b4c3a11dcb/maxsim_fast-0.1.1-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "30acdfb743214c7554298b673691b568e90d842ab572623813bc530ee40f7936",
                "md5": "c1bc0260f5c9d5f94f4f4cf17d24ce96",
                "sha256": "8d606a23d49421b960fe141532f9053c899f95c9dd1be660cd5dd81495a8890c"
            },
            "downloads": -1,
            "filename": "maxsim_fast-0.1.1-cp39-cp39-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c1bc0260f5c9d5f94f4f4cf17d24ce96",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 1022604,
            "upload_time": "2025-11-04T06:24:05",
            "upload_time_iso_8601": "2025-11-04T06:24:05.878995Z",
            "url": "https://files.pythonhosted.org/packages/30/ac/dfb743214c7554298b673691b568e90d842ab572623813bc530ee40f7936/maxsim_fast-0.1.1-cp39-cp39-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-11-04 06:23:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "zhuwenxing",
    "github_project": "maxsim-cpu",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "maxsim-fast"
}
        
Elapsed time: 3.79501s