[Liboil] Is liboil still alive?
Jeff Squyres
jsquyres at cisco.com
Fri Feb 20 10:26:07 PST 2009
On Feb 20, 2009, at 11:32 AM, Thiago Galesi wrote:
>> - Does oil_u8_copy() make non-temporal copies?
>
> Ok, AFAIK (and that's what I remember from the docs)
I re-checked the docs, and they don't say:
http://liboil.freedesktop.org/documentation/liboil-liboilfuncs-copy.html#oil-copy-u8
> So, even though non-temporal copies are faster, it's essentially down
> to what the benchmark found out. It is possible that non-temporal
> copies are not implemented, for example check liboil/sse/copy_sse.c
Ah; I hadn't looked in the source -- I had assumed that it would be
mostly assembly.
> And you can always write your own 'u8_copy' backend as well.
We were hoping that liboil would obviate the need for us to muck in
assembly. :-)
(Open MPI has some assembly code in it, but the main developer of that
is gone; it's difficult to maintain now that we no longer have anyone
with expertise with assembly)
>> - In my benchmarking, oil_u8_copy() seems to beat gcc's memcpy() for
>> small sizes (e.g., <=128 bytes) for old versions of gcc (3.4.6/the
>> default on RHEL4) on older xeon hardware. The docs say that
>> oil_u8_copy() is only optimized for small sizes; so that's fine. But
>> using more recent hardware (e.g., woodcrest- or wolfdale-class
>> servers), the picture becomes much less clear about whether gcc
>> 3.4.x's memcpy() is faster than oil_u8_copy() or not. Using other
>> compilers' memcpy() implementations (e.g., intel compiler, pathscale
>> compiler, etc.) seem to always beat oil_u8_copy(), regardless of size
>> and hardware. Newer gcc's (e.g., 4.3.x) also seem to always beat
>> oil_u8_copy(), regardless of size and hardware. My question is: is
>> this expected behavior?
>
> I'd say it's not expected behaviour :) Problem is, more and more
> optimizations are being tucked inside the silicon, as well as gcc and
> others becoming "smarter" so, I wouldn't be surprised if gcc comes
> with a smarter memcpy.
>
> But for more complex things liboil should perform better.
Ok, fair enough. I was hoping for non-temporal copies, but if they're
not there, so be it.
I do see *some* assembly in liboil/*/*copy*.c. Does anyone know if
any of these have non-temporal copies? There's no real comments to
explain, and I have no idea what the assembly for non-temporal copies
looks like...
--
Jeff Squyres
Cisco Systems
More information about the Liboil
mailing list