For several years now I have intended to join a CSA (community-supported agriculture) but never remembered to do so at the right time. Well, finally I remembered at the right time. Our membership is in. The produce will start arriving in less than a month. I am very excited!
We're going to get a wide range of vegetables, fruits, and herbs, as the season progresses. Including some things I don't think I like -- but I'm going to try them once just to be sure my tastes have not changed. It should be a fun culinary adventure and I'm looking forward to it!
Saturday, April 10, 2010
Tuesday, April 06, 2010
Adventures in Dealing with Bad Drivers
O vast blogging audience, I seek your insights into a very strange situation I found myself in this evening.
Today as I was driving home, I was driving behind a Very Bad Driver. This person was having a lot of trouble keeping his car on the road. He would drive in a straight line, go over the white stripe on the right or the double yellow stripe on the left, and then jerk the steering wheel to get himself back into our lane, with the net effect of zig-zagging down the road.
I thought he was probably texting or using his cell phone or something. I thought about calling 911 or something, because his driving was seriously dangerous. I feared for the lives of the people riding their bikes on the shoulder. Luckily he was on the double-yellow portion of his zig-zag when we passed them. But I could not call 911 because I was on my workplace's reservation, not on a public road, so the 911 folks would not be able to get to us. I could have called the laboratory security people, except that would have required me to look at my badge to find their phone number and then type it into my phone while trying to drive and not get myself killed by this crazy driver.
So what I did instead was honk at him every time he crossed either of the lines. Then I gestured to my eyes and then to the road, trying to indicate that he should keep his eyes on the road. While trying to observe what the heck he was doing, I began to think he wasn't actually texting. I can't be sure, but he was probably not drunk, either, because there is no alcohol allowed at our workplace, and I think of drunk drivers as following more of a sinusoidal path rather than a zig-zag. (I readily admit that that could be a false assumption.) I think he did see me gesturing. It really didn't help, though. He kept zig-zagging, and at 55+ mph as he had been doing throughout this encounter.
Eventually we got to the stoplight where I would turn left and he would go straight. At this point I drove up next to him and gestured to my eyes and the road once more. He looked terrified of me and of the road in general, as if he must be a brand-new driver or something. But he did not behave as I (or presumably, most people) did as a brand-new driver: drive really slowly but stay on the road. It seems to me that you have to have a certain level of skill in order to pass your driver's test, and this guy appeared to have not yet acheived that level yet. If he was a novice driver, he didn't seem to be qualified to drive alone.
So, vast internet audience, I have two questions for you: 1, What was that guy's problem? and 2, What should I have done in that situation?
Today as I was driving home, I was driving behind a Very Bad Driver. This person was having a lot of trouble keeping his car on the road. He would drive in a straight line, go over the white stripe on the right or the double yellow stripe on the left, and then jerk the steering wheel to get himself back into our lane, with the net effect of zig-zagging down the road.
I thought he was probably texting or using his cell phone or something. I thought about calling 911 or something, because his driving was seriously dangerous. I feared for the lives of the people riding their bikes on the shoulder. Luckily he was on the double-yellow portion of his zig-zag when we passed them. But I could not call 911 because I was on my workplace's reservation, not on a public road, so the 911 folks would not be able to get to us. I could have called the laboratory security people, except that would have required me to look at my badge to find their phone number and then type it into my phone while trying to drive and not get myself killed by this crazy driver.
So what I did instead was honk at him every time he crossed either of the lines. Then I gestured to my eyes and then to the road, trying to indicate that he should keep his eyes on the road. While trying to observe what the heck he was doing, I began to think he wasn't actually texting. I can't be sure, but he was probably not drunk, either, because there is no alcohol allowed at our workplace, and I think of drunk drivers as following more of a sinusoidal path rather than a zig-zag. (I readily admit that that could be a false assumption.) I think he did see me gesturing. It really didn't help, though. He kept zig-zagging, and at 55+ mph as he had been doing throughout this encounter.
Eventually we got to the stoplight where I would turn left and he would go straight. At this point I drove up next to him and gestured to my eyes and the road once more. He looked terrified of me and of the road in general, as if he must be a brand-new driver or something. But he did not behave as I (or presumably, most people) did as a brand-new driver: drive really slowly but stay on the road. It seems to me that you have to have a certain level of skill in order to pass your driver's test, and this guy appeared to have not yet acheived that level yet. If he was a novice driver, he didn't seem to be qualified to drive alone.
So, vast internet audience, I have two questions for you: 1, What was that guy's problem? and 2, What should I have done in that situation?
Sunday, April 04, 2010
Inquiring Minds Need to Know: Max and Ruby Edition
Some important things I need to know about Max and Ruby:
* I know, I know, the author says the focus is on the kids because that's how kids see things. However, Ruby does a lot of things for Max that parents should be the ones doing, such as buying him clothes, making his breakfast, and putting him to bed.
- Where are Max and Ruby's parents while they're getting into all these shenanigans?
- Are the parents dead? We never see them except in a picture on the wall of the living room.*
- Why does Grandma not step in and take care of her grandchildren, instead of leaving them all alone at their house?
- And why have child protective services not been called?
- How do they pay their monthly expenses? Did their parents leave them with some sort of annuity?
- Does the grocer who gives Max groceries in one episode put it on their tab, or does he just feel sorry for the kids?
- What does Ruby do with Max while she's at school?
- Where does Max get all those amazing wind-up toys that can fly, talk, and move around to just exactly where they need to go for the sake of the plot?
- Speaking of plot, why does this show have exactly one plot? Each episode is just a variation on the same theme: Max says one word that Ruby thinks doesn't have anything to do with what she wants, but he keeps repeating it, and finally at the end it is exactly the right thing.
- Why does Ruby whine incessantly at Max? I think I'm going to carve my ears out with a spoon if I have to listen to her talk to Max one more time.
- What does my son see in this show? And why (for the love of God) does he always want to play "Max and Ruby" with me?
- Why can I not get the theme song out of my head?
* I know, I know, the author says the focus is on the kids because that's how kids see things. However, Ruby does a lot of things for Max that parents should be the ones doing, such as buying him clothes, making his breakfast, and putting him to bed.
Monday, March 29, 2010
Architectures and Algorithms
I used to not care one way or the other about supercomputer architecture, back when I was more on the math side of things. After all, math is math, right? It should always work no matter what the machine looks like.
But as it turns out, a supercomputer's architecture influences the feasibility of algorithms. An algorithm that requires a lot of communication will not perform well on a supercomputer with a slow interconnect, for example. There are many different architectures out there, and different algorithms work better on different machines.
There are seven common patterns in the scientific computations we encounter in the high-performance computing world: sparse linear algebra, dense linear algebra, structured grids, unstructured grids, N-body problems, fast Fourier transforms, and Monte Carlo algorithms. There are other patterns, but these are the top seven in HPC. Each of these types of algorithms thrive under different conditions.
When you are designing and building a supercomputer, you have constraints on budget, power consumption, and size. What elements of the machine do you beef up, and what elements do you cut corners with?
At this point, you have to think of your intended users. If all your users are computational biologists studying protein folding, then there's a machine already out there for them: the IBM BlueGene. This machine is great for the N-body algorithms employed in the study of protein folding and molecular dynamics in general.
But, if your users are nuclear physicists, then the BlueGene is about the worst way to go. BlueGenes are low processor power, low memory machines -- the antithesis of an ideal nuclear-physics machine. The two things nuclear physicists need the most for their sparse and dense linear algebra calculations are memory and floating-point operations. Nuclear physicists would do best on machines that had huge shared memory banks, but unfortunately, there aren't really any machines like that these days.*
The hard part is when you have a mixed group of target users, who use more than one or two of those seven fundamental patterns. Since each pattern stresses different elements of the machine, you would like your all-purpose machine to have top-of-the-line processor speed, memory, and interconnects. But, since you are constrained by cost, power consumption, and existing technologies, something's gotta give.
Today, floating-point operations (Flops) cost practically nothing, because fast processors are cheap. So today's supercomputers are capable of performing more Flops than application scientists are capable of consuming. The real bottlenecks lie in memory and communication.
Memory is constrained by two factors: cost and power consumption. The cost of memory on a single node does not scale linearly -- 4 GB per core costs more than twice as much as 2 GB per core. Memory also requires a lot of power, so the more memory you have, the less power you have remaining to be used by the processors.
As for the interconnect, it definitely costs more for faster communication. Not only does the fiber cost more, but it also depends on how many miles of cables you must use on your machine. (And yes, for the big machines, it is on the order of ten miles of interconnect.) How do you want your processors to be able to communicate -- do you want a direct connection from every processor to another (completely infeasible on large machines due to space constraints, to say nothing of expense), or by hopping along a network? What kind of network will work? Most machines today use a 3-D torus, as a balance between cost and efficiency.
At my workplace, we are a general-purpose center so we try to have a balanced machine. This pleases everyone and no one. The thing we're the most lacking is probably memory, but that is true everywhere. If you look at the ratio of flop capability to memory capability, it has skyrocketed in the past decade, and that trend will continue. So what ends up happening is that codes that require a lot of memory (such as the nuclear physics applications) end up using a lot of nodes inefficiently in terms of floating point operations, but filling up every last bit of the memory. Part of my job is to help these folks reduce their memory footprint, thereby being able to run bigger problems on the same number of processors.
Now that I am more on the practical implementation side of things, I see how much of a difference the architecture of a machine can make in terms of application performance. I wish I had realized this earlier, because I would have made an effort to learn more then about all the very interesting ideas in computer architecture!
* There were machines that were considered to have huge amounts of shared memory, at the time when they were new, but compared to the agregate memory of today's top supercomputer, they had only tiny amounts of memory.
But as it turns out, a supercomputer's architecture influences the feasibility of algorithms. An algorithm that requires a lot of communication will not perform well on a supercomputer with a slow interconnect, for example. There are many different architectures out there, and different algorithms work better on different machines.
There are seven common patterns in the scientific computations we encounter in the high-performance computing world: sparse linear algebra, dense linear algebra, structured grids, unstructured grids, N-body problems, fast Fourier transforms, and Monte Carlo algorithms. There are other patterns, but these are the top seven in HPC. Each of these types of algorithms thrive under different conditions.
When you are designing and building a supercomputer, you have constraints on budget, power consumption, and size. What elements of the machine do you beef up, and what elements do you cut corners with?
At this point, you have to think of your intended users. If all your users are computational biologists studying protein folding, then there's a machine already out there for them: the IBM BlueGene. This machine is great for the N-body algorithms employed in the study of protein folding and molecular dynamics in general.
But, if your users are nuclear physicists, then the BlueGene is about the worst way to go. BlueGenes are low processor power, low memory machines -- the antithesis of an ideal nuclear-physics machine. The two things nuclear physicists need the most for their sparse and dense linear algebra calculations are memory and floating-point operations. Nuclear physicists would do best on machines that had huge shared memory banks, but unfortunately, there aren't really any machines like that these days.*
The hard part is when you have a mixed group of target users, who use more than one or two of those seven fundamental patterns. Since each pattern stresses different elements of the machine, you would like your all-purpose machine to have top-of-the-line processor speed, memory, and interconnects. But, since you are constrained by cost, power consumption, and existing technologies, something's gotta give.
Today, floating-point operations (Flops) cost practically nothing, because fast processors are cheap. So today's supercomputers are capable of performing more Flops than application scientists are capable of consuming. The real bottlenecks lie in memory and communication.
Memory is constrained by two factors: cost and power consumption. The cost of memory on a single node does not scale linearly -- 4 GB per core costs more than twice as much as 2 GB per core. Memory also requires a lot of power, so the more memory you have, the less power you have remaining to be used by the processors.
As for the interconnect, it definitely costs more for faster communication. Not only does the fiber cost more, but it also depends on how many miles of cables you must use on your machine. (And yes, for the big machines, it is on the order of ten miles of interconnect.) How do you want your processors to be able to communicate -- do you want a direct connection from every processor to another (completely infeasible on large machines due to space constraints, to say nothing of expense), or by hopping along a network? What kind of network will work? Most machines today use a 3-D torus, as a balance between cost and efficiency.
At my workplace, we are a general-purpose center so we try to have a balanced machine. This pleases everyone and no one. The thing we're the most lacking is probably memory, but that is true everywhere. If you look at the ratio of flop capability to memory capability, it has skyrocketed in the past decade, and that trend will continue. So what ends up happening is that codes that require a lot of memory (such as the nuclear physics applications) end up using a lot of nodes inefficiently in terms of floating point operations, but filling up every last bit of the memory. Part of my job is to help these folks reduce their memory footprint, thereby being able to run bigger problems on the same number of processors.
Now that I am more on the practical implementation side of things, I see how much of a difference the architecture of a machine can make in terms of application performance. I wish I had realized this earlier, because I would have made an effort to learn more then about all the very interesting ideas in computer architecture!
* There were machines that were considered to have huge amounts of shared memory, at the time when they were new, but compared to the agregate memory of today's top supercomputer, they had only tiny amounts of memory.
Sunday, March 28, 2010
The Ebb and Flow of Blogging
Sorry, vast blogging audience, not to have posted anything in more than a week, or anything substantial in nearly two weeks. I've been busy, but also, I find that my blogging inspiration comes and goes.
It seems like the number of topics I can think of to write about is inversely proportional to my posting frequency. In other words, the more I write, the more I can think of to write about. This month's big deadline left me with no time to keep up the fairly good pace I had last month. My momentum has been interrupted, and now it is an uphill battle to regain my inspiration.
I have a few ideas to expand upon the future of HPC, so I will keep working on those, and with luck that will expand my inspiration to other topics as well. Stay tuned.
It seems like the number of topics I can think of to write about is inversely proportional to my posting frequency. In other words, the more I write, the more I can think of to write about. This month's big deadline left me with no time to keep up the fairly good pace I had last month. My momentum has been interrupted, and now it is an uphill battle to regain my inspiration.
I have a few ideas to expand upon the future of HPC, so I will keep working on those, and with luck that will expand my inspiration to other topics as well. Stay tuned.
Saturday, March 20, 2010
Freedom!!!
I have spent the past two weeks tucked away in my office working on a big document. Finally, on Friday, it was turned in to the gubmint, and I am off the hook (at least for now). This weekend, I am celebrating by doing as little as possible!
Tuesday, March 16, 2010
The Diversity Tax
There is a tax that I pay for being a woman in computational science. Compared to my (majority) male colleagues, I am disproportionately called upon to do outreach activities and participate in photo shoots. So I can relate to what Female Science Professor is talking about when she seeks "diversity help." Although I've never been explicitly asked to do something for the sake of diversity, it has always been implicit in the invitation.
Many of my fellow "diverse" colleagues (and this group includes not just women, but African-American, Hispanic, and Native American men as well) resent this tax upon their time. I can see where they're coming from. After all, while I'm out talking to middle schoolers, all the dudez are actually getting some work done. It's true, we have to do these types of outreach activities on a volunteer basis -- we get no credit at work for helping to mold the minds of the next generation. Management loves that we do it, as long as it doesn't interfere with the day job.
I think this is a shame. And when I am in management, I will work to change that attitude and actually provide some concrete means of crediting those who go out and make a difference in the community.
In the meantime, though, I see the need for those of us who are not stereotypical scientists to do outreach. I don't let it take over my life, but I do enjoy speaking at middle schools and giving machine room tours to young people, especially girls. It is every citizen's duty to give something back to society, and I'm glad that I can contribute by being a role model for the next generation of scientists, and help make science that much more inviting to those who don't fit the stereotypes.
Many of my fellow "diverse" colleagues (and this group includes not just women, but African-American, Hispanic, and Native American men as well) resent this tax upon their time. I can see where they're coming from. After all, while I'm out talking to middle schoolers, all the dudez are actually getting some work done. It's true, we have to do these types of outreach activities on a volunteer basis -- we get no credit at work for helping to mold the minds of the next generation. Management loves that we do it, as long as it doesn't interfere with the day job.
I think this is a shame. And when I am in management, I will work to change that attitude and actually provide some concrete means of crediting those who go out and make a difference in the community.
In the meantime, though, I see the need for those of us who are not stereotypical scientists to do outreach. I don't let it take over my life, but I do enjoy speaking at middle schools and giving machine room tours to young people, especially girls. It is every citizen's duty to give something back to society, and I'm glad that I can contribute by being a role model for the next generation of scientists, and help make science that much more inviting to those who don't fit the stereotypes.
Thursday, March 11, 2010
Oh So Busy
Have I mentioned how busy I am lately?
I mean, dang!
You would think one little-old document wouldn't take that long to create. You would be wrong.
I mean, dang!
You would think one little-old document wouldn't take that long to create. You would be wrong.
Monday, March 08, 2010
HPC and the Future of Algorithms
As parallel computers get bigger and and more powerful, the way we use these machines has to change. The reason is that the machines are not just growing in clock speed, they're changing in architecture as well.
Over the past decade, leadership high-performance computing resources have evolved from systems with thousands of CPUs to systems with hundreds of thousands of multicore CPUs. And in this time, the algorithms in the best science application programs have adapted to this change. Today, the best programs exploit threading (such as OpenMP) within a node, and MPI between nodes. They use clever algorithms that minimize communication between nodes, with broadcasts and other all-to-all communication minimized.
But a radical change is about to happen. At this point, adding more cabinets of multicore CPUs to create an even bigger supercomputer is unsustainable in both space and power consumption. The most powerful supercomputer in the world takes up more than 4000 square feet of floor space -- the same footprint as a large house. It idles at 3 megawatts -- when it's just turned on but nobody's using the thing, it consumes enough electricity to power a large neighborhood. And during its full-machine runs of the Linpack benchmarks, it was demanding 7 MW. Quadrupling (or more) the machine size to reach 20 Petaflops* is not feasible, even here in the land of cheap land and plentiful power. So a new architecture is needed.
The harbinger of this new architecture was the first machine to cross the petaflop barrier, Roadrunner. Los Alamos National Laboratory, together with IBM, put together this novel machine which came online about two years ago. The novel part of the architecture was that it was no longer homogeneous -- not all the processors were the same. Roadrunner has three different types of processors in it.
Sadly, Roadrunner is going the way of the dodo, because it was too complicated to program. But it was a good experiment that led the way to the architecture that will be in the next 20 PF machines. In this next class of machines, additional floating-point operations will be provided by accelerators, kind of like the graphics cards in the machine you're probably using to read this post. This new architecture requires new algorithms to be able to exploit the accelerators. Accelerators are massively threaded -- on the order of a million different threads can be run at once on a single accelerator. So we're having to rethink our algorithms, and redefine them in a way that can exploit that kind of parallelism.
Looking to the future, the exascale** will be here before we know it. Early reports suggest that exascale machines will have millions of heterogeneous processors. At this point, we will have to completely rethink our algorithms.
Too many codes still rely on the manager-worker paradigm. There's one process, P0, who is in charge, who tells everybody else what to do, and collects and compiles results from them. This is a great paradigm if you don't have too many processes, but rapidly becomes inefficient when you reach more than a thousand. There are things you can do to improve the efficiency at higher processor counts, but in the end, this is not a scalable paradigm. Something will need to change radically before these codes will be able to run on millions of processors.
I like to think of the algorithm problem in analogy with music. Let's say that computations are like music, and computer processors are like musicians. Today's algorithms are like compositions for a marching band. When the algorithms are running, the band is in lock-step, each member with a very predefined role in the composition/part in the score. There's a leader, who keeps everybody in time. There's a predefined structure and order of operations. You can use different arrangements of the score to accommodate different sizes of marching bands.
But a marching band is not scalable. One conductor can be seen by only so many musicians. How would you lead a million musicians?
Maybe you could broadcast a picture of the conductor, or something like that, but it's not the same because the conductor can't keep track of all the musicians. Ultimately, you really can't lead a million musicians in lock-step. So you have to rethink your algorithm for creating music.
The musical equivalent of the algorithms that we must develop for the exascale are unfamiliar to the Western ear. If the ultimate goal is to create music, who says we have to do it in a scripted way? What if we provided certain parameters, such as the key and the starting note of the scale, and then let everybody improvise from there, perhaps with some synchronization between neighbors, kind of like a distributed, million-musician Raga?
In fact, the algorithms we have developed function very much in this way. The work is spread amongst all processes in a statistically even way. Due to variations in the machine, the algorithms may not run in precisely the same way every time, but this is controlled for and the answers we compute are still the same. The cost of communicating with millions of other processes is hidden by overlapping communication and computation. If you haven't heard from a process you need to complete the current task, move on to another task and come back to it later. The computations travel to the location where the data is, instead of the data being transported to the computation.
I've heard it said like this: let's say your goal is to reach the moon. There is a series of progressively taller trees that you can climb and get progressively closer to the moon. But there are not any trees tall enough to reach the moon by climbing them. So you have to think of another solution to reach your goal.
It will be interesting to see what application developers do to exploit exascale computing resources. How many of them will keep climbing trees, and how many others will abandon their tree-climbing programs in favor of something else?
* A flop is a floating point operation -- any basic arithmetic operation involving a decimal point, e.g., 1.1+1.1. A petaflop machine is capable of performing one quadrillion floating point operations per second -- a feat that would take everyone in the whole world, working together, doing one flop per second, roughly three days to complete.
** The exascale is the level above the petascale -- on the order of one quintillion flops. Exascale machines should come online in 2017 or 2018.
Over the past decade, leadership high-performance computing resources have evolved from systems with thousands of CPUs to systems with hundreds of thousands of multicore CPUs. And in this time, the algorithms in the best science application programs have adapted to this change. Today, the best programs exploit threading (such as OpenMP) within a node, and MPI between nodes. They use clever algorithms that minimize communication between nodes, with broadcasts and other all-to-all communication minimized.
But a radical change is about to happen. At this point, adding more cabinets of multicore CPUs to create an even bigger supercomputer is unsustainable in both space and power consumption. The most powerful supercomputer in the world takes up more than 4000 square feet of floor space -- the same footprint as a large house. It idles at 3 megawatts -- when it's just turned on but nobody's using the thing, it consumes enough electricity to power a large neighborhood. And during its full-machine runs of the Linpack benchmarks, it was demanding 7 MW. Quadrupling (or more) the machine size to reach 20 Petaflops* is not feasible, even here in the land of cheap land and plentiful power. So a new architecture is needed.
The harbinger of this new architecture was the first machine to cross the petaflop barrier, Roadrunner. Los Alamos National Laboratory, together with IBM, put together this novel machine which came online about two years ago. The novel part of the architecture was that it was no longer homogeneous -- not all the processors were the same. Roadrunner has three different types of processors in it.
Sadly, Roadrunner is going the way of the dodo, because it was too complicated to program. But it was a good experiment that led the way to the architecture that will be in the next 20 PF machines. In this next class of machines, additional floating-point operations will be provided by accelerators, kind of like the graphics cards in the machine you're probably using to read this post. This new architecture requires new algorithms to be able to exploit the accelerators. Accelerators are massively threaded -- on the order of a million different threads can be run at once on a single accelerator. So we're having to rethink our algorithms, and redefine them in a way that can exploit that kind of parallelism.
Looking to the future, the exascale** will be here before we know it. Early reports suggest that exascale machines will have millions of heterogeneous processors. At this point, we will have to completely rethink our algorithms.
Too many codes still rely on the manager-worker paradigm. There's one process, P0, who is in charge, who tells everybody else what to do, and collects and compiles results from them. This is a great paradigm if you don't have too many processes, but rapidly becomes inefficient when you reach more than a thousand. There are things you can do to improve the efficiency at higher processor counts, but in the end, this is not a scalable paradigm. Something will need to change radically before these codes will be able to run on millions of processors.
I like to think of the algorithm problem in analogy with music. Let's say that computations are like music, and computer processors are like musicians. Today's algorithms are like compositions for a marching band. When the algorithms are running, the band is in lock-step, each member with a very predefined role in the composition/part in the score. There's a leader, who keeps everybody in time. There's a predefined structure and order of operations. You can use different arrangements of the score to accommodate different sizes of marching bands.
But a marching band is not scalable. One conductor can be seen by only so many musicians. How would you lead a million musicians?
Maybe you could broadcast a picture of the conductor, or something like that, but it's not the same because the conductor can't keep track of all the musicians. Ultimately, you really can't lead a million musicians in lock-step. So you have to rethink your algorithm for creating music.
The musical equivalent of the algorithms that we must develop for the exascale are unfamiliar to the Western ear. If the ultimate goal is to create music, who says we have to do it in a scripted way? What if we provided certain parameters, such as the key and the starting note of the scale, and then let everybody improvise from there, perhaps with some synchronization between neighbors, kind of like a distributed, million-musician Raga?
In fact, the algorithms we have developed function very much in this way. The work is spread amongst all processes in a statistically even way. Due to variations in the machine, the algorithms may not run in precisely the same way every time, but this is controlled for and the answers we compute are still the same. The cost of communicating with millions of other processes is hidden by overlapping communication and computation. If you haven't heard from a process you need to complete the current task, move on to another task and come back to it later. The computations travel to the location where the data is, instead of the data being transported to the computation.
I've heard it said like this: let's say your goal is to reach the moon. There is a series of progressively taller trees that you can climb and get progressively closer to the moon. But there are not any trees tall enough to reach the moon by climbing them. So you have to think of another solution to reach your goal.
It will be interesting to see what application developers do to exploit exascale computing resources. How many of them will keep climbing trees, and how many others will abandon their tree-climbing programs in favor of something else?
* A flop is a floating point operation -- any basic arithmetic operation involving a decimal point, e.g., 1.1+1.1. A petaflop machine is capable of performing one quadrillion floating point operations per second -- a feat that would take everyone in the whole world, working together, doing one flop per second, roughly three days to complete.
** The exascale is the level above the petascale -- on the order of one quintillion flops. Exascale machines should come online in 2017 or 2018.
Friday, March 05, 2010
Weekend Fun
In a rare moment of convergence, both of my sisters and their sons will be at my dad and bonus mom's house on Sunday. This means that we'll be heading up there tomorrow and spending all day Sunday with them. There will be a cousin party. My sisters and I will have special sister time. I am bringing a cake baked by me and my favorite baking assistant, to celebrate my bonus mom's birthday (which was last month, but who's counting?!?!).
I am looking forward to this little break from work. For my latest responsibility, there is a hugely important report due to the gubmint after the Ides of March. I've been working on it nonstop for the past two weeks, so it will be nice to have some fun times with my family.
I am looking forward to this little break from work. For my latest responsibility, there is a hugely important report due to the gubmint after the Ides of March. I've been working on it nonstop for the past two weeks, so it will be nice to have some fun times with my family.
Wednesday, March 03, 2010
Today in "Things You Learn As a Parent"
Did you know that there are people who put videos of box fans and ceiling fans, complete with commentary about the quality of said fans, on YouTube? Neither did I.
Monday, March 01, 2010
Running Like Mad
So, I learned from blogfriend PhizzleDizzle that until 1960, there were no women's summer Olympics events in which women ran 800 meters or more. And the women's marathon was not an event until 1984! (Here's her post -- warning for those sensitive to words of the four-letter variety: it is full of very descriptive and highly justified cursing!)
Anyhow, this outraged me too after I learned about it. It's pretty sad that women couldn't participate in these sporting events because of erroneous beliefs about women.
Sometimes I think my struggles against gender inequity in science are bad, and then when I see the struggles in other fields... well, on the one hand I feel better, because it's not just my field; on the other hand, I feel dejection, because it's not just my field.
But, it made me realize that athletic talents in women is just as subversive as mathematical and scientific talents are. I'm no athlete, but I can at least participate in athletic endeavors and appreciate all the strides that have been made.
So, today I ran for an extra long stretch, out of solidarity with my Olympian systers. Because if some overweight, out-of-shape computational scientist can run non-stop for a mile or more, that just tells you how ridiculous these proscriptive rules of femininity are. I'm never going to win a race, but I can help run over these ridiculous stereotypes.
Anyhow, this outraged me too after I learned about it. It's pretty sad that women couldn't participate in these sporting events because of erroneous beliefs about women.
Sometimes I think my struggles against gender inequity in science are bad, and then when I see the struggles in other fields... well, on the one hand I feel better, because it's not just my field; on the other hand, I feel dejection, because it's not just my field.
But, it made me realize that athletic talents in women is just as subversive as mathematical and scientific talents are. I'm no athlete, but I can at least participate in athletic endeavors and appreciate all the strides that have been made.
So, today I ran for an extra long stretch, out of solidarity with my Olympian systers. Because if some overweight, out-of-shape computational scientist can run non-stop for a mile or more, that just tells you how ridiculous these proscriptive rules of femininity are. I'm never going to win a race, but I can help run over these ridiculous stereotypes.
Friday, February 26, 2010
Our Little Engineer
Vinny is incredibly observant, and curious about his surroundings. Every day when I drive him to his preschool, he asks me something new about the car. First he wanted to know what that blinking arrow on the dashboard was. So I told him about turn signals. Then he wondered what I was holding in my right hand, so I told him about the gear shift. He was pretty excited to learn that the car had gears.
He's also curious about things around the house. He asks me multiple times every day to tell him about how electrical outlets work. You know how sometimes people freshly in love want to hear their partner tell them how much they love them, over and over again? Well, he asks about electrical outlets with the same breathless excitement.
I take a great delight in telling Vinny about how all these things work. I try to explain it within his vocabulary, and I think he understands. He really enjoys discovering new things and I enjoy sharing those moments with him.
He's also curious about things around the house. He asks me multiple times every day to tell him about how electrical outlets work. You know how sometimes people freshly in love want to hear their partner tell them how much they love them, over and over again? Well, he asks about electrical outlets with the same breathless excitement.
I take a great delight in telling Vinny about how all these things work. I try to explain it within his vocabulary, and I think he understands. He really enjoys discovering new things and I enjoy sharing those moments with him.
Wednesday, February 24, 2010
By the Book
At bedtime, I read Vinny three books every night. Last night, I was reading him a book and his hand was obscuring one of the words. It was a book I'd read him a zillion times, but I was sure I knew what it said, so I didn't bother to move his hand.
Turns out that I knew what it meant, but I said a synonym of the actual word on the page. Vinny quickly corrected me with the proper word. I had to laugh that the person who can't yet read was correcting the one who can read.
He's really close to reading, but not quite there yet. He can read certain words, like "off," "stop," and "exit," and he can rattle off all the letters he sees on the page in sequence. We've been encouraging him to sound out words, and I think they're working on his reading in preschool too, but he doesn't quite have it yet. I think he will have it figured out very soon, though.
Turns out that I knew what it meant, but I said a synonym of the actual word on the page. Vinny quickly corrected me with the proper word. I had to laugh that the person who can't yet read was correcting the one who can read.
He's really close to reading, but not quite there yet. He can read certain words, like "off," "stop," and "exit," and he can rattle off all the letters he sees on the page in sequence. We've been encouraging him to sound out words, and I think they're working on his reading in preschool too, but he doesn't quite have it yet. I think he will have it figured out very soon, though.
Monday, February 22, 2010
Violins and Fungi
Did you ever wonder what beautiful violin music and fungi had in common? No? Why not?
As it turns out, scientists treated wood with fungi to see if they could create wood similar to the wood that Stradivarius used to create the violins that today go for millions of dollars. Please read this article about it, written by a high school student for more details!
As it turns out, scientists treated wood with fungi to see if they could create wood similar to the wood that Stradivarius used to create the violins that today go for millions of dollars. Please read this article about it, written by a high school student for more details!
Thursday, February 18, 2010
For ScienceGirl
Blogfriend ScienceGirl is about to embark upon a new journey in her life: she and her husband are about to have their first child! This exciting news is tempered by the fact that she and her husband have only recently moved to the place where they live, and don't have much of a network of friends yet. This means that they're not having a baby shower, and will have to depend mostly on themselves when the baby comes.
I unfortunately don't live close enough to help out (otherwise I'd be inviting myself to come help like I did for my sister et al. in December!), but at the suggestion of blogfriend EcoGeoFemme, we are holding a virtual baby shower/blog carnival for ScienceGirl. Hopefully our words of support will be good for something.
ScienceGirl, I'm privileged to know you not just through the internet but also in real life! I know that you will be an excellent mother and you probably don't need any of my help in doing so. Still, I hope that my experience will be of help to you. I would like to offer you two pieces of advice -- two themes, if you will, that have helped me make it through the journey of motherhood so far.
The first is "This, too, shall pass." The immense pain of childbirth? Lasts on the order of hours. The sleep deprivation? Doesn't last forever. The temper tantrums? They'll go away as she matures.
On the other hand, it's not just the bad things that pass. Before you know it, your Baby Girl will be sitting up, crawling, then walking. She'll become more and more independent with every passing day. And she'll be too big to cuddle in your lap before you know what happens. So you need to savor the moment -- watch her explore those new-found things called hands, enjoy the groans and sighs of ecstacy as she drinks that milk, and caress that soft, soft skin and those tiny little fingers.
There will be moments that you miss. I missed my son's first crawl, because I had to go to bed early so I could go to work. You may get jealous of her other caregivers, and this is understandable. But remember this: at the end of the day, nobody can compare to Mama. You will be loved by your daughter more purely, more fiercely, than she loves anyone else. Enjoy her, and your time with her, in the moment -- because this too shall pass.
The second thing I'd like to talk about is what it means to be a good parent. You don't try to get a Ph.D. in Science from a Prestigious Institution of Higher Learning if you're not ambitious and somewhat competitive. Making comparisons between yourself and others, and striving to be Better than others may work okay in an academic environment* -- but when it comes to parenthood, it does not. You will never be the Best Mother in the World; you can only strive to be the best mother you can be.
First, comparing your parenting, as measured by the outcome of your child's development, to others' will only serve to get you into trouble. "So-and-so's kid walked at 10 months, and mine had just started crawling then" -- so what? Different kids develop at different rates; one person's kid developing skills earlier than another's is not a referendum on their parenting skills, or on the quality of your child. Certainly, there's something to be concerned about if your child doesn't pick up these skills, but there is such a wide range of developmental curves, that in 99.9% of all cases, there's nothing to worry about.
Second, being overcritical of your own parenting actions is counterproductive. This is not to say that you should never examine your actions, or be critical of what you've done. But it is counterproductive to punish yourself over mistakes that you've made.
Examine your history and your behavior patterns, and know your vulnerabilities. For example, I tend to yell out of anger, because that's how I was brought up. Do your best not to be triggered into doing the undesirable behaviors by learning what it is that pushes that button. (In my case, it's when I am drawn into a battle of wills -- plus sleep deprivation, stress, hunger, etc.) Then, avoid getting into that situation. (I try to redirect rather than directly confront disobedience -- with the exception of immediate dangers like running out into the street -- which works much better than imposing my will on him ever could. I also try to keep myself healthy to avoid the second set of triggers.)
You won't always succeed. I have barked at my son more times than I would have liked, but it's okay. I've transformed those situations from failures to learning experiences by figuring out what triggered me, how I can avoid that situation in the future, and (most importantly) apologizing to my son for my unacceptable behavior. Our children use us as role models, and modeling grace and humility in the face of a mistake is one of the best ways we can help them deal with their own inevitable mistakes and frustrations.
But love yourself enough to know that even in that dark moment, you had only the best of intentions. Create a plan of action, forgive yourself, and move on. Get some help (from family and friends, or from an expert) if you need it. Just believe in yourself confidently enough to know that you are growing and maturing even as an adult, and that you are and will continue to mature into the best parent you can be.
ScienceGirl, I am so happy for you and I'm looking forward to someday meeting your little one. Please know that I'll be thinking positive thoughts in your general direction as you get adjusted to life as a mother, and that I'm only a phone call away.
* I find this assertion debatable, but that is a subject for another post.
I unfortunately don't live close enough to help out (otherwise I'd be inviting myself to come help like I did for my sister et al. in December!), but at the suggestion of blogfriend EcoGeoFemme, we are holding a virtual baby shower/blog carnival for ScienceGirl. Hopefully our words of support will be good for something.
ScienceGirl, I'm privileged to know you not just through the internet but also in real life! I know that you will be an excellent mother and you probably don't need any of my help in doing so. Still, I hope that my experience will be of help to you. I would like to offer you two pieces of advice -- two themes, if you will, that have helped me make it through the journey of motherhood so far.
The first is "This, too, shall pass." The immense pain of childbirth? Lasts on the order of hours. The sleep deprivation? Doesn't last forever. The temper tantrums? They'll go away as she matures.
On the other hand, it's not just the bad things that pass. Before you know it, your Baby Girl will be sitting up, crawling, then walking. She'll become more and more independent with every passing day. And she'll be too big to cuddle in your lap before you know what happens. So you need to savor the moment -- watch her explore those new-found things called hands, enjoy the groans and sighs of ecstacy as she drinks that milk, and caress that soft, soft skin and those tiny little fingers.
There will be moments that you miss. I missed my son's first crawl, because I had to go to bed early so I could go to work. You may get jealous of her other caregivers, and this is understandable. But remember this: at the end of the day, nobody can compare to Mama. You will be loved by your daughter more purely, more fiercely, than she loves anyone else. Enjoy her, and your time with her, in the moment -- because this too shall pass.
The second thing I'd like to talk about is what it means to be a good parent. You don't try to get a Ph.D. in Science from a Prestigious Institution of Higher Learning if you're not ambitious and somewhat competitive. Making comparisons between yourself and others, and striving to be Better than others may work okay in an academic environment* -- but when it comes to parenthood, it does not. You will never be the Best Mother in the World; you can only strive to be the best mother you can be.
First, comparing your parenting, as measured by the outcome of your child's development, to others' will only serve to get you into trouble. "So-and-so's kid walked at 10 months, and mine had just started crawling then" -- so what? Different kids develop at different rates; one person's kid developing skills earlier than another's is not a referendum on their parenting skills, or on the quality of your child. Certainly, there's something to be concerned about if your child doesn't pick up these skills, but there is such a wide range of developmental curves, that in 99.9% of all cases, there's nothing to worry about.
Second, being overcritical of your own parenting actions is counterproductive. This is not to say that you should never examine your actions, or be critical of what you've done. But it is counterproductive to punish yourself over mistakes that you've made.
Examine your history and your behavior patterns, and know your vulnerabilities. For example, I tend to yell out of anger, because that's how I was brought up. Do your best not to be triggered into doing the undesirable behaviors by learning what it is that pushes that button. (In my case, it's when I am drawn into a battle of wills -- plus sleep deprivation, stress, hunger, etc.) Then, avoid getting into that situation. (I try to redirect rather than directly confront disobedience -- with the exception of immediate dangers like running out into the street -- which works much better than imposing my will on him ever could. I also try to keep myself healthy to avoid the second set of triggers.)
You won't always succeed. I have barked at my son more times than I would have liked, but it's okay. I've transformed those situations from failures to learning experiences by figuring out what triggered me, how I can avoid that situation in the future, and (most importantly) apologizing to my son for my unacceptable behavior. Our children use us as role models, and modeling grace and humility in the face of a mistake is one of the best ways we can help them deal with their own inevitable mistakes and frustrations.
But love yourself enough to know that even in that dark moment, you had only the best of intentions. Create a plan of action, forgive yourself, and move on. Get some help (from family and friends, or from an expert) if you need it. Just believe in yourself confidently enough to know that you are growing and maturing even as an adult, and that you are and will continue to mature into the best parent you can be.
ScienceGirl, I am so happy for you and I'm looking forward to someday meeting your little one. Please know that I'll be thinking positive thoughts in your general direction as you get adjusted to life as a mother, and that I'm only a phone call away.
* I find this assertion debatable, but that is a subject for another post.
Tuesday, February 16, 2010
Feeling Blah
One problem with sending Vinny to preschool is that he's picked up some bugs from his classmates, which he in turn shares with us. In other words, he's the world's cutest disease vector.
So far he hasn't been sick enough to miss school (with the exception of one day that turned out to be a snow day), and I haven't been sick enough to miss work, but just sick enough to feel kind of blah. (Jeff, on the other hand, has really gotten it a lot worse than we have.)
My throat is kind of sore, just sore enough to be annoying. My head is kind of congested, just congested enough to be annoying too. It's not enough to pull out the cold medicine, but just enough to keep me from feeling my best. I imagine that Vinny is feeling the same way. Hopefully his immunities will build up and we'll stop picking up bugs from Typhoid Vinny.
So far he hasn't been sick enough to miss school (with the exception of one day that turned out to be a snow day), and I haven't been sick enough to miss work, but just sick enough to feel kind of blah. (Jeff, on the other hand, has really gotten it a lot worse than we have.)
My throat is kind of sore, just sore enough to be annoying. My head is kind of congested, just congested enough to be annoying too. It's not enough to pull out the cold medicine, but just enough to keep me from feeling my best. I imagine that Vinny is feeling the same way. Hopefully his immunities will build up and we'll stop picking up bugs from Typhoid Vinny.
Sunday, February 14, 2010
Math is Lucrative... Let's Be Computer Engineers!
I am pretty excited about the fact that Barbie's 126th career is Computer Engineer. I'm with blogfriend PhizzleDizzle, I'm happy that Barbie is becoming one of us. I'm more of the old school nerd than Barbie (or PhizzleDizzle, for that matter!) -- fashion is really not my thing. I might wear the shirt Barbie's sporting but only if it came in a looser cut, and even then, not to work.
The best thing about Computer Engineer Barbie, from my perspective, is that she's showing girls that they too can succeed in computer science. Computer scientists don't have to be male, they don't even have to be nerdy -- they just need to have an interest in computers/computing and follow their passion.
I for one am looking forward to the day that Barbie comes and installs our next supercomputer. In the meantime, I might just have to preorder her and display her prominently on my desk when she arrives late this year.
The best thing about Computer Engineer Barbie, from my perspective, is that she's showing girls that they too can succeed in computer science. Computer scientists don't have to be male, they don't even have to be nerdy -- they just need to have an interest in computers/computing and follow their passion.
I for one am looking forward to the day that Barbie comes and installs our next supercomputer. In the meantime, I might just have to preorder her and display her prominently on my desk when she arrives late this year.
Saturday, February 13, 2010
This Week's Headlines
If there were a newspaper boring enough to find me newsworthy, here might be some of the articles you could read:
Local Woman Still Recovering from Business Travel
Could use about 24 additional hours of sleep
Roomba Great Source of Entertainment for 3-Year-Old
Floors cleaner than ever
Computational Scientist Breaks Yet Another Compiler
'Not another bug report to file,' complain exasperated system administrators
World's Best Second-Rate Mathematician Gets Some Work Done this Week
Rare opportunity for work arises during two days without meetings
Mother and Son Have Dinner out at Area Restaurant
Father attending meeting
Area Woman Still Running Three Times a Week
'Thank goodness for my mean running coach,' she says
Local Woman Still Recovering from Business Travel
Could use about 24 additional hours of sleep
Roomba Great Source of Entertainment for 3-Year-Old
Floors cleaner than ever
Computational Scientist Breaks Yet Another Compiler
'Not another bug report to file,' complain exasperated system administrators
World's Best Second-Rate Mathematician Gets Some Work Done this Week
Rare opportunity for work arises during two days without meetings
Mother and Son Have Dinner out at Area Restaurant
Father attending meeting
Area Woman Still Running Three Times a Week
'Thank goodness for my mean running coach,' she says
Monday, February 08, 2010
Business Travel
Last week I was on business travel to our nation's capital. Now, as you all know, I hate travel, especially when it's business travel and not vacation travel. This was going to be a pretty long trip: leave home on Monday, return Friday night, and I was not feeling too happy about it. To make the trip more palatable, I arranged to have dinner on Wednesday night with one of my cousins who lives in the area.
As it turned out, a gigantic snowstorm was making its way towards the area. The meeting was shortened and we were to finish up on Thursday rather than Friday. Because of that, the organizers moved some sessions from later in the week to Wednesday night. To preserve my sanity, I skipped those sessions and had dinner with my cousin as originally planned.
The last question was, how to get out of there before the blizzard struck. On Wednesday, my airline was not letting people change flight plans without paying $800 for the privilege. So I called my work's travel agency and they reserved me a rental car (1/4 the cost of changing flights). I had two other friends in the same boat with the same airline, so driving home seemed both economical and doable. But just before we picked up the car, we thought we'd try one last time person-to-person at the airline counter. The folks at the counter had more of an incentive to let us change -- they were the ones who'd have to deal with us on Friday after our flights were canceled. So they agreed to change our reservations for free. We got home Thursday afternoon safe and sound, more than a day earlier than originally planned, and several hours earlier than I had anticipated based on driving.
As it turned out, a gigantic snowstorm was making its way towards the area. The meeting was shortened and we were to finish up on Thursday rather than Friday. Because of that, the organizers moved some sessions from later in the week to Wednesday night. To preserve my sanity, I skipped those sessions and had dinner with my cousin as originally planned.
The last question was, how to get out of there before the blizzard struck. On Wednesday, my airline was not letting people change flight plans without paying $800 for the privilege. So I called my work's travel agency and they reserved me a rental car (1/4 the cost of changing flights). I had two other friends in the same boat with the same airline, so driving home seemed both economical and doable. But just before we picked up the car, we thought we'd try one last time person-to-person at the airline counter. The folks at the counter had more of an incentive to let us change -- they were the ones who'd have to deal with us on Friday after our flights were canceled. So they agreed to change our reservations for free. We got home Thursday afternoon safe and sound, more than a day earlier than originally planned, and several hours earlier than I had anticipated based on driving.
Subscribe to:
Posts (Atom)