On Wednesday, December 3, 2014 1:33:46 PM UTC-8, Jernej wrote:
>
>
> for i in xrange(1, cur):
> for j in xrange(i+1, cur):
> iv = (cache[i]*vec2int[j].transpose())[0,0]
>
It looks like you should rewrite this loop so that j is the out variable,
so that you can pull
vec2int[j].transpose()
to the out loop. No need to cache it.
In any case, your profiling data indicates:
1 85.572 85.572 113.024 113.024
<string>:9(constructGraph_fast)
3733128 10.413 0.000 10.413 0.000
matrix_space.py:145(__classcall__)
1604418 9.434 0.000 19.921 0.000 {method 'transpose' of
'sage.matrix.matrix_dense.Matrix_dense' objects}
1604418 3.186 0.000 4.174 0.000 {method '__copy__' of
'sage.matrix.matrix_generic_dense.Matrix_generic_dense' objects}
so most time is spent in "constructGraph_fast", which I guess is your
program itself. The transpose is a bit noticeable but hardly constitutes
the majority of the time. The construction for the matrix spaces is
incurred twice: both for the transpose and for computing the product. By
pulling the transpose to the outside loop that should roughly be cut in
half (and you'd only have the sqrt of the number of transposes).
It looks like most time is getting lost in basic python interpretation and
shuffling around elements. If you make a big matrix out of cache[i]
vectors, you can eliminate the loop over i. The only thing left would be
inspecting the elements, for which you can then write a simple cython
routine (which should be lightning fast).
--
You received this message because you are subscribed to the Google Groups
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.