SequenceL is a declarative, functional language that's geared to multicore programming; it provides automatic parallelization, and the compiler outputs C++ code. It was initially developed at Texas Tech University in partnership with NASA during a 20-year period for use in guidance, navigation, and control systems. Texas Multicore Technologies, formed in 2009, is now taking SequenceL to the commercial market at large. InfoWorld Editor at Large Paul Krill recently spoke with Doug Norton, Texas Multicore vice president of sales and marketing, about SequenceL and its abilities.
InfoWorld: How did SequenceL evolve to become a language for multicore programming?
Norton: SequenceL is based on two fundamental computational laws that are provably race-free: CSP and NT (Consume, Simplify, Produce, and Normalize-Transpose). What [developers] found when they added that last one, NT, was that these two computational laws were exposing thousands of parallelisms that were provably race-free. Then they kicked off an effort at Texas Tech to build a parallelized compiler to take all those parallelisms and implement them directly to C++. They chose C++ because that gave them the ability to run on any platform and leverage all the C++ tools out there and play nicely with C++, if you will, to interoperate where you could not have to rewrite an entire program. You could just take a piece of it, rewrite that in SequenceL, and run it through the compiler, and now you have massively parallel C++ for that portion of the code, which you can link right in with the rest of your C++ [code]. That work began in 2005-2006, to build that prototyping compiler.
InfoWorld: How hard is it to learn SequenceL? Could Java developers pick it up quickly? Or JavaScript developers?
Norton: You bet. It's a very compact language. It's only at about 15 semantics, versus 150-plus in Java.
InfoWorld: I guess you'd call SequenceL a proprietary language with proprietary tools. How do you get away with that in today's market when it seems like everything is open source?
Norton: All I can tell you is the benefits are so great that people get it. The time-to-market and the performance advantages are so great. The pricing is reasonable too. We're not trying to gouge people. We're trying to get it out there. But I get asked all the time, "Will you offer a freemium model or something like that?" I just don't believe we're set up to license it that way right now.
InfoWorld: Is SequenceL also applicable to multiprocessor programming, or are you just focusing on multicore programming at this point?
Norton: It is applicable. We've done some work in kind of a semi-automatic way using MPI (Message Passing Interface) -- the combination of MPI and SequenceL. In fact, a couple of months ago, we filed a patent. We call it a hybrid approach, but it's not fully automatic like it is with the shared memory multicore.
InfoWorld: Is there a limit to the number of cores you can distribute instructions on with this?
Norton: Nope. The more the merrier.
InfoWorld: So I write code with this, and it knows to distribute it around to different cores without having race conditions and locks and those sorts of problems?
Norton: That's right.
InfoWorld: Is this for any processor architecture?
Norton: It can be for any. We are unlimited. Currently, our focus has been on primarily x86-based systems, but it would be pretty simple to get this ported to [other platforms]. We only have to move the runtime.
InfoWorld: How much of an issue is multicore programming these days? Is it still a major issue, or do developers have it under control?
Norton: I can tell you it's still a very major issue. We have a slide I could pop up. It talks about the eight simple steps to creating parallel code from Dr. Dobbs of Intel, and it is pretty horrible. SequenceL eliminates all of that, and it's the only thing out there that eliminates it.
InfoWorld: What are some of the steps?
Norton: First, the programmer [manually] would have to identify all the truly independent computations, then have to plan early for the scalability because cores are going to keep increasing, and they have to basically have a good understanding of their target hardware to do that. They have to use the right threading models, and they have to keep refactoring their algorithms and changing them as they see different things take effect across cores. It's a very manual and kind of a dangerous process.
InfoWorld: Are there other languages that are specifically designed for multicore programming?
Norton: There really aren't. There's been some Band-Aid [approaches] that have been put onto existing languages like different libraries. We need a language-based approach because the problem with libraries is if you use that library 100 percent of the time, then great. But very few programs use one or two libraries all the time. There's a lot of other code. If you parallelize half of your application you can never run more than twice as fast because the other half is going to be waiting. You have to parallelize much more, and that's why a language-based approach like SequenceL is the right answer.
InfoWorld: What type of applications have been written with SequenceL?
Norton: It's been applied to wireless mesh networking. It's been applied to oil and gas. It's been applied to image processing, both military and commercial. It's been applied to hearing aid audio algorithms. It's been applied to a new kind of algebra-based database.
InfoWorld: What about standard business applications? Would it work for that?
Norton: Absolutely. It's very general purpose. Anything that needs computational performance benefits from it greatly. But even if you don't want performance, what we often find [with] our customers on the business side, is the time-to-market advantages and the quality [are beneficial]
InfoWorld: How many users do you have at this point?
Norton: We've got a handful of large companies. It's been a very rifle-shot, kind of sniper-shot model to go after some very large companies and what we think are some good industries, then start to grow from there.
InfoWorld: What version are you on of the language right now?
Norton: We're about to release 1.2 of the product, of the tool chain. The language itself hasn't really changed in five years. The work has been done to the tool chain, and the compiler and the runtime have been the predominant development efforts. [Tools are] all under the SequenceL banner. [Version] 1.2 includes the IDEs, which is plug-ins for either Eclipse or Visual Studio for Microsoft.
InfoWorld: You didn't have Eclipse or Visual Studio plug-ins before?
Norton: We didn't have them until about a year ago. That was one of the biggest holdups. We didn't want to release the product to the market without the IDE plug-ins. And that includes, in the case of Eclipse right now, our own debugger that's about functionally, the language. We're working to get that in Visual Studio, but we are hitting some technical difficulties working it through with Microsoft. But it will be in Visual Studio eventually.
InfoWorld: What are the technical difficulties?
Norton: It's just Microsoft now has F# out. They now have a functional language. Visual Studio isn't as plug-in friendly as Eclipse. It's a little bit closed, and they don't really do much with functional languages yet. We're having to educate them a little bit on that.