Documentation

Complexity.Algorithms.WordRAM.MatrixMultiplication.Schonhage.Product.Program

Actual producer, tile-kernel and reconstruction code #

Main definitions #

All three existing 96-register callees use the low bank. The caller's 64 additional registers retain its scalar layout and counters. Copying, initial directory clearing, header adaptation, raw-entry doubling, dispatch, reporting and restoration are real instructions. Supporting code definitions are exposed for execution proofs; they are implementation APIs.

Reuse each existing native program in the same low 96-register bank.

Instances For

    The unchanged copy routine uses the first seven low registers.

    Instances For
      @[reducible, inline]

      Persistent caller depth.

      Instances For
        @[reducible, inline]

        Original inner depth, determining the shared dimension 4^m.

        Instances For
          @[reducible, inline]

          Original outer matrix dimension.

          Instances For
            @[reducible, inline]

            Number of original request occurrences, including duplicates.

            Instances For
              @[reducible, inline]

              Computed shared dimension 4^m.

              Instances For
                @[reducible, inline]

                Number of masks visited by the actual subset-table scan.

                Instances For
                  @[reducible, inline]

                  Number of cells in each padded band array.

                  Instances For
                    @[reducible, inline]

                    Number of leaf entries in each shared encoding.

                    Instances For
                      @[reducible, inline]

                      Computed number of row bands, also used for column bands.

                      Instances For
                        @[reducible, inline]

                        Number of tile calls, the square of the band count.

                        Instances For
                          @[reducible, inline]

                          Length of the complete original memory prefix, including word zero.

                          Instances For
                            @[reducible, inline]

                            Protected snapshot pointer used to restore the original input.

                            Instances For
                              @[reducible, inline]

                              Protected copy of the router's immutable prefix offsets.

                              Instances For
                                @[reducible, inline]

                                Protected copy of the actual grouped query codes.

                                Instances For
                                  @[reducible, inline]

                                  Protected permutation from grouped positions to original occurrence indices.

                                  Instances For
                                    @[reducible, inline]

                                    Base of the grouped answers written by tile calls.

                                    Instances For
                                      @[reducible, inline]

                                      Base of the reconstructed original-order answers, returned by halt.

                                      Instances For
                                        @[reducible, inline]

                                        Base of reusable pruned-kernel stack and cache space.

                                        Instances For
                                          @[reducible, inline]

                                          Base of the timestamp directory shared by all tiles.

                                          Instances For
                                            @[reducible, inline]

                                            One past the complete caller and kernel allocation.

                                            Instances For
                                              @[reducible, inline]

                                              Returned kernel epoch propagated to the next tile.

                                              Instances For
                                                @[reducible, inline]

                                                Current tile, directory-entry or reporting-loop index.

                                                Instances For
                                                  @[reducible, inline]

                                                  First grouped position of the current tile's actual span.

                                                  Instances For
                                                    @[reducible, inline]

                                                    One past the last grouped position of the current tile.

                                                    Instances For
                                                      @[reducible, inline]

                                                      Row band computed by division of the current tile key.

                                                      Instances For
                                                        @[reducible, inline]

                                                        Column band computed by remainder of the current tile key.

                                                        Instances For
                                                          @[reducible, inline]

                                                          Actual shared left-encoding pointer for the current tile.

                                                          Instances For
                                                            @[reducible, inline]

                                                            Actual shared right-encoding pointer for the current tile.

                                                            Instances For
                                                              @[reducible, inline]

                                                              Actual grouped-query pointer passed to the kernel.

                                                              Instances For
                                                                @[reducible, inline]

                                                                Current grouped-answer pointer passed to the kernel.

                                                                Instances For
                                                                  @[reducible, inline]

                                                                  Source pointer supplied to a real native copy.

                                                                  Instances For
                                                                    @[reducible, inline]

                                                                    Destination pointer supplied to a real native copy.

                                                                    Instances For
                                                                      @[reducible, inline]

                                                                      Number of words supplied to a real native copy.

                                                                      Instances For
                                                                        @[reducible, inline]

                                                                        Temporary address for scalar loads, stores and reporting.

                                                                        Instances For
                                                                          @[reducible, inline]

                                                                          Temporary loaded matrix value, answer or original-position index.

                                                                          Instances For
                                                                            @[reducible, inline]

                                                                            Persistent unsigned zero.

                                                                            Instances For
                                                                              @[reducible, inline]

                                                                              Persistent loop-increment constant one.

                                                                              Instances For
                                                                                @[reducible, inline]

                                                                                Persistent multiplier two for raw-to-signed conversion.

                                                                                Instances For
                                                                                  @[reducible, inline]

                                                                                  Persistent constant four for header offsets and kernel stack sizing.

                                                                                  Instances For
                                                                                    @[reducible, inline]

                                                                                    First original matrix-payload address, immediately after the four headers.

                                                                                    Instances For
                                                                                      @[reducible, inline]

                                                                                      Persistent constant six used in the computed router allocation.

                                                                                      Instances For
                                                                                        @[reducible, inline]

                                                                                        Total word count of both original matrix payloads.

                                                                                        Instances For
                                                                                          @[reducible, inline]

                                                                                          Original coordinate-pair block address.

                                                                                          Instances For
                                                                                            @[reducible, inline]

                                                                                            One past the actual router allocation.

                                                                                            Instances For
                                                                                              @[reducible, inline]

                                                                                              One past the shared-band producer allocation.

                                                                                              Instances For
                                                                                                @[reducible, inline]

                                                                                                Temporary product used while computing separated buffer addresses.

                                                                                                Instances For
                                                                                                  @[reducible, inline]

                                                                                                  Base of the producer's shared two-sided encoding catalogue.

                                                                                                  Instances For
                                                                                                    @[reducible, inline]

                                                                                                    Persistent constant three used in the router allocation.

                                                                                                    Instances For

                                                                                                      Compute genuine band scalars before selecting a protected caller area. No memory writes.

                                                                                                      Instances For

                                                                                                        Preserve the computed original parameters and calculate every caller buffer address.

                                                                                                        Instances For

                                                                                                          Real argument setup followed by the unchanged dynamic-length native copy.

                                                                                                          Instances For

                                                                                                            Save the entire ordinary input, including its length word and coordinate list.

                                                                                                            Instances For

                                                                                                              Put the original raw coordinate pairs in the actual Wanted input convention.

                                                                                                              Instances For

                                                                                                                Save every computed tile offset, including the terminal offset.

                                                                                                                Instances For

                                                                                                                  Preserve the computed arrays before the band producer reuses the low work area.

                                                                                                                  Instances For

                                                                                                                    One actual load, unsigned doubling and store converts a raw 0/1 matrix entry.

                                                                                                                    Instances For

                                                                                                                      Copy real matrix words into the band producer's adjacent front input blocks. The bit-input variant executes the conversion instruction at every entry.

                                                                                                                      Instances For

                                                                                                                        Initialize the one timestamp directory by actual stores, once for the entire product.

                                                                                                                        Instances For

                                                                                                                          Load actual group endpoints and compute both shared catalogue pointers and kernel ABI.

                                                                                                                          Instances For

                                                                                                                            One real pruned-kernel call, with the returned epoch propagated to the next tile.

                                                                                                                            Instances For

                                                                                                                              Compute all tiles from the actual group arrays; the zero-tile case never divides by zero.

                                                                                                                              Instances For

                                                                                                                                Read one actual original index and scatter its computed answer into request order.

                                                                                                                                Instances For

                                                                                                                                  Every original occurrence is reconstructed by charged native reads and stores.

                                                                                                                                  Instances For

                                                                                                                                    Restore the complete actual input after all private low-memory reuse has finished.

                                                                                                                                    Instances For

                                                                                                                                      Complete actual routing preparation and protected preservation of the original input.

                                                                                                                                      Instances For

                                                                                                                                        The complete fixed producer/consumer program. bits=false takes canonical signed matrix words; bits=true takes raw unsigned 0/1 words and performs actual per-entry doubling.

                                                                                                                                        Instances For