[Mono-dev] autovectorization

Jerry Maine - KF5ADY crashfourit at gmail.com
Mon Jan 4 10:25:28 EST 2010


Because doing so is so expensive, i was thinking of only two optimizations.

One is loop unrolling when moving over arrays.

The next one is tailored to known programing patterns in C#, vectorizing
only the homogeneous structs of size 16.

The idea is that these optimizations may be cheep enough to do in the
Jit, while others can be done in an external utility.

Rodrigo Kumpera wrote:
>
>
> On Sun, Jan 3, 2010 at 10:40 PM, Jerry Maine - KF5ADY
> <crashfourit at gmail.com <mailto:crashfourit at gmail.com>> wrote:
>
>     I have been thinking of implementing some autovectorization
>     capabilities
>     to mono, and I was wondering the opinion of the community here.
>
>     I was thinking of three different ways of implementing it:
>
>     IL -> IL transformation using Mono.Simd structs to do the
>     vectorization
>     implemented in C#
>     IL -> IL transformation--same as above but in the C runtime of mono.
>     IR ->IR transformation in the C runtime.
>
>     I do know that there will be a ease of implementation and performance
>     differences between the three especially, I think, between the IR
>     -> IR
>     version and the IL -> IL version.
>
>
> Performance-wise, there isn't much advantage of doing it on the C runtime,
> be either on IL or IR. There isn't that much that can be done at the
> IR level 
> that can't be done with IL.
>
> Said that, doing auto-vectorization is a very expensive optimization that
> there no room to do it at JIT time. Not mentioning the fact that it is
> a quite
> complex task.
>
> My suggestion is to built it as an assembly rewriting tool that
> perform such
> optimization and many others.
>
> By the way, which of the few vectorization technique do you plan on
> employ?
>
> Cheers,
> Rodrigo

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-devel-list/attachments/20100104/91df5350/attachment.html 


More information about the Mono-devel-list mailing list