Question

Should my program support IA64, or should it only support x64?

I haven't been able to easily find IA64 computers myself. Is IA64 dead?

MS seems to have a wide support for IA64, but it took me a long time to be able to find an IA64, and I had to end up getting it on eBay.

Was it helpful?

Solution

What kind of software do you develop? If it's not a data center type of application or a high-end number crunching app, I'd be surprised if there were any demand for an ia64 version. And even then, I'd think it would be a situation where if you have to ask if you should support it, you probably don't need to.

A couple things off the top of my head that might hamper an ia64 port:

  • any third party tools or libraries you're depending on need to support it
  • unaligned accesses that go largely unnoticed on x86 and x64 will cause headaches on ia64

Of course, I don't work for Gartner or IDC or anyone who does market analysis, so you should take what I say here with whatever skepticism you have lying around.

Have any customers or potential customers inquired?

OTHER TIPS

You're the only person qualified to make the judgement of whether expected sales will cover the cost of developing and supporting it.

If you have access to an IA64, then it is absolutely worth it to make your code run on it. Porting your code to another CPU architecture will reveal all sorts of hidden problems.

You might have a string overflow by 1 that doesn't show itself on Linux/Windows/x86 but crashes the program because of different stack layout or structure alignment. You might be assuming that ~1UL == 0xFFFFFFFF.

I keep my C++ code IA64 clean, but I already have a couple of machines because I'm a fan.

In theory, assuming you stick to good C++ programming practices, you shouldn't care if what you're writing to is an x64, IA64 or even a SPARC or PowerPC or whatever. Just ensure your code is 64-bit clean (like not assuming that integers and pointers are the same size) and you'll be fine.

Except...

There's always the oddball fringe conditions caused by unusual hardware issues, non-conforming compilers or "implementation-defined" sharp corners in your language. (C and C++ both contain a lot of those "implementation defined" things!)

So...

You'll want to test on your target. This could get very expensive, but there are places that will let you test applications on a given hardware platform for a fee. If you do a lot of work on cross-platform stuff it may be cheapest to go in-house for your hardware, but small shops and rarer platforms are often best tested on rented data centre hardware.

I wouldn't bother with IA64 support unless a client specifically asks for it. Otherwise, it's just another platform to test. Does Intel still make any IA64-based processors?

If you're writing in C++, does it really matter? What I mean is, you don't say what makes your program "need to know" about the underlying architecture of the machine it is running on. From C++ itself, you should be fairly well protected against any differences between the two. Of course, testing on an esoteric platform might be difficult, but do you have to test it yourself on all platforms you "support"?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top