Struct arrow::ipc::gen::SparseTensor::SparseTensorIndexCSF[][src]

pub struct SparseTensorIndexCSF<'a> {
    pub _tab: Table<'a>,
}
Expand description

Compressed Sparse Fiber (CSF) sparse tensor index.

Fields

_tab: Table<'a>

Implementations

CSF is a generalization of compressed sparse row (CSR) index. See smith2017knl

CSF index recursively compresses each dimension of a tensor into a set of prefix trees. Each path from a root to leaf forms one tensor non-zero index. CSF is implemented with two arrays of buffers and one arrays of integers.

For example, let X be a 2x3x4x5 tensor and let it have the following 8 non-zero values:

  X[0, 0, 0, 1] := 1
  X[0, 0, 0, 2] := 2
  X[0, 1, 0, 0] := 3
  X[0, 1, 0, 2] := 4
  X[0, 1, 1, 0] := 5
  X[1, 1, 1, 0] := 6
  X[1, 1, 1, 1] := 7
  X[1, 1, 1, 2] := 8

As a prefix tree this would be represented as:

        0          1
       / \         |
      0   1        1
     /   / \       |
    0   0   1      1
   /|  /|   |    /| |
  1 2 0 2   0   0 1 2

The type of values in indptrBuffers

indptrBuffers stores the sparsity structure. Each two consecutive dimensions in a tensor correspond to a buffer in indptrBuffers. A pair of consecutive values at indptrBuffers[dim][i] and indptrBuffers[dim][i + 1] signify a range of nodes in indicesBuffers[dim + 1] who are children of indicesBuffers[dim][i] node.

For example, the indptrBuffers for the above X is:

  indptrBuffer(X) = [
                      [0, 2, 3],
                      [0, 1, 3, 4],
                      [0, 2, 4, 5, 8]
                    ].

The type of values in indicesBuffers

indicesBuffers stores values of nodes. Each tensor dimension corresponds to a buffer in indicesBuffers. For example, the indicesBuffers for the above X is:

  indicesBuffer(X) = [
                       [0, 1],
                       [0, 1, 1],
                       [0, 0, 1, 1],
                       [1, 2, 0, 2, 0, 0, 1, 2]
                     ].

axisOrder stores the sequence in which dimensions were traversed to produce the prefix tree. For example, the axisOrder for the above X is:

  axisOrder(X) = [0, 1, 2, 3].

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Runs the verifier for this type, assuming its at position pos in the verifier’s buffer. Should not need to be called directly. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.