GCC4 += delerium->hoursAwake;
http://gentoo.mercymachines.net
I created a stage1 gentoo tarball that uses gcc4 and is compiled with nptl only. I also have provided a portage snapshot and overlay of all the programs I had to tweak to compile against gcc4. Everything has been working fine over here. I've been running my LDAP server with this toolchain for the last month with no problems. I don't really see or feel any performance boost, but gcc4 has ssa autovectorization builtin (-ftree-vectorize).
Vectorization is the process of optimizing for vector processors. In the case of the x86-64 platform, this would be mmx,sse,3dnow, etc. On the PPC side, Altivec handles vector processing. These are also known as SIMD extensions. SIMD stands for Single Instruction Multiple Data. This means that you are able to apply a single instruction over many pieces of data utilizing specialized registers and assembly calls. Now imagine, if you will, having 16 of these registers next to each other. Think Henry Ford. You can now have each register performing a single, but unique task. Every time the clock ticks, the data is bit-shifted to the next register. So a 16 step process, after an intial 16 iterations to fill the queue, will produce a result every clock cycle. Wow, a 16x speedup. Don't get too giddy, this approach is only good at solving problems with huge data sets that need to be crunched over and over. These are mainly multimedia, 3D-Rendering and some scientific computing applications. Classically, SIMD cannot handle data dependency at all.
They also dumped the old f77 compiler for a new fortran95 compiler. F95 provides some nice constructs for vector math. For example, instead of writing a loop to sum the corresponding values of two arrays, one can simply do a = b + c, where {a,b,c} are vectors. Utilizing SSA, these operations are automatically vectorized and performed in parallell. Yeah, I know, fortran sucks. But like any tool, it's good for it's purpose. And no, frustrating CS undergrads is not it.
I created a stage1 gentoo tarball that uses gcc4 and is compiled with nptl only. I also have provided a portage snapshot and overlay of all the programs I had to tweak to compile against gcc4. Everything has been working fine over here. I've been running my LDAP server with this toolchain for the last month with no problems. I don't really see or feel any performance boost, but gcc4 has ssa autovectorization builtin (-ftree-vectorize).
Vectorization is the process of optimizing for vector processors. In the case of the x86-64 platform, this would be mmx,sse,3dnow, etc. On the PPC side, Altivec handles vector processing. These are also known as SIMD extensions. SIMD stands for Single Instruction Multiple Data. This means that you are able to apply a single instruction over many pieces of data utilizing specialized registers and assembly calls. Now imagine, if you will, having 16 of these registers next to each other. Think Henry Ford. You can now have each register performing a single, but unique task. Every time the clock ticks, the data is bit-shifted to the next register. So a 16 step process, after an intial 16 iterations to fill the queue, will produce a result every clock cycle. Wow, a 16x speedup. Don't get too giddy, this approach is only good at solving problems with huge data sets that need to be crunched over and over. These are mainly multimedia, 3D-Rendering and some scientific computing applications. Classically, SIMD cannot handle data dependency at all.
They also dumped the old f77 compiler for a new fortran95 compiler. F95 provides some nice constructs for vector math. For example, instead of writing a loop to sum the corresponding values of two arrays, one can simply do a = b + c, where {a,b,c} are vectors. Utilizing SSA, these operations are automatically vectorized and performed in parallell. Yeah, I know, fortran sucks. But like any tool, it's good for it's purpose. And no, frustrating CS undergrads is not it.

0 Comments:
Post a Comment
<< Home