[PD-dev] [GEM] CVS-changes

Mathieu Bouchard matju at sympatico.ca
Mon Feb 24 19:41:52 CET 2003


On Mon, 24 Feb 2003, IOhannes zmoelnig wrote:

> how can i make use of loop-unrolling of the 
> compiler ? (how do i have to built the loops? my experiments showed 
> rather worse results when i did large loops (which could have been 
> unrolled by the compiler))

excerpt from gridflow/base/number.c :

template <class O>
class Op2Loops {
public:
	template <class T>
	static void op_map (int n, T *as, T b) {
		while ((n&3)!=0) { *as++ = O::foo(*as,b); n--; }
		while (n) {
			as[0] = O::foo(as[0],b);
			as[1] = O::foo(as[1],b);
			as[2] = O::foo(as[2],b);
			as[3] = O::foo(as[3],b);
			as+=4; n-=4;
		}
	}
[...]

and then you have to limit the size of your vectorizations in order to
reduce cache-misses.

afaik, gcc only does unrolling when it knows exactly the number of
iterations. maybe recent versions are different, but gcc 2.95 is still
quite in use (and i still use it).

________________________________________________________________
Mathieu Bouchard                       http://artengine.ca/matju





More information about the Pd-dev mailing list