Skip to main content

Einsum tree operations.

Project description

The etops package provides a Python interface for the Tiled Execution IR (TEIR). It enables users to define, configure, optimize, and execute complex tensor contractions and elementwise operations. The package is built on top of the einsum_ir C++ backend and exposes advanced features such as dimension fusion, dimension splitting, and backend-specific optimizations.

Main Features

  • Abstractions for tensor operations and configuration

  • Support for multiple data types (float32, float64)

  • Primitive operations: zero, copy, relu, gemm, brgemm, etc.

  • Dimension execution strategies: primitive, sequential, shared, space-filling curve (SFC)

  • Dimension and stride configuration for advanced memory layouts

  • Interface for built-in contraction optimizer

  • Pythonic API with dataclass-based configuration

Installation

Install the package using pip:

pip install etops

Unary Examples

Below are some examples showing how to configure and execute unary tensor operations:

import etops

# ---------------------------------------
# First example:
#   Matrix transpose using copy primitive
#   Compares the result with NumPy
# ---------------------------------------
# Define a transpose configuration
top_config = etops.TensorOperationConfig(
    backend    =   "tpp",
    data_type  =   etops.float32,
    prim_first =   etops.prim.none,
    prim_main  =   etops.prim.copy,
    prim_last  =   etops.prim.none,
    dim_types  =   (etops.dim.c,     etops.dim.c    ),
    exec_types =   (etops.exec.prim, etops.exec.prim),
    dim_sizes  =   (3,               4              ),
    strides    = (((4,               1               ),   # in
                   (1,               3               )),) # out
)

# Create the TensorOperation instance
top = etops.TensorOperation(top_config)

# Create input and output arrays
import numpy as np
A = np.random.randn(3,4).astype(np.float32)
B = np.random.randn(4,3).astype(np.float32)

top.execute(A, None, B)

B_np = np.einsum("ij->ji", A)

# Check correctness
error_abs = np.max( np.abs(B - B_np) )
print("Matrix Transpose using copy primitive:")
print(f"  Max absolute error: {error_abs:.6e}")

# -------------------------------------------------
# Second example:
#   Permutation of a 4D tensor using copy primitive
#   Compares the result with NumPy
# -------------------------------------------------
# Define a permutation configuration
perm_config = etops.TensorOperationConfig(
    backend     =   "tpp",
    data_type   =   etops.float32,
    prim_first  =   etops.prim.none,
    prim_main   =   etops.prim.copy,
    prim_last   =   etops.prim.none,
    dim_types   =   (etops.dim.c,    etops.dim.c,     etops.dim.c,     etops.dim.c    ),
    exec_types  =   (etops.exec.seq, etops.exec.seq,  etops.exec.prim, etops.exec.prim),
    dim_sizes   =   (2,              4,               3,               5              ),
    strides     = (((3*4*5,          5,               4*5,             1              ),   # in
                    (3,              2*3,             1,               4*2*3          )),) # out
)

# Create the TensorOperation instance
perm_op = etops.TensorOperation(perm_config)

# Create input and output arrays
A = np.random.randn(2,3,4,5).astype(np.float32)
B = np.random.randn(5,4,2,3).astype(np.float32)

perm_op.execute(A, None, B)

B_np = np.einsum("abcd->dcab", A)

# Check correctness
error_abs = np.max( np.abs(B - B_np) )
print("4D Tensor Permutation using copy primitive:")
print(f"  Max absolute error: {error_abs:.6e}")

# -------------------------------------------------
# Third example:
#   Permutation of a 4D tensor using copy primitive
#   Uses the built-in optimization routine
#   Compares the result with NumPy
# -------------------------------------------------
perm_config = etops.TensorOperationConfig(
    data_type   =   etops.float32,
    prim_first  =   etops.prim.none,
    prim_main   =   etops.prim.copy,
    prim_last   =   etops.prim.none,
    dim_types   =   (etops.dim.c,    etops.dim.c,     etops.dim.c,    etops.dim.c   ),
    exec_types  =   (etops.exec.seq, etops.exec.seq,  etops.exec.seq, etops.exec.seq),
    dim_sizes   =   (2,              4,               3,              5             ),
    strides     = (((3*4*5,          5,               4*5,            1             ),   # in
                    (3,              2*3,             1,              4*2*3         )),) # out
)

# Use default optimization config
optimized_config = etops.optimize(perm_config)

# Create the TensorOperation instance
perm_op = etops.TensorOperation(optimized_config)

# Create input and output arrays
A = np.random.randn(2,3,4,5).astype(np.float32)
B = np.random.randn(5,4,2,3).astype(np.float32)

# Execute the operation
perm_op.execute(A, None, B)

B_np = np.einsum("abcd->dcab", A)

# Check correctness
error_abs = np.max( np.abs(B - B_np) )
print("4D Tensor Permutation using optimized copy primitive:")
print(f"  Max absolute error: {error_abs:.6e}")

Binary Examples

Below are some examples showing how to configure and execute binary tensor operations:

import etops

# -----------------------------------------
# First example:
#   Column-major GEMM operation
#   Compares the result with NumPy's einsum
# -----------------------------------------
# Define a column-major GEMM configuration
top_config = etops.TensorOperationConfig(
    backend    =   "tpp",
    data_type  =   etops.float32,
    prim_first =   etops.prim.zero,
    prim_main  =   etops.prim.gemm,
    prim_last  =   etops.prim.none,
    dim_types  =   (etops.dim.m,     etops.dim.n,     etops.dim.k    ),
    exec_types =   (etops.exec.prim, etops.exec.prim, etops.exec.prim),
    dim_sizes  =   (64,              32,              128            ),
    strides    = (((1,               0,               64             ),   # in0
                   (0,               128,             1              ),   # in1
                   (1,               64,              0              )),) # out
)

# Create the TensorOperation instance
top = etops.TensorOperation(top_config)

# Create input and output arrays
import numpy as np
A = np.random.randn(128,64).astype(np.float32)
B = np.random.randn(32,128).astype(np.float32)
C = np.random.randn(32, 64).astype(np.float32)

# Execute the operation
top.execute(A, B, C)

C_np = np.einsum("km,nk->nm", A, B)

# Compute absolute and relative errors
error_abs = np.max( np.abs(C - C_np) )
error_rel = np.max( np.abs(C - C_np) / (np.abs(C_np) + 1e-8) )
print("Column-major GEMM operation:")
print(f"  Max absolute error: {error_abs:.6e}")
print(f"  Max relative error: {error_rel:.6e}")

# -----------------------------------------
# Second example:
#   Batched GEMM operation
#   Compares the result with torch's einsum
# -----------------------------------------
# Define a batched GEMM configuration
batched_config =    etops.TensorOperationConfig(
    backend    =    "tpp",
    data_type  =    etops.float32,
    prim_first =    etops.prim.zero,
    prim_main  =    etops.prim.gemm,
    prim_last  =    etops.prim.none,
    dim_types  =   (etops.dim.c,       etops.dim.m,     etops.dim.n,     etops.dim.k    ),
    exec_types =   (etops.exec.shared, etops.exec.prim, etops.exec.prim, etops.exec.prim),
    dim_sizes  =   (48,                64,              32,              128            ),
    strides    = (((128*64,            1,               0,               64             ),   # in0
                   (32*128,            0,               128,             1              ),   # in1
                   (32*64,             1,               64,              0              )),) # out
)
# Create the batched TensorOperation instance
top = etops.TensorOperation(batched_config)

import torch
# Create input and output arrays
A = torch.randn(48, 128, 64, dtype=torch.float32)
B = torch.randn(48, 32, 128, dtype=torch.float32)
C = torch.randn(48, 32, 64,  dtype=torch.float32)

# Execute the operation
top.execute(A, B, C)

C_torch = torch.einsum("bkm,bnk->bnm", A, B)

# Compute absolute and relative errors
error_abs = torch.max(torch.abs(C - C_torch))
error_rel = torch.max(torch.abs(C - C_torch) / (torch.abs(C_torch) + 1e-8))

print("Batched GEMM operation:")
print(f"  Max absolute error: {error_abs:.6e}")
print(f"  Max relative error: {error_rel:.6e}")

#--------------------------------------------
# Third example:
#   GEMM operation with row-major first input
#   packed to column-major
#   Compares the result with NumPy's einsum
# -------------------------------------------

# Define a row-major GEMM configuration with packing
top_config = etops.TensorOperationConfig(
    backend    =   "tpp",
    data_type  =   etops.float32,
    prim_first =   etops.prim.zero,
    prim_main  =   etops.prim.gemm,
    prim_last  =   etops.prim.none,
    dim_types  =   (etops.dim.m,     etops.dim.n,     etops.dim.k    ),
    exec_types =   (etops.exec.prim, etops.exec.prim, etops.exec.prim),
    dim_sizes  =   (64,              32,              128            ),
    strides    = (((1,               0,               64             ),   # in 0
                   (0,               128,             1              ),   # in 1
                   (1,               64,              0              )),  # out
                  ((128,             0,               1              ),   # packing in 0
                   (0,               0,               0              ),   # packing in 1
                   (0,               0,               0              )),) # packing out
)

# Create the TensorOperation instance
top = etops.TensorOperation(top_config)

# Create input and output arrays
import numpy as np
A = np.random.randn(64,128).astype(np.float32)
B = np.random.randn(32,128).astype(np.float32)
C = np.random.randn(32, 64).astype(np.float32)

# Execute the operation
top.execute(A, B, C)

A_T = np.transpose(A)
C_np = np.einsum("km,nk->nm", A_T, B)

# Compute absolute and relative errors
error_abs = np.max( np.abs(C - C_np) )
error_rel = np.max( np.abs(C - C_np) / (np.abs(C_np) + 1e-8) )
print("GEMM operation with packing:")
print(f"  Max absolute error: {error_abs:.6e}")
print(f"  Max relative error: {error_rel:.6e}")

# -----------------------------------------------
# Fourth example:
#   Batch-reduce GEMM operation with optimization
#   Compares the result with torch's einsum
# -----------------------------------------------
# Define a batch-reduce GEMM configuration
batched_config =   etops.TensorOperationConfig(
    data_type  =   etops.float32,
    prim_first =   etops.prim.zero,
    prim_main  =   etops.prim.gemm,
    prim_last  =   etops.prim.none,
    dim_types  =   (etops.dim.k,    etops.dim.m,    etops.dim.n,    etops.dim.k   ),
    exec_types =   (etops.exec.seq, etops.exec.seq, etops.exec.seq, etops.exec.seq),
    dim_sizes  =   (48,             64,             32,             128           ),
    strides    = (((128*64,         1,              0,              64            ),   # in0
                   (32*128,         0,              128,            1             ),   # in1
                   (0,              1,              64,             0             )),) # out
)

# Optimize the configuration
optimized_config = etops.optimize(
    batched_config,
    {
        "target_m":            16,
        "target_n":            12,
        "target_k":            64,
        "num_threads":         4,
        "br_gemm_support":     True,
        "packed_gemm_support": True
    }
)

# Create the optimized TensorOperation instance
top = etops.TensorOperation(optimized_config)

import torch
# Create input and output arrays
A = torch.randn(48, 128, 64, dtype=torch.float32)
B = torch.randn(48, 32, 128, dtype=torch.float32)
C = torch.randn(    32, 64,  dtype=torch.float32)

# Execute the operation
top.execute(A, B, C)

C_torch = torch.einsum("bkm,bnk->nm", A, B)

# Compute absolute and relative errors
error_abs = torch.max(torch.abs(C - C_torch))
error_rel = torch.max(torch.abs(C - C_torch) / (torch.abs(C_torch) + 1e-8))
print("Batch-reduce GEMM operation:")
print(f"  Max absolute error: {error_abs:.6e}")
print(f"  Max relative error: {error_rel:.6e}")

See the source code and inline documentation for more advanced usage.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

etops_nightly-25.11.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

etops_nightly-25.11.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

etops_nightly-25.11.0-cp314-cp314t-macosx_14_0_arm64.whl (713.3 kB view details)

Uploaded CPython 3.14tmacOS 14.0+ ARM64

etops_nightly-25.11.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

etops_nightly-25.11.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

etops_nightly-25.11.0-cp314-cp314-macosx_14_0_arm64.whl (704.0 kB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

etops_nightly-25.11.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

etops_nightly-25.11.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

etops_nightly-25.11.0-cp313-cp313-macosx_14_0_arm64.whl (703.5 kB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

etops_nightly-25.11.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

etops_nightly-25.11.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

etops_nightly-25.11.0-cp312-cp312-macosx_14_0_arm64.whl (703.5 kB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

etops_nightly-25.11.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

etops_nightly-25.11.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

etops_nightly-25.11.0-cp311-cp311-macosx_14_0_arm64.whl (702.3 kB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

etops_nightly-25.11.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

etops_nightly-25.11.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

etops_nightly-25.11.0-cp310-cp310-macosx_14_0_arm64.whl (700.7 kB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

etops_nightly-25.11.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

etops_nightly-25.11.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

etops_nightly-25.11.0-cp39-cp39-macosx_14_0_arm64.whl (700.8 kB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

etops_nightly-25.11.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

etops_nightly-25.11.0-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

File details

Details for the file etops_nightly-25.11.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 72797997b586b8d807bdeb9eafc651219abd11deb5e35dba70e82b499a1290da
MD5 a70626274e7a4cb3bd10e8b608c451a8
BLAKE2b-256 a88faf312115bf6583a8306f6a9fe58670556a51454b89fa70ff50e484e916e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3c705dfd8703bd9ae53bcb700ade1b05222fb1ffcb649c67b4ed5cf2e7d79dda
MD5 3613c21b1a87f39653b0bae0b6031045
BLAKE2b-256 a0f2783942854a3302705bca162201b6022ffd7bc014f92cf1ef1318fcd645a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp314-cp314t-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp314-cp314t-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a27b2d6c0a1f5d51ea85c1dfe5c0dcb926f71763e3013124b07999a4916e9900
MD5 f3a94df9e7f220f40db6650fe5226156
BLAKE2b-256 f12e89e470ee880ed9768894e79e90312b4327eff9a486b36fbd80c3cf03a519

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp314-cp314t-macosx_14_0_arm64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ee185f32e461a82fa994a70931bead9621f0422d5c088ebe8b93f876d91ecff3
MD5 af417662dc6de479025552cc04787aff
BLAKE2b-256 27659a485c6120444d5fb2a493abdeb00aef8d3c30a7eae6e775b96d3424dbf0

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c896d591fd3c74dcaed82d7da61d30bf26c44aeb0361adaf85c04aab59079a95
MD5 483df639c0364cf809847f1f1e7950ba
BLAKE2b-256 cdd9a6a46af42ee1abd8fdbeaa7ac5ed0d2ba97f820dcfed64235205791dce59

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 c535cfae0d00211c0b15b8d4e45bdd59c8d281aea4c52b4aad4e8ebe49473349
MD5 c9bb877f5d17d99140f327736a671acf
BLAKE2b-256 cca6c8a329426bc82e527179833bf0f4161ce35d5c8243bd31cc57750416a3a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp314-cp314-macosx_14_0_arm64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7ef28e528786f485a0dd0b56fb8db6c48a59444b1b4ae068a6c1df2744bbdbe2
MD5 7d030b39362cda73c9243a9011508a3f
BLAKE2b-256 bcae734b3f93f95d642d87174a903424916065feb6b21979bc372d1d62641a15

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 89a4677d3ed22705b5b7d05a3bf64b6aafd57168c672e4e764d946200744d7b3
MD5 97117e2f11274ed6595bd1eb6d85e40b
BLAKE2b-256 fa52c69d2971b47566d1016aae611256abcf4f8d2e3fab18b344a985cb86b9d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 4e9acb19f7d17cac1c827542dbaf96e476c44382fb7ab9e289a069f7ebf7874d
MD5 5ad62e7d2f0b43490e2623e1b66b16ed
BLAKE2b-256 aba6fff2e0b3516c382d8bb52cb38381d5a1397b923b53f9a0c56067917cbc59

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp313-cp313-macosx_14_0_arm64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 056f1cd5bb1e692c233c31fa6bea57ea732428ffdb05b0534d67db0cb489149b
MD5 0971071e6342e91bae40e30e473ffb01
BLAKE2b-256 6acce24d38b32bed743a74dcd5d20a209bffcf274ef00f4198378e55defef9b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7c2c49bb375785d5540e0678c995fe4c47ad9be06110f9a85585c747d5d5c930
MD5 c7867e08c3730f517e8eef311f0dee1a
BLAKE2b-256 0371bc7953af4eafded2ce1f676f3cb5fdb98eeb3cce9f2c334071410df37f60

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 520349c69753c1d36765bc492377bb004cafd26cab75e680ee4f0248baa6403b
MD5 10df934749742b7dd8b872a6a0ea87b5
BLAKE2b-256 3fc572e398f0a6fb89c69c890cca5cd34ea6c3a58e5e8546521af5ff2ad35f82

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp312-cp312-macosx_14_0_arm64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4fac5d2a808d375c331664c327fefe59a8c0225ed398b2ff6e4d5f99e2c4895f
MD5 8208ac9f995b5d3546ea811547956032
BLAKE2b-256 b17f3d12fa7fdced2777fa84a845ec985bc0ce25a78a9dcc43f0b66673d6b173

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e28ede06cd1b2d560929802bfdda7793e0f171ca4ff6271a42ed2797cd675e01
MD5 0a5c3aaa2f6c5b6d99709023a3b9c013
BLAKE2b-256 2621efd0b5fc78c4ae59604f733366da9d5a26e946c17bacf31667b2e1807773

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 7fa1538edacb5a681f8cbfb2fe6fc0bed68c2e443d480e586d76febcbc94c97a
MD5 745987169e2e560f82846418ff18410d
BLAKE2b-256 fa94d89e985f6d010f5139f0f0a689b053bfcb9e17740d45fb9245ee033665bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp311-cp311-macosx_14_0_arm64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cd5cb9ea005275c693af66f187b04a6b0cd7532eaa7e391308f312ad9fa86bd2
MD5 e06c7435e1c94cb3213cc57f54f33a35
BLAKE2b-256 8bf2757d5ea04c570c021e3318c27b62d11bbc5f872b4343cc912797459ee920

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f744d569383bf8f3281469094033f5a49b8a274bd10e4e516412abef61e58400
MD5 0b551f08bf940d94a98cf3cbcf16a913
BLAKE2b-256 7d7f23b2cf39a38e7c3586cefde088248ab93c2299da65784ff167584abdcc5b

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 4563713921470f92b251da91e60307adf64aafe8adf65b49d510a3642a1ea41c
MD5 74693e4a05a8e4bd2a67974eace4bfd0
BLAKE2b-256 b3776c5448aff479e1ce3ef9f859f3aa5e42a26894b0d595517745d1a533d4da

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp310-cp310-macosx_14_0_arm64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e6db376fe11a2980804e4870f1116f8978ad32f311d9942bd2e74f3b6be01c60
MD5 c24cc272cc88e65118d77280651984d7
BLAKE2b-256 7c431ce97477c837681daa488502975498843aa8baee2ba409445e3d86216b1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8a07236f36c38365ab5621ecaa68e385c0a75df45d675d24811f0c8b4db85099
MD5 d2f39bfe15af831477ee40c55f26e43d
BLAKE2b-256 9ca28f00d5ff03c28d682bf5be765c14fc9dc153c70913687f77cd989332cf92

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 acd53af16922cc25ed1a7ce3ef2825b7a5b4687429619f2adc432a076908dc10
MD5 7d8bba499c3baefb3f2f6f0bee38938a
BLAKE2b-256 b7331c2e2872341e4992d0d0930a1433c73a5922c59ba7ba8f1df1fa5a69d485

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp39-cp39-macosx_14_0_arm64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e997e882390d057e26c88f9204437df5303ac584709859d72af2776fe7bcd545
MD5 d53a9c58a203f3cb8831f54f26036e3a
BLAKE2b-256 b30c2941fd4d2a8389667c0c388e343668cce81f38616ee707395db9a9e8f7bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file etops_nightly-25.11.0-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for etops_nightly-25.11.0-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ca298ee59eaf4902ab48e351ffd76d197e801e44d972767242bc2597a3f56847
MD5 78f7ee3c1d639382469d4641baf3a09d
BLAKE2b-256 1d99cf0b5267fac82294b29d8a23d7108faa2860bd876620f5f60c4c334a78a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for etops_nightly-25.11.0-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: pypi.yml on scalable-analyses/einsum_ir

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page