[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Octave-bug-tracker] [bug #54005] kron performance affected by octave_qu
From: |
A.R. Burgers |
Subject: |
[Octave-bug-tracker] [bug #54005] kron performance affected by octave_quit() calls |
Date: |
Thu, 31 May 2018 17:22:20 -0400 (EDT) |
User-agent: |
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299 |
Follow-up Comment #3, bug #54005 (project octave):
Well, the initial diff was only meant to highlight the issue.
Moving the octave_quit one level up, in case nrb==1 leads to these timings:
Elapsed time is 2.35524 seconds. (column vectors)
Elapsed time is 3.62659 seconds. (row vectors)
diff -r cdaa884568b1 libinterp/corefcn/kron.cc
--- a/libinterp/corefcn/kron.cc Thu May 24 19:20:35 2018 -0700
+++ b/libinterp/corefcn/kron.cc Thu May 31 23:16:56 2018 +0200
@@ -63,15 +63,30 @@
MArray<T> c (dim_vector (nra*nrb, nca*ncb));
T *cv = c.fortran_vec ();
- for (octave_idx_type ja = 0; ja < nca; ja++)
- for (octave_idx_type jb = 0; jb < ncb; jb++)
- for (octave_idx_type ia = 0; ia < nra; ia++)
- {
- octave_quit ();
- mx_inline_mul (nrb, cv, a(ia, ja), b.data () + nrb*jb);
- cv += nrb;
- }
-
+ if (nrb == 1)
+ {
+ for (octave_idx_type ja = 0; ja < nca; ja++)
+ for (octave_idx_type jb = 0; jb < ncb; jb++)
+ {
+ octave_quit ();
+ for (octave_idx_type ia = 0; ia < nra; ia++)
+ {
+ mx_inline_mul (nrb, cv, a(ia, ja), b.data () + nrb*jb);
+ cv += nrb;
+ }
+ }
+ }
+ else
+ {
+ for (octave_idx_type ja = 0; ja < nca; ja++)
+ for (octave_idx_type jb = 0; jb < ncb; jb++)
+ for (octave_idx_type ia = 0; ia < nra; ia++)
+ {
+ octave_quit ();
+ mx_inline_mul (nrb, cv, a(ia, ja), b.data () + nrb*jb);
+ cv += nrb;
+ }
+ }
return c;
}
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/bugs/?54005>
_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/