ODT with pictures, and plain text with cryptic notes as normal =)

Calc Parallel Review call minutes 2017-11-15

Present
        Dennis, Eike, Michael, Tor, Mike Kaganski
Commits
        NumberFormatter (Eike)
                expensive to create one of these per thread
                constructing a default formatter doesn’t copy
                        the used-formats from the documents formatter
                better to use the flag that we’re doing threaded calc
                        use a mutex in the GetFormatTable
                        otherwise don’t use a mutex.
                        Return the normal document formatter number pointer.
                                Should be faster.
                Interpreter – rarely used …
                        final result is obtained – set number format if it was 
general.
                Also not working – can’t get the cell formats through the newly 
created formatter.
                        Would fail for ‘IsNumber’ etc.
        Concerned wrt. Ove-ruse of cell formats (Michael)
                nervous about its use.
                if change when calculating it is pushed through
                Excel doesn’t do this.
                This is now expected by users (Eike)
                        yes formula construction.
        sc/source/core/data/formulacell.cxx
                SvNumberFormatter – is the class that needs locking.
                        => better to make this actually thread-safe …
                started to look at the places where it is used (Dennis)
                        not sure why the crash happens when it is shared.
AI:             add mutex’s to SvNumberFormatter (Dennis)

        Avoid SvTokenArray thrash
                re-using some token pointers – for string/double.
                        Does not work; can’t assign content to a token of a 
different type.
                        Should put asserts in the virtual base methods.
                Huge cost of old mhu allocator, and the token re-use work.
AI:                     check whether we free MemoryPools en-masse (Michael)
                in concept ok – but need to only re-using the same type (Eike)

                Problematic pieces here – where type is different.              
        
AI:             if ( pTargetTok && pTargetTok→type != string)  (Dennis)
                        then replace 
                else
                        new token time …

        GetFormatTable assert …
                hit under some circumstances ? … stopped in debugger & 
continued.
                Concerning → … chase that.

        Propose – on by default through betas  (Michael)
                and switch to experimental for RC’s (Eike)

        InterpretTail – returning from deep recursion (Eike)
                happens after a few hundred cells.
                Recursion is stack bound; at some point we return & iterate 
over the stacked cells
                and try the next bunch.
                Does it still work with threaded calculation ?
                        Do we blow the stack here ?
                Uses the RecursionHelper to see if we should do this again.
AI:             need to propagate the recursion ‘ERSTART_SYS’ type thing back 
(Dennis)

        ScInterpreterContext (Michael)
                plan is to move stuff out of thread variables eg. vlookup cache 
and tie from here.

        Patch for avoiding excessive allocations
                another patch to come doing this on the ScInterpreterContext
                how many ? (Eike)
                        around eight.
                        Might work.
                        Should be on the ScInterpreterContext indeed.
        Slightly sad S/W group interpreter still wins (Michael)
                “Thread the S/W interpreter” patch.

        SUMPRODUCT – building Matrix’s (Michael)
                Allocates a new ScMatrix each calculation
                        keeps track of dimensions internally (Eike)
                                different memory chunks if use only the 
upper-left.
                        Different semantics here; forces array-mode to all its 
params and sub-params
                                by definition.
                                Other functions that do this too.
                                sc/…/tools/ function classification – some 
force matricees
                Could re-use S/W interpreter bits perhaps ?

TODO
        Vlookup cache needs reconciling with the main version ideally
                whenever a change in the data – all dependent vlookups must be 
re-calculated
                do we do smarts with dependencies ? (Michael)
                        listen to the range (Eike)
                        when re-calculating, is the initial value we looked up 
the same ?
                                In this case return the cached value.
                This is why we  have ‘MergeBackIntoNonThreadedData()’ fn (Tor)
        Error state in TokenArray
                Should only be used for formula parsing & compiler state…
                It the compiler flagged the error – don’t intpret it
                        currently abused for other cases.
                Fix as we find them.
Next:
        First fix the number formatter issues
        Then start to merge these; generally happy
        Saw all the cores busy (Eike)

Noel’s column limit patch
        Could have a look (Eike)
                didn’t think it was finished – deps on MAXCOL / MAXROW
                actual access depends on size of these
                other places – compare reference values vs. MAXCOL etc.
                would be good to get some more details.
                SlotMachine needs looking at – wrt. Distributing.

Appendix 1 – some numbers

Benchmark Compute Sheets used
Repo : git://gerrit.libreoffice.org/benchmark
1. BuildingDesign.xls
2. GrossProfit-Supermarkets.xls
3. Stock_history.xls

-- 
michael.me...@collabora.com <><, Pseudo Engineer, itinerant idiot

Attachment: calc-parallel.odt
Description: application/vnd.oasis.opendocument.text

_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to