[Libre-soc-bugs] [Bug 713] PartitionedSignal enhancement to add partition-context-aware lengths

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Sun Oct 10 11:51:40 BST 2021


https://bugs.libre-soc.org/show_bug.cgi?id=713

--- Comment #60 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Jacob Lifshay from comment #58)
> (In reply to Luke Kenneth Casson Leighton from comment #56)
> > i am still mulling over how and whether Par...^W SimdSignal
> > can be adapted to support elwidths but also as a default
> > option create full power-2 partitions and cover all
> > permutations currently covered by PartitionedSignal.
> 
> oh, well all permutations currently covered by PartitionedSignal (at least
> add/sub/logic-ops) are waay more than just the aligned, power-of-2 lanes.

yes, i know.  that's covered in
https://libre-soc.org/3d_gpu/architecture/dynamic_simd/shape/

and it is covered by the enhancements to the layout() adapter function
i describe in comment #53.

the example in the (new) wiki page is a cleanup of the example in comment #2

there are actually NINE (nine!) underlying partition points created by
that innocuous-looking example.

so it looks like we need a completely insane 2^9 (512) permutations, right?

wrong.

there are only three in that example.

* elwidth=32
* elwidth=16
* elwidth=8

and that's where the adapter comes into play.  it defines what the switch
is, it defines the cases.

you DO NOT need a switch taking a 9-bit input

you DO NOT need a massive batch of 512 case statements

i wrote an adapter which covers the existing PartitionedSignal behaviour:
please take a look at the patches 
from comment #56 to understand it.

the "Elwdith" adapter is conceptually finished as well, based on the
code in comment #53.


> This may take a little more work to decode, and be more wires for
> part_starts, but it covers everything that both the simd_signal code I wrote
> and the layout() in comment #20 can do. it covers everything PartitionPoints
> can do, too,

jacooob: we're *not* throwing away code, we're *adapting* and slowly morphing
*existing* code, one incremental step at a time.

this is the project's base-line operating protocol

this means that we go from one known-tested to another known-tested
without scaring ourselves by taking on too much.

it does mean however that you need to have a full working knowledge of
the *existing* design.


> though we'll probably still want to restrict lanes to be
> aligned,

the Elwidth adapter from comment #53 is predicated on the fundamental
assumption that all elements start on power-two boundaries, yes.

> simd_signal.SimdPartMode.is_valid can be adapted to create a circuit used to
> feed into an Assume to get only valid part_starts combinations (checks that
> lanes are sized correctly, and are aligned correctly).

you're confusing me with a new design when my entire mindset is focussed
on the existing design.

if you describe things to me in terms of how the EXISTING design is
code-morphed *INTO* the proposed new design - not replaced by - CHANGED INTO -
i will be able to understand.

feet on the ground, jacob.

rename is done, btw.

commit df93b8f37bea53917d67e87ce2190981bc2ef667 (HEAD -> master, origin/master)
Author: Luke Kenneth Casson Leighton <lkcl at lkcl.net>
Date:   Sun Oct 10 11:35:20 2021 +0100

    big rename PartitionedSignal to SimdSignal (shorter)

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the libre-soc-bugs mailing list