SIMD benchmark

Martin Nowak dawg at dawgfoto.de
Mon Jan 16 08:51:38 PST 2012


On Mon, 16 Jan 2012 17:17:44 +0100, Andrei Alexandrescu  
<SeeWebsiteForEmail at erdani.org> wrote:

> On 1/15/12 12:56 AM, Walter Bright wrote:
>> I get a 2 to 2.5 speedup with the vector instructions on 64 bit Linux.
>> Anyhow, it's good enough now to play around with. Consider it alpha
>> quality. Expect bugs - but make bug reports, as there's a serious lack
>> of source code to test it with.
>> -----------------------
>> import core.simd;
>>
>> void test1a(float[4] a) { }
>>
>> void test1()
>> {
>> float[4] a = 1.2;
>> a[] = a[] * 3 + 7;
>> test1a(a);
>> }
>>
>> void test2a(float4 a) { }
>>
>> void test2()
>> {
>> float4 a = 1.2;
>> a = a * 3 + 7;
>> test2a(a);
>> }
>
> These two functions should have the same speed. The function that ought  
> to be slower is:
>
> void test1()
> {
>      float[5] a = 1.2;
>      float[] b = a[1 .. $];
>      b[] = b[] * 3 + 7;
>      test1a(a);
> }
>
>
> Andrei

Unfortunately druntime's array ops are a mess and fail
to speed up anything below 16 floats.
Additionally there is overhead for a function call and
they have to check alignment at runtime.

martin


More information about the Digitalmars-d mailing list