Jan10

Leaving the Empire

Categories: General
0 Responses

Tomorrow will be my last day at Microsoft. I am retiring. As yet, I have no intention of looking for another job. I do have a lot of material saved up that I will be adding to this blog over the next few weeks. If anyone is interested in my personal plans and reasons, you can check my personal blog.

Nov9

Many Cores are Coming

Categories: Uncategorized
0 Responses

I went to an interesting talk today. Dave Patterson from Berkeley was talking about the near-term future and many-core chips. He’s talking about hundreds of cores on a chip, with perhaps a couple of heavy-duty processors to handle the serial parts of the code. They have an interesting wiki that pretty much covers the talk, so you can read it yourself. They also have a simulator, called Ramp, built out of FPGA’s, to let researchers get started before these chips appear.

You’re going to have to face it eventually, so you might as well start learning about it now.

Incidently, one of the approaches that looks promising to me is being developed at MIT. Check out the Cilk Project for an interesting approach to using lots of threads.

Oct29

An Architects’ Meeting

Categories: General
1 Response

MicroSoft sent the Developer Division software architects to a meeting in the Napa Valley. I’ve described the resort in a personal blog entry. This entry is to talk about the professional aspects.

Sun used to send the senior technical people on technical conferences, and they ranged from great to deadly. This one was pretty much in the middle. The good part was meeting my peers, learning about what they are doing and what’s going on elsewhere in the company. The best part was just talking with them, and I wish we had had more time to do it.

One interesting thing was meeting people whom I hadn’t seen for decades. Somehow, MS has gathered up lots of the top people in the programming tools industry. We talked about why, and we all told pretty much the same story. If you want to work on tools, and particularly if you want to do something innovative, MS is almost the only game in town. The computer manufacturers aren’t investing much in tools, and the few third-party tools vendors are either in very small niches or barely hanging on. Some people blame it on open source. I think it’s not so obvious.

There were absolutely silly “team building” exercises, like croquet and wine blending contests, and I wish they had just skipped them. I sat out the croquet (I have a bad foot) but had some very interesting conversations sitting around watching them. Why not just schedule conversation time? The wine blending was the sort of entertainment best enjoyed after drinking a significant amount of the product.

Then there were the sessions when we were supposed to talk about the “pressing problems” that we each had. We decided on a few to discuss, then broke up into small groups. Now, these problems have been vexing the industry for a long time. You know, questions like “How should we support multithreaded computation in a programming language.” Do they really expect a breakthrough in an hour? There were none; it was a waste of time. It reminded me of one of the Sun meetings when the Sun Sigma crew split us up into groups ad ordered us to “think outside the box”. They seem to expect magic to occur.

Finally there was the obligatory business methodology consultant. The less said about him the better. His book is going straight to the library book sale. I admit I have a slightly guilty conscious about that. Perhaps I should destroy it instead, so no one will be led astray.

So we had the good, the bad, and the decidedly ugly. delivered in a beautiful setting. There were some interesting discussions, I’ll have to find out what it’s OK to talk about before I write about them.

Oct20

Hello Again

Categories: General
0 Responses

I’m now well established at MicroSoft, and felt like starting up a professional blog again. I’ve moved some posts from my blog at Sun to provide some context.

Some people like to call MicroSoft the “Evil Empire”. Actually, it’s no more evil than any other large company, but it is most definitely an empire, and I’ve been amused to discover just how much of an empire it is. Hence the subtitle.

I haven’t had time to do anything interesting yet, like making it look pretty or adding interesting links. In fact, just getting the blog up has taken up most of tonight, so I’ll get to that later.

Jul28

Goodbye

Categories: General
0 Responses

This is my last day at Sun, and it’s with truly mixed feelings that I say goodbye. It’s been a great 13 years.

This blog never got going as well as I hoped. We got busy putting together new plans and a proposal for the future HPCS project, and though there was lots of interesting stuff, I couldn’t write about any of it! I didn’t have the time or energy to make stuff up just to post to the blog. Besides, I think that sort of defeats the purpose of a log.

I’m going to be working for MicroSoft at a new group aimed at multi-threading tools and compilers, possibly moving to low-end HPC. I don’t know what MS’s blog policy will be, but I’ll find out. When and if that gets going, I’ll write about it in my personal blog, which up to now has been aimed strictly at family and friends.

I wish Sun and all of my friends there the very best, and I hope to see many of you over the next few years.

Feb23

Abstraction Levels

Categories: Productivity
0 Responses

I accidently posted this on the wrong blog, but it applies here too, so I’m just leaving it. Those forced to read it both places, please forgive!

I’m reading an interesting book by Don Knuth, Things a Computer Scientist Rarely Talks About. A lot of it has nothing to do with computer science, though it is very interesting, but I found the following gem:

One of the main characteristics of a computer science mentality is the ability to jump very quickly between levels of abstraction, between a low level and a high level, almost unconciously. Another characteristic is that a computer scientist tends to be able to deal with nonuniform structures — case 1, case 2, case 3 — while a mathematician will tend to want one unifying axiom that governs an entire system. … Experience shows that about one person in 50 has a computer scientist’s way of looking at things.

That’s a fascinating observation that tends to align a lot of the data about the expertise gap. It’s not just expertise, so training won’t really handle it. Education, in the true sense might, and apprenticeship might help, but it might just take genetics. It also fits what I was saying about levels of abstraction.

It makes you really want something like Fortress, so the library writer, who is a computer scientist, can paper over the gaps while the mathematician/physicist can think at his own level.

Feb17

Abstract Thought

Categories: Productivity
0 Responses
Sorry there isn’t much going up here, but we are all busily preparing for a huge presentation to Darpa. This is where we tell them all of the wonderful things we’ve done, and the wonderful plans we’ve made. Then we hope that they want us to do more of them.Anyway, though my partners are busy preparing posters for the presentation, my talk is frozen and I have a little bit of time. So I thought I’d talk a little about abstraction.
The mantra among the software engineering community is that increasing the level of abstraction (the language level) increases productivity. There is certainly some truth to that. One poster child for abstraction is garbage collection, which replaces allocation and deallocation with the abstraction of infinite memory. For programs where this works, it truly does improve productivity. All is not, however, sweetness and light.

I recently sat in on a panel of HPC managers and programmers, talking about what would improve their lives. A manager got up, and said that he wanted a high level language that matched the abstraction of mathematics, in which the compiler and runtime took care of all of the performance issues. A programmer got up and said that he wanted a high level language that gave him explicit control over data layout and similar performance-related issues. Of course, as is usual, both are right. The manager is right to want an abstract language that will make it easier to translate mathematics into programs. The programmer, on the other hand, had to face the fact that the abstraction offered is never perfect. In particular programs, as opposed to equations, have performance characteristics. They may be too slow, or too big, and the programmer, armed only with the high-level code, has no control over either factor. What he needs is a way to ignore the abstraction, which is imperfect in the ways that he cares most about, and to manipulate those performance elements directly.

Guy Steele has been designing a language that tries to meet both requirements. You can read about it in general or in excruciating detail, but the important idea related to our current discussion is that it provides a separation between the abstract algorithm specification and the important implementation details that determine speed. The other HPCS vendors have their own languages with similar characteristics. Cray is developing Chapel and IBM is developing X10. The PGAS languages UPC and Fortran, which I mentioned earlier, are another, though lower level, attempt to add data placement to the language while keeping algorithmic development simple. These languages are a recognition that the abstractions offered for programming mathematics are broken in ways that are important for HPC.

Sometimes, though, abstraction fails simply because it’s harder to use than more direct approaches. Sometimes, you are much better off with direct manipulation of important objects. My favorite example is the game editor offered with products like WarCraft. (Note that I resisted the temptation to add a link to the gaming company!) When you are building a field to play the game, you don’t want to write a loop that puts mountains, N, E, S, but not in the middle, and a ridge running NW to SE. No, you want to say “Mountain. There. There. There, (no, remove that one), There….”. If you don’t like computer games, consider a GUI builder, it’s the same sort of thing. This is a case where direct manipulation of the objects of interest beats going though a set of indirect steps. Oh, yes, this is a lot more abstract than bits, but it reduces the task to a concrete one, not an abstract one.

More on this later, I need to knock off for some sleep.

Feb1

Good Ideas, Bad Ideas

Categories: Computer Science
0 Responses

I just read a great article in the latest issue of “Computer”. Good Ideas, through the Looking Glass, by Niklaus Wirth. It’s a discussion of ideas that looked good at the time, but haven’t made it in the long run. A warning: this article requires an IEEE membership to view. If you can’t see it, you need to join the IEEE Computer Society, at a minimum. There are other ways to see it. Your company may well have a blanket access, or you can subscribe to the IEEE Digital Library, which is a great bargain if you do any online literature searches. Really, just join, you won’t regret it.

Jan31

Hummingbird Simulation using UPC

Categories: General
0 Responses

I showed a couple of slides from a PGAS conference below, but today I just got a real treat. It’s a dvd with videos of the conference plus some very interesting animations. This is an animation of a simulation of a hummingbird implemented using UPC (Unified Parallel C), a PGAS language. It’s an alternative to using MPI for cluster computing, and many find its higher-level communications easer to use than MPI. The video of the talk should give you an idea what is happening here. I’ve loaded these videos onto my own web server, since Sun won’t let us load such large objects here. The animation is 20 MB and the talk is 65 MB. I may be forced to take them down one day, but for now, enjoy. Oh, you might want to download them before viewing.