Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
Programming IT Technology

Does Linux Need Another Commercial Compiler? 261

Lurks asks: "My company, Codeplay, is set up to develop new and innovative compiler technology for the games industry. Our C compiler, VectorC, is a cutting edge vectorizing compiler aimed at games and multimedia applications that demand high performance generally through hand-optimized assembly. I'm writing to ask the burning question on our minds, is it worth porting VectorC to Linux? In fact, we're already targeting Linux as part of the PlayStation 2 version albeit not generating x86 code of course. A Linux port would see us converge this work with our Win32 compiler and such an undertaking would certainly be popular with our Linux loving techies! One caveat worth mentioning now is that the current version of VectorC is plain C only. 2.0 with full C++ compatibility is due early next year."

"Of course, commercial realities will rear their ugly head and we must consider that Linux isn't perhaps an obvious choice for a compiler aimed at games and multimedia applications. Given the certain degree of hostility towards commercial closed-source products of this nature, perhaps the idea should be consigned to the pet-project back burner for the future rather than rolled out as a commercial product?"

This discussion has been archived. No new comments can be posted.

Does Linux Need Another Commercial Compiler?

Comments Filter:
  • What's needed (Score:2, Interesting)

    by Anonymous Coward on Saturday October 06, 2001 @10:36AM (#2395231)
    Yes, a high performance compiler would be welcome if:
    • The price is not out of reach of the masses.
    • It can compile the Linux kernel itself.
    • It generates smaller/faster executables.
    • It was compliant with the latest standards.
    GCC is OK but it is not that great on the IA32 architecture. If you can demonstrate a significant improvement over GCC, you'd have a winner, provided most of the above requirements can be met.
  • Re:Sounds good (Score:1, Interesting)

    by Anonymous Coward on Saturday October 06, 2001 @10:50AM (#2395255)
    I think you are wrong about Linux users. The problem is that many professional developer tools are very expensive for the independent mom and pop shop. Really good compilers and CASE tools can run into the tens of thousands of dollars, expenses which can not be justified for companies working on smaller contracts. Many Linux developers are jack-of-all-trade consultants doing contract work for small and mid-sized business. Programming most likely is only one aspect of the services which they provide.
  • porting to linux (Score:4, Interesting)

    by zerocool^ ( 112121 ) on Saturday October 06, 2001 @11:04AM (#2395277) Homepage Journal
    Porting this to linux seems to be a good idea, but the inherent problem is your business model. Who is your target audience? Are you targeting corporations such as lokisoft [lokisoft.com] who will use your compiler to port/create games for linux?
    (side note- the lokisoft page is down, i dunno if that is a fluke, if i have the wrong URL, or if they've packed up and left)

    The problem is that if you target corp.'s like loki, you may not be able to sell enough units, or whatever, to justify the cost of porting. These linux gaming companies seem to fold faster than omlettes at waffle house.

    If on the other hand, you just ported it and released it at random into the linux/OSS community, you would be doing the community a favor, and independant cells of programmers could attempt to port/write games for linux.

    The problem with this solution is also the cost: If you release it open source for linux, you would be somewhat of a hero, or philanthropist, to the OSS community; however, you may not be able to justify the cost of porting it, if your idea is to make money by porting to linux.

    I guess it depends on what time frame you think you can port it to linux in - if it would take you and your team an extra two days of programming, it may be worth it, as both a PR move and a gift to the OSS community. However, if it will take extra months of coding, just bear in mind that philanthropy doesn't pay bills.

    Don't mean to be cynical, but you have to consider each decision as it relates to the almighty dollar.

    It sounds as if you're doing fantastic work, though, keep it up.
  • Re:Sounds good (Score:1, Interesting)

    by Anonymous Coward on Saturday October 06, 2001 @11:10AM (#2395292)
    I don't think you'll see too many "How Dare You"
    posts - what you will see is a good number of
    "Yawn - why do we need this?" and "I wouldn't
    buy it - but I think you should port it anyway".

    The fact is that even the very best optimising
    compiler is only going to buy you about the same
    performance increase as waiting six months and
    letting Moores law do the work.

    Anyone who is developing OpenSourced software had
    better be sure that they'll get the needed speed
    from vanilla GCC because their users will only
    be using GCC. Hence your market is probably
    limited to commercial closed-source software
    that *needs* that small additional speed boost.

    Hence only commercial games companies who support
    Linux. That's a VERY small audience. I don't see
    how you could ever recoup your costs. Maybe you
    should give it away for free and hope to get a
    huge wave of enthusiasm for the product that
    would spill over into sales for the Windoze
    version?

  • Vectorc guys, I get the impression you don't know what you are producing :) [time to complete] Latest (relased) Borland compiler, full optimizations on: 142 Hand optimized c code (according to athlon optimization guide) with latest (relased)borland compiler, full optimizations on: 100 (ref) Vectorc 1.1 demo single precision 3dnow!, optimization hints: 46 Vectorc 1.1 demo, double precision x87: 48 Real code snippet from a real application. Do I have to say more? Normally one wouldn't use a borland suite for high performance critical code, but not everyone can afford to have a high-tech scientific compiler.
  • by Vardamir ( 266484 ) on Saturday October 06, 2001 @11:28AM (#2395326)
    I've recently started working with a couple of 3D engines, and would really like to compile them with something like VectorC instead of GCC, and certainly I would like to see some of the Free Software Developers who make games use a compiler like VectorC if they can afford it, but especially developers like Loki Games, ID Software, etc. Of course, I would probably just use GCC until I had something very much worth presenting to the public (Open Source or otherwise), and for me to get the compiler before the final stages of development would be a question of how much VectorC costs, and how much the Version 2 upgrade would cost - but that is just me. As I said, there are some people out there who need it. What about 3D app makers like Alias|Wavefront (Maya), NaN (Blender), and several other companies I can't remember at the moment (the creators of Shake and Tremor, etc)? I don't know what compilers are available for PPC/PPC64 but obviously not many people care about that when it comes to games, but I'm sure someone will eventually make an equivalent of vectorc for ppc/64 if it hasn't already been done - but when it comes to the x86 I would really like to see it ported over (It would be nice to get the PS2 and x86 package togethor).
  • by Lurks ( 526137 ) on Saturday October 06, 2001 @11:57AM (#2395395) Homepage

    I can't comment on what you're talking about without knowing what you're doing. Suffice to say those results aren't indicative of our performance.

    So yes, you do have to say more or at least I'd like you to. Drop a mail to support@codeplay.com and we'll work out what's going on.

    BTW we released 1.2 last week which is a substantial upgrade from 1.1. In particular Pentium 4 support in 1.1 was very limited.

    Mat 'Lurks' Bettinson, Codeplay Ltd.

  • Wrong question asked (Score:4, Interesting)

    by brg ( 37117 ) <brgNO@SPAMdgate.org> on Saturday October 06, 2001 @12:14PM (#2395434) Homepage
    The question should have been "Does Linux need another vectorizing compiler?" Currently, I'd say the answer is yes, because Intel needs some competition. I, for one, am 95% sure that a port of this compiler to Linux would get snapped up by anyplace that is doing high-performance computing.

    I do high-performance computing, and I'd love to be able to try out Vector-C on some of our P-4 and Alpha Linux clusters, if I could. Right now, we use Intel's icc or gcc on x86 and Compaq's ccc or gcc on alpha, respectively. Pretty soon we are going to be looking at Itanium as well. Some of the time we are hand-hacking assembly just like the game programmers are, which is kind of sad; we would rather be compiling C. What Mat Bettinson said is definitely the case: "micro based scientific computing is looking more attractive."

    Despite what some ppl here are saying, it's not an issue if it can't compile the kernel, or if it's not 100% gcc compatible, because most of the things the high-performance computing applications I've seen don't need to spend a whole lot of time in the kernel. However, you do have to make it work with both 2.1 and 2.2 glibc (please please please). The hacks we came up with to make icc work on our glibc-2.2 RH7 boxes are ugly and fragile.

    Language issues: C++ is almost never a big deal in HPC, but C/FORTRAN support is great. Having at least partial C99 support is best because then you get float *restrict foo, et al. Also, remember that not all HPC codes are fp. Some of us write integer intensive codes and/or memory intensive codes.

    It's not an issue if it's not free-beer or free-software, because research grants will probably be happy to pay reasonable amounts for it -- maybe a couple hundred bucks, say -- but you have to remember that Intel is giving icc betas away for basically nothing, so you can't charge too much. This is not a troll, just trying to be realistic here.

    Disclaimer: I am not speaking for my employers. I am not a person who gets to decide how grant money is spent (yet). These are just my opinions.

  • by pastie ( 80784 ) on Saturday October 06, 2001 @12:15PM (#2395436)

    I dont know if it will ever be able to compile the linux kernel, but I used VectorC in one of my projects and it did improve the performance significantly without compiling the whole thing.

    If the gcc-compatibility is up to par, then it should be possible at some time in the future to compile the Linux kernel with VectorC. However, remember that there are currently _no_ compilers other than GCC which can do this (please correct me if I am wrong), as the kernel source uses a number of GCC-specific extensions to C.

    It will already compile some other large pieces of software; I myself have used it to compile MAME, and it gave a significant speedup on most games over compiling it with Cygwin GCC (all on Win32, obviously).
  • Would I buy it? (Score:2, Interesting)

    by alriddoch ( 197022 ) on Saturday October 06, 2001 @12:20PM (#2395446) Homepage

    Speaking as a game developer, who codes primarily on Linux for Linux, I would certainly buy a copy once C++ support is available, if the code produced was fast.

    I have lost touch with the ammount of time I have spent going over code again and again to make it a bit more efficient, and removing bottlenecks. I would gladly pay for a product which would enable me to ship binaries that were faster.

    The question of ABI compatability on C++ is very tricky though. A C++ compiler would be of limited use if it did not use the same ABI as g++, though with the release of gcc 3, this ABI has at least stabilised.

  • I have 1.2.1, I just haven't benchmarked it yet. Chances are until I check intel's compiler I won't. Those result might not be indicative of your expected perforance but performance on my program is what counts for me (notice that values are given for a specific code snippet and I did not claim to have done extensive benchmarking.) Memory reads in terms of bytes for 64 bit and 32 bit precision conditions are same, that might be leading you to think something is wrong with my values. Also, I'm registered and do ask my questions if they appear.
  • by Kagato ( 116051 ) on Saturday October 06, 2001 @12:24PM (#2395455)
    It really depends on how you want to work it. Binary only releases are popular in certain Linux segments that don't want to hasle with compiling. The problem is of course you're only a kernal update away from having a program that doesn't work.

    I think there are aspects that of the Linux Universe that would benifit from a well done multimedia compiler. DVD players, or general Home Theater Computer enviroments, Linux Set Top boxes. etc. Games of course would welcome this too.

    But the real problem of course is how to you balance making a comcerial distro for Linux that is okay from the Opensource,and GNU communities perspective.

    There are a couple ways to go. You can go the QT way, and have a free and comercial version. The hope being that the various projects will use your libs and compiler, and thus it would be popular for comercial aspects that would actually pay you.

    Second would be binary only distro. Not as popular mind you because the person who puts together the Binary Distro (Which I assume would be a person who bought the package) may bit off more than they wanted to chew keeping things up to date. In order for this to work in opensource you'd need a lot of compiler directives. The idea being you could compile the project with GCC, it just wouldn't be as efficiant.

    Third would be a hybrid method. Some sort pre-compile on the closed stuff, and an included client compiler that would bring everything system dependent together. Perhaps even making the compiler and libs free to distro, but the development enviroment closed.

    My person preference would be number one. Anyone know how well QT does?
  • by Jah-Wren Ryel ( 80510 ) on Saturday October 06, 2001 @12:37PM (#2395479)
    I'm sure plenty of people will disagree with my conclusions, but I believe them to be sound. If you want to be successful on Linux (or any other free OS), you need to be libre/free.

    That means making the source code available under a GPL-like license.

    However, you can still protect your market at the same time. Just make it a requirement that anything compiled with the libre version of VectorC, or a derivative, also be licensed under the GPL or any of the similar licenses recognized by the OSI [opensource.org].

    Then dual-license the compiler so that anyone who pays for the commercial license is free to do whatever they want with the resultant binaries, no licensing restrictions.

    That way you can contribute to the community by providing a libre compiler, benefit from the community who will likely contribute bug-fixes and enhancements, and still make money from the people who would be willing to pay in the first place.
  • by Lurks ( 526137 ) on Saturday October 06, 2001 @12:38PM (#2395481) Homepage
    Don't wait for Apple. They're not the ones to talk to.

    Well, it's a bit more complex than that isn't it. Us porting to a platform involves the following kind of issues;

    • Is the platform easy? IE. Do we have the code generation for that platform already?
    • Is it a heavy games and multimedia platform?
    • Are the tools substandard on that platform?

    If we're not doing well in the above, then we'd not consider the platform a priority. Unless, of course, someone wants to give us money to do it. That's not out of the question where it's a proprietary platform such as a games console or, to an extent, the Apple Mac.

    Apple is a good target on one level because the vector unit in the G4 is the best vector unit in any consumer CPU. There's also games development and, more importantly on that platform, there's a lot of performance-sensitive multimedia application development. Apple like to crow about how good their CPU is, so one would have thought they'd like a tool on their platform to prove it.

    Regarding your other suggestions,maybe down the line we'll be looking at more business orientated high performance computing but that's not why Codeplay started up. From experience we have our work cut out talking to the various corporate players coming from an unknown company with 'play' in their name and 'games' on their web site. I think to be successful there we'd have to spin-off some high performance computing company or something. And definately no chins on the web site :)

    Linux is a special case. For all other platforms, we take a straight business viewpoint based on the numbers. To be frank, we've got a LOT of work/platforms on our plate as it is without finding new platforms unless they were going to pay.

    The Playstation 2 tools will pay the bills. Linux would just be 'cool', so long as it didn't cost us significant money and didn't generate bad PR. That's my view at the minute.

    Mat 'Lurks' Bettinson, Codeplay Ltd.

  • by Lurks ( 526137 ) on Saturday October 06, 2001 @12:45PM (#2395498) Homepage
    Even if Codeplay was to use the Edison Design Group C++ front end [edg.com] -- highly likely, as it's famous throughout the industry as an extraordinarily compliant, high quality front end, ...

    Implementing C++ properly natively is a requirement so that we can attempt to do the sorts of things VectorC does which no other compiler does. Simply put, if we used someone else's translator - we'd have C++ capability but almost certainly would be no faster than other C++ compilers.

    ... and seemingly a perfect match to the existing VectorC back end -- I'm highly skeptical this schedule could be met.

    I assure you, we are. The work is almost complete, what remains is the significant internal testing and bug fixing which we estimate will require the rest of the year.

    We have a fridge full of Redbull, believe me we can do it. :)

    Mat 'Lurks' Bettinson, Codeplay Ltd.

  • Why only games ? (Score:2, Interesting)

    by renoX ( 11677 ) on Saturday October 06, 2001 @12:50PM (#2395506)
    You have an "auto-vectorising" compiler, good.

    Couldn't it be targeted also at scientific computing?
    A lot of these code are in Fortran, but C is also used..

    I doubt very much that targetting games developer on Linux will get you very far, but multimedia processing could be interesting though.

    But there is competition of course, from other compilers of course, but also from libraries: a good hand-optimised library can get you quite interesting performances..
  • Another Compiler (Score:3, Interesting)

    by Doogal ( 526785 ) on Saturday October 06, 2001 @01:19PM (#2395574) Homepage
    There is another compiler worth considering. Metrowerks has an auto vectorizing compiler for the Intel platform, Code Warrior, which both runs under and targets Linux (Intel & PowerPC). Code Warrior also targets Windows, Mac Classic, OS X, GAMECUBE, PS2 and most other game platforms. Benchmarks can be found on the Metrowerks site (http://www.metrowerks.com), but they're a bit old. We'd be happy to provide up-to-date benchmarks for anyone who's interested.

    The real strength, however, is CodeWarrior's optimization and code generation.

    I'm biased, though, as I'm a compiler engineer (PowerPC) for Metrowerks, so take all of this with a grain of salt.

    --Doug

    Editor : Adam Barker
    Yes, I can't spell so I need one of those editor types.
  • by nusuth ( 520833 ) <oooo_0000us@nOSPAm.yahoo.com> on Saturday October 06, 2001 @01:45PM (#2395618) Homepage
    Even if your compiler did fpu ops in no time, it wouldn't get much better. Of 16 seconds completion time with 3dnow! and 17 seconds with normal fpu, 12 seconds is used for memory accesses. So, if you isolate the fpu operations, your compiler is doing 570% better than hand optimized borland code and 950% better than compiler optimized borland code. Now tell me how to do operations without operands and I'll give your compiler credit for 950% speedup...
  • by Urgoll ( 364 ) on Saturday October 06, 2001 @10:53PM (#2396804)
    The great thing about ICC is the automated vectorization using MMX, SIMD and SSE, as well as automated code dispatch to automatically use whatever feature your CPU has - one binary, many CPUs.

Understanding is always the understanding of a smaller problem in relation to a bigger problem. -- P.D. Ouspensky

Working...