Tuesday, November 24, 2009

100-cores by next year

Once again, hardware is far ahead of software. Tilera has announced a 100-cores processor for 2010.

Unlike standard multi-core processors, Tilera's TILE-Gx is architectured around a 2D grid network rather than a single shared bus. This is a way to jump over the "memory wall", and feed enough data to keep all cores busy.

This design provides a lot of raw computing power, but also better efficiency (more computing power per watt).

But this beast is supposed to be coded in standard C/C++. It already requires black magic in order to write a 2-threads program that behaves as expected, what about 100's of threads ?

The TILE-Gx is a perfect match for Ateji Parallel Extensions : data parallelism handles large scientific computations task parallelism handles server-like applications, and message-passing leverages the hardware's packet network interconnection mechanism. High-performance code can be arranged in a data-flow or streaming architecture, reducing accesses to shared memory.

Wednesday, November 18, 2009

Session Evaluation

I just received my session evaluation from the TSS Java Symposium Europe : an impressive 4.58/5.0 with the comment "Great Session !".

I am less proud of the speaker evaluation, at 4.21/5.0. If you attended the session, I'd be happy to hear from you about what could be improved.

Sunday, November 1, 2009

Parallelism at the language level - Part 1: Hello World

The major contribution of Ateji Parallel Extensions is to add parallelism at the language level.

What does this change? Today's mainstream programming languages have been designed with sequential processing in mind, they simply have no idea about what is parallelism. Consider how you'd run two tasks in parallel in Java:

  Thread otherThread = new Thread() {
    void run() {
    println("Hello"); // print Hello in the other thread
  println("World"); // print World in this thread
  otherThread.join(); // wait until code1 has terminated

Not to mention how unreadable and unmaintainable this code is, you'll notice that there is a fair amount of black magic involved here: just because you called a method whose name happens to be start(), the whole behaviour of your program has changed. But the compiler is not aware of this change, it thinks it is just calling an ordinary library method.

With Ateji Parallel Extensions, two tasks are run in parallel by composing them using the || operator :

  println("Hello"); || println("World");

How could it be simpler?

Not only is this much more concise and understandable, it also makes it easier for the developer to "think" parallel and to catch potential errors early.

And since the very idea of parallelism is present in the language, the compiler is able to understand the actual meaning of the code and to perform tricks such as high-level code optimization or better verification.

Read more on parallelism at the language level.

Friday, October 30, 2009

I have been assaulted...

...by a fan !

Just back from TSS Java Symposium Europe, while waiting for my bags at CDG airport, a total stranger pounced on me:

"I saw your presentation in Prague, it was great, wonderful, so exciting, definitely the best thing that happened to Java since its creation more than a decade ago. Oh, and did I mention your were awesome?!"

Whoaa!!! This was great for my self-esteem. My cardiologist, my wife and myself owe you a big thank you.

My presentation about Ateji Parallel Extensions was met with two extremely opposite reactions: either totally intrigued, all ears for the whole duration. Or totally lost, pulling "what an earth is this all about and what am I doing here?" type faces.

I'll need to improve on the tutorial aspect of this talk. There was definitely strong interest in the audience, as I could see from the large number of questions.

The Server Side Java Symposium Europe 2009 in Prague was overall a great experience. It was rather orientated, well, "server-side" a world that I'm not that much familiar with. Lots of boring guys who try to make software actually work rather than just hacking the JVM for the fun of it. I loved the bits about practical static analysis and performance tuning.

Other highlights were the "dinner with strangers" (not by the end), and hands-on pair programming. It was my first time, we had 30 minutes to write a method that sums factors and we hopelessly failed -- let's blame it on the Czech brandy. But I'll definitely try pair programming again with my team.

But the best bit was Neal Ford introducing my presentation in his opening keynote speech!

The topic was "Predicting the future". Well, first try learning lessons from the past: he began with a picture of a blacksmith in 1890. The best trade at the time, the career that you would recommend to your own children. But within 20 years there were no more blacksmiths.

The biggest change happening now in software is the requirement to write parallel code, and he drew an analogy between the 1890 blacksmith and today's Java developer. In short, better become fluent in parallel programming right now or find another career.

He hinted that we will all need to battle with learning new languages (probably of the functional kind: Haskell, F#, etc.) if we want to survive the transition to parallel programming, whether we like it or not.

The good news is that he was wrong: Ateji Parallel Extensions adds parallelism to your favourite language and doesn't require you to go back to school.

Neal also insisted on the importance of language and notation, and even dared to mention the Sapir-Whorf hypothesis. I understand his talk as proof that common wisdom about the importance of language is gradually changing. That I was on the right track four years ago when I founded Ateji in order to promote and develop language design and language technology.

Neal concluded "The best way to predict the future is to create it". This is precisely what we're doing at Ateji. Stay tuned!

Saturday, October 24, 2009

Heading for the Java Symposium Europe

Dear All,

It's been a long time! We've been busy preparing Ateji's new product for parallel programming. If you thought parallel programming was difficult, we'll make you change your mind.

The product is now available under a limited preview program, and is already a success with its early users.

I'll be next week at the Java Symposium Europe in Prague for its first public presentation. Watch out this blog for a smooth introduction to this new language and programming paradigm.