Intel has released betas of its software development tools for Mac OS X running on the Intel architecture. The tools consist of a Fortran and C++ compilers, a math kernel library and a performance primitives library. The tools are specifically designed to support Intel’s Core Duo dual-core processor, as found in all the new Macs. The toolchain integrates into Apple’s Xcode IDE, meaning the Intel compilers can be used in the production of Universal Binaries–applications packaged with code for both Power and Intel architecture machines.
Does it support Obj-C? Would it then be useful for actual OSX development? iNTEL needs to step up if they want to replace GCC for OSX development…
No Obj-c yet..
From the article
One drawback of using the new tools may be that they don’t support Objective C, which many Mac applications will be written in. Objective C is considered to be the native language for Mac OS X, and before version 1.5 there was little support for C++ in Xcode. Intel has no plans to support Objective C, so existing developers will almost certainly have to modify their applications to take advantage of Intel’s dual-core processors.
It would if you were developing performance critical scientific applications.
I don’t think Intel intends to replace GCC for ordinary application development, just to provide the option of higher performance tools for those that need them. (The same tools that are available for windows and linux.)
The prices alone should tell you that they aren’t competing with GCC:
“$399 for the C++ compiler, $499 for the Fortran compiler, $199 for the performance primitives library and $399 for the math kernel library.”
that is what objective C++ is for.
you have the interface in Objective -C++ (which lets you basically link Obj-C to a C++ backend) and then a normal C++ backend.
I don’t think Intel cares about replacing GCC for OS X development. I think Intel desires to provide its compiler suite for those that purchase machines for scientific computing, and will pay the licensing fees for the performance advantages of its Fortran and C++ compilers.
I’d just like to point out that on x86, having a GCC alternative is much less important than it is for PPC. GCC on x86 is quite good relative to Intel C++ 8.1. From the nightly tester: http://people.redhat.com/dnovillo/spec2000.i686/gcc/global-run-rati…
We can see ICC is maybe 10% faster in integer and maybe 20% faster in floating-point. Perhaps significant if it reduces a 24 hour job to a 20 hour job, but not a huge difference in the grand scheme of things.
According to the same page, LLVM, which Apple has started to invest in, is also closing in on Intel C++, with ICC being about 20% faster in integer and 10% faster in floating-point. According to the LLVM maintainer, the x86 port of LLVM is fairly immature, so that gap should narrow considerably in the near future. If LLVM can achieve parity or even surpass Intel C++, that would be a major boon for open-source compiler technology, since Intel C++ is near SOTA in commercial compiler technology.
Edited 2006-01-19 00:44
GCC on x86 is quite good relative to Intel C++ 8.1.
I’d taken a look at gcc-4.0 output for some code I’d written recently. It still does some appalling things sometimes, like redundant moves or not keeping inner loop counters in a register. Rewriting one inner loop in assembler brought a 2x improvement without any special tricks, just better register allocation.
Hoping that gcc-4.1 will make better use of the new optimisation framework.
Just wondering about something!!
The article says that the Intel conpiler can be integrated in Xcode which is correct but i dont think that it is possible to build Universal Bunaries with Intel compilers. According to the Apple developer documentation, only Apple GCC can compile Unversal Binaries. Compiling with Intel compilers will produce binaries that only run on Intel based macs. And how could it be else? Intel compilers never compiled for Power processors, so definetly the author is wrong to say that Intel compilers can bu used to compile Universal Compilers. Only GCC does so….
Also thats great that Intel provides their Intel® Math Kernel Library and their Intel® Integrated Performance Primitives for Mac OS, but i think people should be careful. I mean for people who do a lot of scientific computation and math, then they should rather use the Apple Accelerate Framework which provides vector optimized libraries for Image Processing, Vector Math, Signal processing, Linear Algebra and Large Integer Computation. People for example that wish to access to highly optimized Blas And Lapack routines on both Powerpc and Intel should use the Accelerate Framework. The Accelerate Framework vectorize (via Altivec for powerpc, via SSE for Intel) and optimize for the given architecture for the developer, nothing to do, compile ones, run everywhere. The Accelerate Framework completly hides the target architecture and its very, very fast.
On the other hand using the Intel Libraries means that the compiled code that calls Intel libraries will only run on Intel, which may be a problem for people who want to run intensive code on their new intel based mac but still wish to run their code on their installed Apple powerpc box too.
Anyway good to see Intel compilers on mac!!!!
Edited 2006-01-19 06:50
The Accelerate Framework vectorize (via Altivec for powerpc, via SSE for Intel) and optimize for the given architecture for the developer, nothing to do, compile ones, run everywhere. The Accelerate Framework completly hides the target architecture and its very, very fast.
Yes, but Intel’s libraries probably perform significantly better, because they know their processors best and in contrast to Apple have many years of experience trying to get the most out of them.
Surely it would be possible to use the Intel compiler to create the Intel binary, the PowerPC compiler to create the PowerPC binary, and then use the usual methods to shove the two together into a single universal binary.
I’ve never done any development on Mac, nor have I ever seen XCode, but it would seem like a fairly normal and obvious thing to allow the user to specify different compilers for different architectures.