Published on *freevec.org* (http://www.freevec.org)

Submitted by markos on Mon, 28/10/2013 - 01:48

This paper is hosted here actually! First version was using drutex-rendered of LaTeX excerpts of the original paper, today I'm using MathJax, much better. I wrote this paper when I was attempting to optimize MySQL with Altivec as part of a Genesi project, unfortunately it didn't amount to much in terms of accelerating MySQL, but I did invent an algorithm to vectorize a whole certain family of hashing functions.

The result was this paper [2]

Tags:

Submitted by markos on Mon, 28/10/2013 - 01:43

Actually that one is already on this site :)

In 2008, I tried to revive my original idea of vectorizing the world for Altivec, I actually made good progress, then I made the mistake of getting a completely unrelated project (Java EE, ugh) that basically eventually made me shutdown my company, and lose 2 years of possible progress in Altivec and vectorizations.

In 2008, I tried to revive my original idea of vectorizing the world for Altivec, I actually made good progress, then I made the mistake of getting a completely unrelated project (Java EE, ugh) that basically eventually made me shutdown my company, and lose 2 years of possible progress in Altivec and vectorizations.

Check here [7] for the paper.

Submitted by markos on Mon, 28/10/2013 - 01:33

Tags:

AltiVec [3]

Submitted by markos on Fri, 10/07/2009 - 14:26

Here's the link to the announcement:

http://lists.fixstars.com/pipermail/yellowdog-announce/2009-June/000214.html [13]

From the press release:

Quote:

YDL 6.2 now offers libfreevec, a (LGPL) library with replacement routines for GLIBC, such as memcpy(), strlen(), etc. These routines, which have been rewritten and optimized to use the AltiVec vector engine found in the G4/G4+ PowerPC CPUs, can provide for up to 25% increase in application performance.

Tags:

Submitted by markos on Sat, 23/08/2008 - 22:55

While completing Eigen2 AltiVec support (should be almost complete now), I noticed that the 32-bit integer multiplication didn't work correctly all of the time. As AltiVec does not really include any instruction to do 32-bit integer multiplication, I used Apple's routine from the Apple Developer's site [17]. But this didn't work and some results were totally off. With some debugging, I found out that this routine works for unsigned 32-bit integers, where Eigen2 uses signed integers! So, I had to search more, and to my surprise, I found no reference of any similar work. So I had 2 choices: a) ditch AltiVec integer vectorisation from Eigen2 (not acceptable!) b) implement my own method! It is obvious which choice I followed :)

UPDATE: Thanks to Matt Sealey, who noticed I could have used vec_abs() instead of vec_sub() and vec_max(). Duh! :D

UPDATE: Thanks to Matt Sealey, who noticed I could have used vec_abs() instead of vec_sub() and vec_max(). Duh! :D

**Links**

[1] http://www.freevec.org/content/paper_altivec_vectorization_hashing_algorithms_2007

[2] http://www.freevec.org/node/78

[3] http://www.freevec.org/category/simd/architecture/altivec

[4] http://www.freevec.org/category/simd/algorithms/hashing

[5] http://www.freevec.org/category/simd/algorithms

[6] http://www.freevec.org/content/paper_inverse_matrix_4x4_using_partitioning_altivec_2008

[7] http://www.freevec.org/function/inverse_matrix_4x4_using_partitioning

[8] http://www.freevec.org/category/tags/taxonomyterm66

[9] http://www.freevec.org/category/simd/algorithms/algebra/matrix

[10] http://www.freevec.org/category/simd/inverse

[11] http://www.freevec.org/content/paper_vectorized_adler32_altivec_2005

[12] http://www.freevec.org/content/yellow_dog_linux_62_includes_libfreevec

[13] http://lists.fixstars.com/pipermail/yellowdog-announce/2009-June/000214.html

[14] http://www.freevec.org/category/simd/software/libraries/libfreevec

[15] http://www.freevec.org/category/tags/taxonomyterm65

[16] http://www.freevec.org/content/32bit_signed_integer_multiplication_altivec

[17] http://developer.apple.com/hardwaredrivers/ve/algorithms.html#Multiply32

[18] http://www.freevec.org/category/simd/algorithms/algebra

[19] http://www.freevec.org/category/simd/architecture/altivec?page=1

[20] http://www.freevec.org/category/simd/architecture/altivec?page=2

[21] http://www.freevec.org/category/simd/architecture/altivec?page=3