About

I am a software developer in Seattle, building a new AI software company.

Ads

April 2009

Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

Ads


« Agile Programming at Microsoft | Main | BCL Math »

December 09, 2005

Comments

Concurrent for/next loops have been in Fortran for quite a while (Fortran 90 standard, and some special parallel versions).

The problem is data interdependency. What if the value of x(n) depends on the value of one or more x(m|m < n) in some fashion? x(m) might be required to calculate x(n), or x(m) might cause the loop to break and return a value while x(n) is still being computed.

Do you attempt to detect these conditions? And if so, do you attempt to automatically synchronize such dependencies, or do you simply turn off parallelization for such loops?

Parallelizing loops without any sort of data dependency between cycles is an old hat (that's what Fortran does). The problem is, that's not terribly useful outside of matrix calculations.

Parallelizing loops with arbitrary data dependency is an unsolved problem AFAIK. I would certainly be nice if one of these new technologies could solve it, though!

I've heard suggestions that SQL Server can run slower on hyperthreaded processors!!

As time goes on the issue becomes code that can handle the CPU config...

One issue is how does that impact development time. The conventional techniques are bogged down with all sorts of cross cutting concerns, that make the gap between idea and running software a very big gap indeed.

With clean effective language / CLR design it might be possible to annihilate much of that gap!! I'm not convinced we're there yet. What I also see is long lead times in language development (C Omega, Mondrian, IronPython, F# seem to take forever to impact production languages).

The comments to this entry are closed.