Skip to content
avatar

ApTel: Whither AltiVec?

So there’s talk all over the web about Apple moving to Intel processors, but one thing I couldn’t find was the fate of AltiVec. AltiVec, or the Velocity Engine, is the part of the G4 and G5 that does the heavy lifting when you need giant numbers crunched: it is the reason why G5s have been seen in a few supercomputers lately. It is one of the biggest selling points that the more recent PowerPCs had, but I couldn’t find anyone who was talking about it. What was the future of AltiVec?

Well, I finally found out from Apple’s own docs, page 53 (emphasis added):

AltiVec instructions, because they are processor-specific, must be replaced o Macintosh computers using Intel microprocessors. You can choose from these two options:

  • Use the Accelerate framework. The Accelerate framework, introduced in Mac OS X v10.3 and expanded in v10.4, is a set of high-performance vector-accelerated libraries. It provides a layer of abstraction that lets you access vector-based code without needing to use vector instructions yourself or to be concerned with the architecture of the target machine. The system automatically invokes the appropriate instruction set.
  • Port AltiVec code to the Intel instruction set architecture (ISA). The MMXTM, SSE, SSE2, and SSE3 extensions provide analogous functionality to AltiVec. Like the AltiVec unit, these extensions are fixed-sized SIMD (Single Instruction Multiple Data) vector units, capable of a high degree of parallelism. Just as for AltiVec, code that is written to use the Intel ISA typically performs many times faster than scalar code.

So the long and the short of it is that all the work you’ve put into those optimizations is effectively dead, unless you did them recently and wrote to the Accelerate framework.

This may seem like a little thing, but AltiVec was one of the big reasons why Apple was seeing an upsurge in popularity among the sciences; big pharmaceutical and biotech firms were using G5s to run their massive numbers. Can ApTel compete?