[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
Sat Oct 9 02:14:32 BST 2021


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

--- Comment #49 from Jacob Lifshay <programmerjake at gmail.com> ---
(In reply to Jacob Lifshay from comment #43)
> (In reply to Luke Kenneth Casson Leighton from comment #40)
> > (In reply to Jacob Lifshay from comment #36)
> > > we can deduplicate expressions ourselves pretty easily:
> > 
> > ooo niiiice, that's really valuable and exciting.
> > 
> > i bet a similar trick would be possible to deploy for autocreating
> > intermediary temporary Signals.
> > 
> > can you drop this into nmutil?
> 
> sure! Python's GC just had a heart-attack at the sight of it, but oh well.
> Good thing we don't have long-running programs that need PartitionedSignal.

Added:
https://git.libre-soc.org/?p=nmutil.git;a=commitdiff;h=fbb284ecf93ead5d748f9c19e5b1b899a06c6b55

I also added support for having globals go into the key, since we need to
include the scoped globals there:

my_global = 42

@deduped(global_keys=[lambda: my_global])
def fn_with_global(a, *, b=1):
    ...

so we could use it like:

class PartitionedSignal(...):
    ...
    @deduped(global_keys=[get_simd_scope_values])
    def __add__(self, rhs):
        ...
    ...

though to improve deduping, we may want to do:
class PartitionedSignal(...):
    ...
    @staticmethod
    @deduped(global_keys=[get_simd_scope_values])
    def _do_add_impl(*args):
        # put __add__ and __radd__'s guts here

    @staticmethod
    def _do_add(*args):
        args = list(args)
        # consistent argument order to handle commutativity
        args.sort(key=id)
        return PartitionedSignal._do_add_impl(*args)

    def __add__(self, other):
        return PartitionedSignal._do_add(self, other)

    def __radd__(self, other):
        return PartitionedSignal._do_add(other, self)

    ...


I also added support for opportunistically using weakref.

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


More information about the libre-soc-bugs mailing list