Monday, February 28, 2005

Time Marches On

I recently realized that March is fast approaching. If my goal is to do my final in May, then that means I need to finish all my work by April. Basically that means I have one month left.

My advisor thinks I won't make it in time for May, but that I'll definitely finish up by August. That's not good enough for me. I'm determined to finish up by May. June would be okay, but no later than that. I need to get out of here!

I've started working on Saturdays. I'm going to keep doing that. And I'm going to work late in the evenings too. I really need to get back in the zone like I was last year at this time. Last year, I worked 12-hour days sometimes, because I would come in really early, and then go home late. This year, I have a few other activities to distract me, like teaching karate, although last year I had a job outside of my research. I know that I can do this.

Friday, February 25, 2005

Ten Things I've Done that I Bet You Haven't Done

1. Convince an angry student that the professor's seemingly-unfair policy is actually fair.

2. Play the violin in public in three different countries: USA, UK, and Sweden.

3. Write so much in one day that my hand is permanently injured.

4. Lose 62 pounds.

5. Teach karate to 8-12 year old students.

6. Sass a professor during my qualifying exam, and still manage to pass.

7. Go on to become good friends with professor from #6.

8. Get a C in a class taught by a sexist professor, when otherwise my GPA was 3.9.

9. Get into grad school in a field I know nothing about.

10. Climb halfway up a mountain at the age of 11, with my dad distracting me with math problems from how much I hate hiking.

(Everybody feel free to tell me where my list intersects with your life, and then make your own list!)

Thursday, February 24, 2005

Adventures in Monte Carlo Integration

I have been working on an implementation of my problem in three dimensions. Generally, it is hard to generalize from one to two dimensions, and it is even harder to go up to three. This case is no exception.

When you want to integrate a function of more than two dimensions, the best way to do it is called Monte Carlo integration, a method in which you select random points in space, evaluate the function there, and sum them all up to get an idea of the integral. How to select those random points in space is a difficult problem. And the optimal method for one problem isn't necessarily optimal for another problem.

Today I've been trying to figure out how to meld one person's Monte Carlo program with another person's random number generator. So far, so bad. But I may be able to figure out a hack which might work. I may need the help of my expert office-mates, but eventually, I will figure this out.

Tuesday, February 22, 2005

Symposium on Graduate Education

Yesterday I went to a symposium on graduate education, which was actually pretty interesting. The plenary speaker was a woman who is the dean of the graduate college at UC-Berkeley. She talked about her research into the effects of family choices on the success of male and female academics. Basically, as expected, men could generally have a whole tribe of offspring, and it didn't change the likelihood of them achieving tenure. For women, on the other hand, it was a completely different story. It was really interesting because she examined the same question from many different angles. I'm certainly not a social science expert, but it seemed like she did a pretty thorough study.

If you define success as achieving tenure, then childless women were the most successful, followed by, amazingly enough, single mothers. Women who had their children before obtaining their Ph.D. came in third. For men, their parental status was not as significantly correlated to their success rate.

Many women Ph.D.'s end up in what she called second-tier jobs, as adjunct, part-time, instructors with no job security and no chance of promotion. An amazing statistic that she gave was that something like 60% of men academics who were married with children had a spouse who worked outside the home only part time or not at all. For women academics, that number shrank to 8%.

She also talked about all the nice policies that Berkeley has implemented, including automatically granting professors a one-year extension of the tenure timeline and 1-2 semesters of no teaching upon the arrival of a new child. And she implemented a policy at Berkeley that grad students who have children get a $5,000-$8,000 grant upon the arrival of their child. Here, our insightful leadership grant us a generous two-week maternity leave.

This dean from Berkeley seemed to be on friendly terms with our Graduate College dean, so it seems like she might be able to influence him to implement some of the reforms she has made at Berkeley. But I'm not going to hold my breath, because I know how slowly the wheels turn around here.

Friday, February 18, 2005

Happy Friday!

Perhaps it's because I've been so busy, but this week seems to have flown by. Overall, things have gone pretty well for me.

Yesterday I went to a luncheon sponsored by the Women in Engineering Program, with a guest speaker from IBM. I would really like to work at IBM, so I talked to this woman afterwards, and she told me that she knew some people in the area I was interested in, and would be willing to forward my resume to them. So it seems good that I went to that luncheon, because I got more than just free food out of it.

And today I figured out some more about the performance modeling I have been doing. Specifically, I figured out, thanks to modeling, that something I had considered doing was actually a bad idea. I had thought of adding a fourth level of parallelization to my program, and it turns out to be a bad idea, at least if I try to do it the way that I thought of doing it.

Speaking of parallelization, there's something that has been bothering me for a while about the jargon in my field. In parallel computing, you have one processor that's in charge, and it's called the master, while the other processors are called slaves. While I know we are talking about inanimate objects here, it still offends and possibly alienates people who were historically enslaved.

Computer Science was obviously developed by white men, because there are plenty of examples of jargon that could be offensive to women. The trick is to understand that Computer Science was developed by white men with no social skills, who weren't setting out to be offensive to traditionally under-represented groups.

But still, in my work, I don't want to use that terminology. My parallelism is actually a three-level model, so I need another word for the "middle management" processors anyhow.

I think I have figured out what to do. I plan to rename the master as "Alpha." The middle ones will be "Beta," and the lowest-level ones will be "Gamma." This way, there is a hierarchy, but it doesn't invoke the legacy of hurt and hate that master/slave does.

Thursday, February 17, 2005

Keepin' Busy

I managed to correct my chapter and return it to my advisor just before I left on Tuesday. Then yesterday and today I have been working on a model for the performance of my parallel program.

I'm trying to model it mathematically. This involves writing down a lot of equations. My hand is officially worn out, so I'm going to have to find something else to do for the rest of the day and go back to the model tomorrow when my hand has had a chance to rest.

(For those of you playing along at home, I injured my hand over a year ago, by writing twenty pages in a day. You know how you get writer's cramp when you write a couple of pages? Well, I get writer's cramp when I write a couple of lines. I have a special ergonomic pencil, which helps, but not very much. Also, I write really big, which also helps, but once again, not very much. So I try to limit my writing. Typing doesn't bother me. It's gripping a pen or pencil that is extremely painful. At home, I make Jeff write all the checks and address envelopes and the like. I even made him fill out the tax forms this year, under my supervision. I try to go shopping with Jeff so that he can sign the credit card slip. If I'm alone, I sign my initials instead of my full name. Every little bit counts!)

It's an interesting problem, though, which makes me disgusted that I'm going to have to wait until tomorrow to solve it. So instead I'll tell you all about it! Read on for more than you ever wanted to know about parallel program performance evaluation!

Remember a few weeks ago I wrote about benchmarking my program to see if it was scalable. I ran the program using different numbers of processors, hoping that if I used twice the number of processors to solve the same problem, it would take half the time. If that were true, then my program would have a speedup of N (where N is the number of processors), and an efficiency of one. In real life, that never happens, because there are costs associated with parallelizing a program, which decrease the efficiency and speedup. It's like if you get someone to help you prepare dinner, it takes less time on the clock on the wall because one person is chopping the vegetables while the other is measuring the ingredients, for example. But it doesn't take exactly half the time, for a number of reasons. First, you may have to communicate to your assistant what you want them to do next, which you wouldn't have to do if you were doing all the work yourself. Second, there are bottlenecks in the preparation of a meal. If we're making lasagna, and I'm in charge of the sauce and you're in charge of the cheese, you have to wait with the cheese until I finish the sauce. We can't start the layering until both the sauce and the cheese are ready. Preparing the cheese takes a lot less time than preparing the sauce, so we have an imbalanced workload, but there's no way to balance it out.

We have the same issues in parallel computing. Once you start using more than one processor, you have to take into account the cost of communication between processors. Also, you may not be able to divide the work up into perfectly even parts, so some processors may have some down time as they wait for others to finish up. There's also a tradeoff between load balance and communication. Sometimes it's faster to do it yourself than to communicate to your assistant how to do it. For example, if we're going to make lemon merangue pie for dessert, it's probably better if you just go ahead and make it yourself instead of telling me how to do it. Likewise, in a parallel machine, the cost of communication can be more costly than the cost of leaving the load unbalanced.

My program has a pretty good speedup and efficiency. The efficiency is close to one; in the worst case it seemed to be about 80%. Calculating that was easy; the hard part is determining a formula for the time that the program takes. Basically, you have to figure out the time spent in communication and the time spent in computation, and add them together with the time that the program spends in serial computation. I'm having some trouble calculating the time spent in computation, but with luck I'll get that figured out tomorrow.

Tuesday, February 15, 2005

Adventures in Writing

Yesterday, my advisor finally returned to me the chapter of my thesis that I had given to him for review. It was covered in red. He likes to go through it with you and explain every mark, which is good for learning to become a better writer. The thing is that the chapter was around 30 pages, so he had a lot of comments to make. We ran over our allocated meeting time, and there was still more to discuss before he had to go on to his next meeting.

I was really tired all day, because I hadn't had enough sleep the night before, so it was a little hard to take all his criticism, but I did manage. I fixed up most of the stuff he criticized, and I'm going to finish it today and send the chapter back to him for another iteration.

Friday, February 11, 2005

Adventures in Chaos

Last night's karate class was an adventure in chaos. It's hard to have ten students in a small room all demanding your attention. And because they're kids and not graduate students, they don't have the presence of mind to figure out things to do without my supervision.

I tell them to keep working on their kata, and they are clearly bewildered. "Why should I work on it? I already know it!" they say. Well, actually, you don't know it. There are a lot of mistakes. I point them out, they practice the kata once, and then think they have it. Then they come and interrupt me while I'm working with someone else, and then they get disgusted when I tell them to go back and keep practicing some more.

I'm able to not take it personally. I guess that's just the way it is with kids. I feel sometimes like the well-behaved, compliant students don't get enough attention, and that I inadvertently reward the terribly obnoxious ones. Some of the more advanced students haven't learned a new kata in ages, and I need to pay more attention to them.

I'm hard on myself as a teacher, because I don't want to screw things up. I recall some of the really crappy teachers I had as a child, and I don't want to be like them. But sometimes I think I overanalyze everything, instead of just acting on my gut feeling. I'm just so scared of messing up that I think five times about what I'm going to do before actually doing it.


And I feel like the rest of my life is in chaos right now too. A lot of my work is of the "hurry up and wait" variety, meaning that I scramble around trying to solve a problem, and then I have to wait for a job to run before I find out if my solution worked. My office-mates, who are not in such a rush to graduate, simply surf the internet, read a book (work-related or not work-related), or relax while their jobs run. I, on the other hand, am packing things into these wait times.

In particular, I've been writing slides for my defense and job interviews. Obviously I don't yet have all the data that I will include in these slides, but I can certainly take my prelim slides and update them with everything that I currently have. And I've been writing slides that explain in more detail some of the things that I gloss over in the main slides, such as Chlodovsky's extension of the Bernstein polynomials, and the Delannoy numbers and expense of finite differencing.

But it's kind of chaotic because this writing feels very iterative, in the sense that I had a first approximation to the slides (copied from my prelim talk), then I made another pass and updated the information in those slides, then another pass to add more information, and another pass for even more information, etc. I worry that I'll forget something important.

I've gotten a lot of other things out of the way, too. I've already paid my taxes, due April 15, but I know I'm going to be insanely busy then. I paid the trash bill through April, too. Everything else is automatically debited from my bank account.

I don't really have to worry about the trip to Sweden, either, because my advisor's secretary will handle all the details of that. I do worry about the state of my house, because we will have to get it much cleaner and neater if we expect to sell it for a decent sum. I think we will have to hire somebody to scour it for us, because I don't see that my husband will be able to do it himself. The yard needs a lot of help, too. Hopefully my dad can come sometime in the spring and help us fix it up neat enough that it will pass for nice when we try to sell.

I need to take my brown belt test, and I need to do it soon, because my karate will suffer when I start traveling for job interviews. And I need to actually get a job or something wild and crazy like that. Otherwise all this rushing will be for naught. Based on talking with the guy from Sandia, it will take 2.5-3 days per job interview, so that will eat into my time too.

Thursday, February 10, 2005

Barb's Birthday

Yesterday was my aunt Barb's birthday. Glen et al. put on a surprise birthday party for her last night. I went to it, but unfortunately Jeff wasn't feeling up to it. He did, however, bake some of his world-famous chocolate chip cookies, which I took along with me to the party.

Barb was very pleased about her surprise birthday party. She had not suspected that anything was going on, and didn't actually catch on that it was a surprise party until the second or third guest walked in the door.

Jeff's cookies were a huge success. They were freshly baked about an hour before the party, so the chips were still slightly gooey and the cookies were soft. People remarked about how delicious they were, and wanted the recipe. One woman was particularly interested in getting the recipe, and asked how she could best bribe my husband to let her have it. I told them all that Jeff is a master chef, and I don't know how he did it, but he worked his magic on those cookies. Some of the secret ingredients I do know: oatmeal, chunky peanut butter, and toffee bits, but I really don't know in what proportions or anything like that.

He really is an excellent cook. When we first got married, he didn't know very much about cooking. I taught him what I knew, and from there he took it on his own. I am not embarrassed to say that he is a much better cook than I. He works his magic more on main dishes than on baked goods. With the exception of cookies, he doesn't do much baking. Baking is more my niche. So together, I guess, we make the perfect meal.

Wednesday, February 09, 2005

First Interview Scheduled!

So I just got off the phone with a guy from Sandia National Labs in Albuquerque, NM, and he wants me to come out and interview. This guy has been calling me, on and off, since August. Now that I'm actually getting to the point of graduation, he called and we set a tentative date for an interview: the last week of March.

This is pretty exciting! Although I don't actually want to work at Sandia, I am nonetheless pleased that somebody thinks I'm worth pursuing. I am treating this as a practice for the jobs I actually care about interviewing for. Plus, who knows; maybe they will get me to change my mind, and I'll be dying to work there. I'm going to go with an open mind.

Tuesday, February 08, 2005

Adventures in Programming

I am a terrible programmer. Some sort of law should be made against me writing a program. Luckily, I have smart officemates who actually majored in computer science in college, and therefore know how to do computer-related things like programming. Thanks to my vastly intelligent officemate, I was able to get this Monte Carlo integration program working.

I shouldn't be so hard on myself, because most of my poor programming is due to inexperience and insufficient background. I was reminiscing a couple of weeks ago about my programming accomplishments. I majored in Physics with a specialization in Computational Physics, which meant that I took three computation-related courses. I believe those were: 1. FORTRAN programming, 2. Numerical Analysis, and 3. Computational Physics.

(It was in my Numerical Analysis class that I got the first inkling that I might be interested in switching fields. Evidently I did quite well in that class, although the only lesson I got out of it at the time was that "subtraction is bad." On one of my homework papers, my professor wrote me a little note, saying something to the effect of "Have you considered graduate school in Computer Science? I would love to have a grad student like you!" That gave me the idea that maybe I could switch fields without too much trouble.)

That, folks, along with the C programming and Discrete Math courses that I took my fifth year of undergrad, were ALL the preparation I had for graduate study in Computer Science. Oh, well, that and the vast programming experience I had acquired working with Physicists.

For a Physicist (no offense to those reading!) I was actually quite computer-savvy. Once for a summer REU program, I actually wrote a FORTRAN program that had some subroutine calls (gasp!) and used some numerical algorithms from Numerical Recipes, which, I was told, was the Bible of numerical computation for Physicists. (Nowadays, as a true numerical analyst, I cringe at Numerical Recipes, which is actually riddled with errors.)

I had never even heard of parallel computing, MPI, or Linux. I had used some flavor of Unix during my studies at the University of Kentucky, but didn't know much more than a few basic commands. I didn't know of any good text editors, that's for sure.

The learning curve was pretty steep when I came here. But over the years, I have become very computer-savvy for a Physicist, and maybe even average for a numerical analyst.

Monday, February 07, 2005

Adventures in Being Incredibly Busy

Unlike my tireless sister Laura, I am not a workaholic. I always make time to relax and take it easy. Perhaps this explains why I am on my seventh year of graduate school! No, seriously, I think that it reflects the fact that I am more of a "Type B" personality.

My mother used to say, somewhat derisively, that I would never die of overwork. At the time, I took it as an insult, but now I see it as a positive aspect of my personality. I mean, who really wants to die of overwork? I'd rather die of "overplay." I hope that when my time comes, I go out of this world having a good time.

Another tendency I have is to talk and talk (or write and write) without ever getting to the point. Since I'm going all philosophical today, why does there have to be a point, anyhow? Maybe I just keep going for the sake of going, because I'm enjoying it or something. But really, I am digressing, because the point of today's installment is that I am incredibly busy.

My weekly meeting with my advisor ran over the hour allocated to it, because of the number of topics we had to talk about. First, we went over the thesis chapter I had given him for review. Every iteration I give to him is returned with a generous helping of red marks throughout. He likes to explain what he's marking, so that I will learn to write better. I definitely appreciate his constructive criticism.

Then, we talked about the performance evaluation runs I have been doing, and why some of them have been weird. He gave me some suggestions on how to follow through with that. After that we moved on to comparing the performance of my optimization method to some brute force methods. I still need to tie up some loose ends on that. And we ended on the 3-D implementation of the objective function, and how to find a good integration tool to perform the integral relatively accurately and cheaply. That is my biggest remaining project: implement the objective function in three dimensions, and add yet another layer of parallelism. This is what I am going to be working on the most between now and May.

Sometimes I get a little overwhelmed about having so much to do. But then I take a couple of deep breaths and remind myself that I can get it done, one step at a time.

Thursday, February 03, 2005

Adventures in Supercomputing

So as I said before, I'm performing these benchmarking runs on two supercomputers. The thing I don't understand is the fact that my program seems to break down at 512 processors on one of the computers, and 256 on the other.

It chokes when it's time to send out and receive messages at the very beginning of the program. At the beginning, there are two types of messages sent out: one type that has a constant length regardless of the number of processors, and another one with length inversely proportional to the number of processors (i.e., the more processors, the shorter the message length).

It probably isn't choking on the constant length message, because if it were, it would choke every time, independent of the number of processors. So it must be choking on the variable length message. The thing I don't get is that I would think it would choke at the same number of processors every time.

Wednesday, February 02, 2005

Countability

I love numbers.

Did you know that there are approximately 250 cranberries in a bag? I didn't know that until I counted them all the other night, as I split them in half to make cranberry bread.

And there are fourteen steps per half-flight of stairs in my office building. I know that because I count them every day as I ascend to my office. Fortunately, this number remains constant, no matter how many times I count it. Eighty-four stair treads to get to the fourth floor. Usually I take them in twos, so I only take 42 steps up, plus a couple of steps on each landing.

I got a pedometer, and I am anxious to use it, just to see how many steps I take per day. That will be very interesting.

If you use a quadrature routine on a 3-D function rather than a 2-D function, the accuracy is substantially lower. If you need N points for a 1-D function, then you would need N^2 points for a 2-D function, and N^3 points for a 3-D function, to attain the same level of accuracy.

I need to lose one more pound. This morning I weighed 180.0 lbs, and I need to get to 179 to be at the very top of the weight range for a person of height 5'11". My driver's license says I weigh 180, so it's nice that for once it's accurate.

I love pistachios. I bought a huge bag of them because they were on sale for $1.99/lb. I have probably eaten over two hundred pistachios. (I lost count a while ago.) They are delicious because they are salty and crunchy, two of my favorite things.

The other day, we bought two boxes of the store brand equivalent of Rice Krispies, because the tag on the shelf said they were on sale for 3 boxes for $5. But when they were rung up, the price was $2.99 each. Luckily, because I am incredibly anal retentive, I checked the receipt before leaving the store, and immediately went and complained at the customer service counter. As it turned out, the sale on the cereal had expired, but they had forgotten to take down the tags. But they still let me have the sale price. Actually, they gave me one box for free, and charged me $1.67 for the other, and counting tax and everything, I got a refund of $4.35.

I felt pretty good about it, although I think Jeff was impatient about having to wait an extra five minutes while I got my refund. But I told him, you know, I basically saved us $4.35 in five minutes. Suppose you earned $4.35 every five minutes. That's over fifty bucks an hour! If you worked 40 hours a week, 50 weeks out of the year, that's over $100K per year! If I could earn that for this level of exertion, I would be pretty excited. He had to admit that I had a point.

I find that I count everything. I count my steps as I walk, until I get distracted by something more interesting. I count my breaths as I fall asleep. I'm also very aware of the rhythm of sounds, and I count stuff like the number of cars that drive past, just by hearing them, not by actively counting.

Tuesday, February 01, 2005

No Name-Calling Week

I was informed by my alert office-mate Bill that this week was No Name-Calling Week. (Actually, he was wrong; last week was no name-calling week.) But I was inspired to see if I could make it through a week without calling anybody or anything names.

I am not a mean or cruel person. I restrict my rude descriptions to people or things that irritate me a lot. Most of the vitriol spewed from my mouth is aimed at supercomputers that don't do what I want them to do. I have a pretty long fuse, so name-calling is fairly infrequent.

Or so I thought! I had no idea how many times per day I call something "stupid" or "useless" until I started trying not to say it. My stupid hand was too sore to write. This useless book didn't have the information I wanted. The stupid website didn't accept my password.

And Turing, the supercomputer! All my jobs were crashing yesterday, and epithets endlessly raced through my mind. That "piece of Turing" (as it's known affectionately) was really getting on my nerves. It was hard not to call it a cheeseweasel (the all-time greatest epithet, coined by my wordsmithing sister Rachel), or something much worse!

I realize that this week's name-calling has been aimed at inanimate objects exclusively (well, I guess my hand is animate but it's not sentient on its own), but I'm still surprised by my negative attitude toward those objects. No Name-Calling Week has been a learning experience for me.