octave-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Octave-bug-tracker] [bug #60818] delaunayn - 2D code path vectorization


From: Markus Mützel
Subject: [Octave-bug-tracker] [bug #60818] delaunayn - 2D code path vectorization doesn't match nD algorithm
Date: Mon, 9 Aug 2021 06:55:48 -0400 (EDT)
User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.67

Follow-up Comment #49, bug #60818 (project octave):

Could you please attach a patch for the latest version? I find it easier to
see what has changed with patches.

If we would like to implement that, we should probably not simply
half/quarter/... the input size of `lu`. Instead, we should probably partition
such that the size of `eqs` doesn't exceed a limit we'd still need to
determine.
E.g. if we should decide that the "payload" of `eqs` shouldn't exceed 256 MiB
with double precision floating point numbers:

max_num_simplices_per_loop = max (1, floor (2^28/8/nd^2));

Or whatever we deem reasonable.
I'm not sure how much memory `lu` needs for a given input size. So that
estimate could be quite off from a reasonable value.

Looking at the last patch, the limit that we use for deciding which simplices
to eliminate is: 

R < 100 * (nd - 1) * nt * eps (max (R))

The vector `R` should be small compared to the matrix `eqs`. Would it be
possible to collect the elements of `R` in that loop?

Since it looks like we are never using `q` (is that still true in the latest
version?), you could probably write:

[~, u, p, ~] = lu (eqs, "vector");

That might also save some memory.

    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?60818>

_______________________________________________
  Message sent via Savannah
  https://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]