Archive for January, 2007

Introducing Duality

Posted in Activity 1 year, 6 months ago

Every year about 200 engineering from western and central Canada come together for a conference known as WEC. This year the event is to be held at UBC. My team’s representing SFU in the innovative design competition.

Duality

I’ve been super-super-super busy the last few days throwing together a demo for our technology. This also includes the hours I’ve spent talking and demonstrating to potential customers the features of our product. And passing along some of my enthusiasm. What I’ve really done is setup a feedback cycle between the customers and the engineers – it’s been working great so far.

We’ve just finished the poster for the project. We brainstormed the content and the basic layout earlier today. After about seven revisions Calin did for me, I was happy with the outcome. It’s about 3am right now, and this is the earliest I’m going to bed this week.

This is easily the best part of my life — I’m enjoying every moment of it. Thinking and solving problems during the day, while in transit or while tucking yourself in bed. Innovation without constraints to hold you back.

I’ll be offline for the rest of this week.

PS: I don’t want to disclose the idea just yet because some of the folks involved in this project want to protect it.

The Perks

Posted in Misc 1 year, 7 months ago

One of the biggest advantages of being in school (while most of your friends are graduating soon) is the immense opportunity to learn at all times. The Pacific Institute for the Mathematical Science center at SFU has lined up a list of high profile speakers over the next few months.

They are: Jesper Lutzen, Efim Zelmanov, David Brillinger, Craig Evans, Herbert Wilf, John Mason, Paul Seymour, George Papanicolau, Christos H. Papadimitriou and Marsha Berger.

As always, I’ll be writing about the “take home message” from these talks. For those at SFU, these will be held in the IRMACS center as usual.

Turbulent Winds II

Posted in Misc 1 year, 7 months ago

About a month back, I had written about winds that had knocked out power in my area. Well, the last two weeks have been hell for us here in Vancouver. Last week, there was heavy snowing that lead to a closure of the school. In about 45 minutes, the condition had become so bad that they had to close all roads leading to and from the mountain (SFU is atop a mountain.)

weather.png

When my friend finally dropped me home later that day, the roads looked like an ice-rink. With a bunch of amateur skaters. Stalled cars, jack-knifed buses and people shoveling snow to uncover their vehicles. Funny sight. Not.

School’s closed today as well.

Geni

Posted in Business 1 year, 7 months ago

I’m having a lot of fun with a Web2.0 startup that was just launched: Geni. From the about page,

Geni lets you create a family tree through our fun simple interface. When you add a relative’s email address, he or she will be invited to join your tree. That relative can then add other relatives, and so on. Your tree will continue to grow as relatives invite other relatives.

In about ten minutes, I was able to add thirty of my immediate family. As I get further and further from my immediate family, I couldn’t recall details off the top of my head. I have family with whom I’ve talked and chatted over IM, but never seen in person.

Some observations:

  • It doesn’t seem to be able to keep track of last names as I add nodes. This shouldn’t be a very hard feature to implement.
  • My family tree isn’t actually a tree, it’s a graph (in the mathematical sense.) It happens when you have nine kids with about thirty years between the first and last child.
  • I don’t have a last name in the traditional sense. My last name is my dad’s first name and so on. Though that stops pretty soon up the hierarchy.
  • I have just one word in my first name. My brother has two words in his name, but the second word isn’t his middle name.
  • One fine ancestor of mine decided to stop using his family name, because it was uncool to do so back in the day. As a result of that I don’t have one too.

It should be interesting to look at my tree in a few years from now. I’ve heard that I have a lot of relatives in North America – let’s see if I can track them down. Maybe there’s a few in Vancouver!

Fortress

Posted in Computing 1 year, 7 months ago

Fortress is a new language in development from Sun Research. It was one of the three participants in the DOD’s HPCS project (Cray’s Chapel and IBM’s X10 were the other two.) They’ve recently open-sourced their interpreter. Quoting an article I just read,

Fortress is designed to be a modern replacement for Fortran, a programming language born 50 years ago at IBM but still very popular for high-performance computing tasks such as forecasting the weather.

Out of curiosity, I checked out some of the presentations given by people involved in the project. Though Fortress is meant to be a general purpose language, I’m mostly interested in the use of this language for numerical computing. I’ll try to describe the three big features that caught my eye:

  • Notation is closer to math
  • Use of units in data types
  • Mapping data types to regions

Math notation

They’ve tried to keep the code syntax as close as possible to math notation. If you’ve ever read something like Numerical Recipes, you’d realize that it takes a lot of effort to “translate” the mathematical description of the algorithm to the prescribed source code. Try the conjugate gradient section sometime — it’ll make you throw up.

For example, the union between two sets

A \cup { 1,2,3,4 } is

written in code as A UNION {1,2,3,4}. The factorial function

f(n) = \prod_{i \leftarrow 1:n} i

is written in code as f(n) = PRODUCT[i <- 1:n] i.

Units in data types

It’s quite common in numerical code to scale units so that operations are done on numbers of the same magnitude. This helps prevent operations where you have to divide a really small number by a really large number. For example, in molecular dynamics, the units used for acceleration are typically angstrom-per-femtosecond-squared. After a while, keeping account of the units becomes a nightmare.

Fortress lets you attach units to the data types. Types are statically checked for correctness. This should make physicists very happy as dimensional analysis is done automatically.

Regions and distributions

Fortress Regions

Every object in Fortress has an associated region. Regions describe the hierarchical structure of memory and CPU resources (see the above picture.) Distributions are used to describe the parallel structure of data. For example, the same array can be mapped either to multiple cores of a single CPU, or over multiple nodes using distributions. Thus, the distributions assign data to a region.

This is really cool because this separates data distribution from program correctness. Right now, a physicist must also know a fair bit of computer architecture and performance tuning in order to write decent programs. At Supercomputing 05, the guys who had won the Gordon Bell prize spent a significant amount of time trying out different ways to distribute data. Each time a new scheme was to be tried, large chunks of their code had to be re-written.

In conclusion, these guys have come up with some impressive technology. Let’s see how this changes the way we program numerical code. Until then, check out the presentations, papers and talks at their website.