i.vaigult at gmail.com
Fri Sep 21 22:58:56 CEST 2012
> What if you need to resize a number?
There can be two desired behaviours.
- All the cells have constant size. (The most simple)
- All the cells sizes aligns by the biggest number on each vector
operation. (Difficult to implement efficiently)
Did you measure that cache misses due to this vector take a significant
> proportion of the time?
Yes, cache mises takes a big overhead, because the total execution time
depends on row and cols of matrix as O(nm) on each iteration (And the
number of iteration depends on rows as O(2^(m/2)) in worst case).
Is there any non documented way to free allocated data?
(since you are using C++, I'd rather use vector<mpz_class>)
May be, it's good, but what about mixed arithmetic functions? (for example
mpz_addmull, I have heared that it is little faster than two calls of
mpz_add and mpz_mul)
What will happen if I write "a+b*c" in c++?
2012/9/21 Marc Glisse <marc.glisse at inria.fr>
> On Fri, 21 Sep 2012, Иван Вайгульт wrote:
> Hello all,
>> I am working on known computional geometry problem (double description
>> method). As you know, it is connected with vector operations. Let's
>> consider std::vector<mpz_t>. Following the doccumentation, every element
>> represents structure with couple sizes and pointers to allocated objects.
>> This way is ineffective, every loop over this container will lost
>> time due to cache misses. We can avoid it using linear memory, i.e. all
>> the neighbours elements are alloocated in neighbours memory cells.
> What if you need to resize a number? Did you measure that cache misses due
> to this vector take a significant proportion of the time?
> (since you are using C++, I'd rather use vector<mpz_class>)
> So, the question: Is there any built-in structure that contatins vector of
>> mpz_t objects satisfying cache issues I have listed above?
> Marc Glisse
More information about the gmp-discuss