Note that these computers are aimed at solving a particular problem (e.g. modeling weather) and not at being a vehicle to quickly solve any problem.
That's not entirely accurate. HPC systems are designed to solve a class of problems. That's not the same thing as a "particular" problem. Jaguar has, in fact, solved many different problems, including fluid flow, weather, nuclear fusion and supernova modeling. It's not going to run Word any faster than your PC but that's not what you buy a supercomputer to do.
Wikipedia has an ok article here. It has a link to the C++0x standard library implementation of futures which is somewhat limited. It has many of the same problems as the blocks concept - namely, it requires too much programmer interaction. To be done properly, futures should really be understood by the compiler so it can generate all the boilerplate.
I'm most familiar with the Cray XMT implementation of futures as described here. To briefly summarize, a future is a variable linked to the output of some asynchronous operation, usually a function call. When the future's value is set, a thread is spawned to process some task that produces the right-hand side of the future's assignment statement. Later on, when the future is actually used, there is a compiler-generated synchronization point. If the task is complete the parent thread just continues on as normal. If the task is not ready, the parent thread waits at the point of the future's use until the value becomes available. The future's thread can come from anywhere: a thread pool, a new spawn, etc.
So essentially futures are a natural way to express the concept of some side task producing a value needed "sometime later." The XMT has special hardware to assist in the efficient processing of threads and futures but one can implement futures on any machine that provides a threading model. It's a very nice abstraction that allows the programmer to get out from under the gory details and concentrate on the problem being solved.
Yes, they spawn tasks. The idea of futures is to add some syntactic sugar and let the compiler generate the code to spawn the tasks and do the waiting on the results.
With GCD, you don't "launch a thread". You "start a task", and how it is scheduled in a thread pool is up to the library.
So it's like a future. Or OpenMP tasks.
Why don't you just look at some examples of GCD use, and see for yourself? It really is much clearer to see the code in this case.
Yes, I did look at some examples. Unfortunately they're all in Objective C, but I got the main ideas, I think. I'm just noting that there isn't anything novel here. There's no big leap in productivity for writing parallel programs. You acknowledge this by referencing Microsoft's implementation.
There's nothing inherently bad about this. I was just hoping I might learn something new.
That's great and all, but systems have been doing this for years. When I launch a thread on Linux I don't care where it ends up. The scheduler takes care of it. Same with Perl, pthreads, OpenMP and pretty much every other threading technology I've ever used.
I must confess after reading comments here and the Wikipedia article, I'm not sure exactly what's novel here.
The "blocks" concept is nothing more than a repacked version of futures as far as I can tell. C++0x has anaymous functions and futures libraries for C++ already exist. I can see value in adding this for C but I sure hope Apple isn't thinking of trying to introduce a competing proposal for C++. We're way beyond that stage.
And I really don't get the connection to LLVM and jitting. What's the advantage?
As for the programming model, futures or OpenMP seem a much better way of expressing these kinds of things and they exist today. Better yet would be automatic parallelism extracted by the compiler when possible. It's limited to loops mainly, but anything to relieve the programmer from specifying this stuff is a win.
As for the scheduler, it seems Apple has simply decided that kernel threads are more flexible than user threads. That may be true, but this is an old argument. I just don't see the novelty.
Can someone enlighten me? An efficient implementation of threads for MacOS is certainly important so I'm not denying that the technology is important. But I don't understand the hype about it being somehow revolutionary.
The Volt is not a BEV, it is an EREV. That is, the Volt is a plug-in series hybrid that uses a small gas engine to drive the electrical system (somewhat like a diesel-electric locomotive except with gasoline). The goal is to run all-electric for 40 miles (covering 75% of commuters) and kick in the gas engine when the battery gets low enough.
And it appears to be on schedule for 2010. More info here and here.
Products are constantly being renamed, discontinued, bundled, unbundled and rebranded. Names are long, generic, and practically interchangeable
That summarizes a lot of the problems the Free Software community has, actually. GNOME and KDE are particularly bad offenders. What's a Phonon? Dolphin? What? Totem? Huh?
And we wonder why most people don't take Free Software seriously. People don't even know what's there because the names are so obscure. Codenames are worse than useless in a Free Software setting. They actually tend to become the actual name of the project and that just leads to confusion. It's silly all around.
And remember, the top income tax rtate in the U.S. was as high as 94% at one time and stayed at 91% for a good long while. The wealthy are severely undertaxed. Why else do you think the wealth gap is growing out of control?
I mean once the wealthy 10% pay at least the same tax rate as the middle class. Right now they pay a much lower effective rate. They should be paying a higher rate than everyone else because they benefit most from what we produce from taxes.
I'm sure the gasoline and other annual taxes to deliver the products to the customer cover the wear and tear on the roads.
You're quite wrong. A whole bunch of taxes goes into building and maintaining roads, including the sales tax. Hell, the federal highway trust fund is bankrupt because the taxes aren't keeping up with the costs.
Amazon most certainly uses all of the services you listed, because without those services there would be no civilzation and without civilization Amazon can't exist.
Amazon is in no way responsible for use taxes for roads if it does not operate its own fleet.
Amazon is responsible because Amazon exists in and benefits from society. Amazon could not do business without all of the things we invest in collectively. Amazon is shirking its responsibility, as are the internet purchasers who don't pay their taxes.
So what, tax toilet paper for sewer maintenance? Pencils for schools? No, we have a variety of revenue sources that we try to balance to get something done. Part of the problem is that there's a very loud minority that doesn't believe we should invest in anything collectively anymore. If you want to look for the reason the U.S. is teetering on the edge, they're it.
I actually agree with the basic principle here. However, we need to level the playing field first. Once wealthy individuals pay their fair share of taxes, then we can talk about eliminating some business taxes. Things like the property tax on businesses must stay because they're using a resource and should pay for it like everyone else. I'd be ok with eliminating the sales tax as long as we get at least a revenue-neutral progressive increase in the income tax.
No, no, NO! Fuel taxes do not cover the cost of roads. Look at what your state puts into raod construction and maintenance. You'll more than likely find that property taxes are the biggest source of revenue for that purpose. Sales tax also play a significant role in many areas. So no, the shippers do not pay the cost for Amazon, or even to cover their own use of roads.
The federal fuel tax doesn't come close to paying for road transportation. First, the federal highway trust fund is bankrupt. Second, it only pays for U.S. highways and interstates. Your state gas tax pays some for local roads but the biggest contributer to road maintenance is the property tax. The sales tax also plays a significant role in may areas. Third, the feds don't even pay for all of the maintenance on U.S. highways and interstates. Your state is paying for some of that too.
Are you kidding me? Just how petty are we today? This is not a "rights" issue. This is a responsibility issue.
First, if affiliates receive some kind of compensation from Amazon, they should pay taxes on it. Hopefully everyone can agree on that.
The larger issue is how to collect the state/local sales taxes from Amazon customers. All local retailers need to collect the taxes and send them to the appropriate units of government. It should be no different for Amazon or any other online or mail-order retailer. Their prices are artificially low due to the lack of sales tax and that's poor policy when it comes to maintaining a healthy business climate. We need our local retailers for many reasons, not the least of which is their local presence, meaning they have a stake in what happens in the community.
We're all responsibile for our society and paying taxes is part of that. Amazon and other non-local retailers essentially facilitate tax evasion by consumers. Yes, it is the consumers who are evading but it is Amazon and others who are complicit in it.
The local sales taxes pay for vital things like roads, schools, emergency services and a host of other things. Paying taxes isn't a case of, "do I benefit, and if not, I shouldn't have to pay." We all benefit from these things and we all have a responsibility to support them. Anything less is shirking your responsibility. I've never understood why anti-tax forces hate their communities so much.
Gas taxes and vehicle registration fees don't come close to paying for roads. Many areas use some form of sales tax to pay for part of their transportation infrastructure. So the shipping companies do not in fact pay for all of Amazon's use.
Amazon does make use of police services, schools, etc. because Amazon needs civilation to survive. That's the point. We can't separate one body's responsibility from another. We all depend on it all.
What infrastructure is Washington based Amazon using in North Carolina?
First, the obvious ones: roads, sewers, electrical.
Then, the less obvious ones: schools (Amazon needs an educated customer base), various economic assistance programs (Amazon needs a strong economy to have customers), hospitals (Amazon needs live people). There are more.
It's silly to try to enumerate and categorize these things because they interrelate. Amazon makes use of the whole community infrastructure and they should bne contributing to it.
Do you have any idea what a nightmare it would be for a small online retailer if they had to figure out what sales tax to charge on every transaction in every locality in the country.
Well, we have the internet, databases and computers. Automating this would not be difficult at all. States/cities/etc. would submit their tax rates based on GIS data and the federal government could maintain a database searchable by merchants. If the local units don't accurately represent their sales tax rates, then the onus is on them to fix it.
The technology is not a problem here. We can solve that problem. The real problem is a culture of disinvestment in our communities.
Note that these computers are aimed at solving a particular problem (e.g. modeling weather) and not at being a vehicle to quickly solve any problem.
That's not entirely accurate. HPC systems are designed to solve a class of problems. That's not the same thing as a "particular" problem. Jaguar has, in fact, solved many different problems, including fluid flow, weather, nuclear fusion and supernova modeling. It's not going to run Word any faster than your PC but that's not what you buy a supercomputer to do.
Wikipedia has an ok article here. It has a link to the C++0x standard library implementation of futures which is somewhat limited. It has many of the same problems as the blocks concept - namely, it requires too much programmer interaction. To be done properly, futures should really be understood by the compiler so it can generate all the boilerplate.
I'm most familiar with the Cray XMT implementation of futures as described here. To briefly summarize, a future is a variable linked to the output of some asynchronous operation, usually a function call. When the future's value is set, a thread is spawned to process some task that produces the right-hand side of the future's assignment statement. Later on, when the future is actually used, there is a compiler-generated synchronization point. If the task is complete the parent thread just continues on as normal. If the task is not ready, the parent thread waits at the point of the future's use until the value becomes available. The future's thread can come from anywhere: a thread pool, a new spawn, etc.
So essentially futures are a natural way to express the concept of some side task producing a value needed "sometime later." The XMT has special hardware to assist in the efficient processing of threads and futures but one can implement futures on any machine that provides a threading model. It's a very nice abstraction that allows the programmer to get out from under the gory details and concentrate on the problem being solved.
Yes, they spawn tasks. The idea of futures is to add some syntactic sugar and let the compiler generate the code to spawn the tasks and do the waiting on the results.
All you need with futures is an atomic operation.
Granted, this is a simple case but to do anything more complex would likely require explicit synchronization for any mechanism.
Ultimately we're talking about syntax and readability here and compiler-generated complexity always trumps user-written complexity.
Wow, this is tremendously ugly. Futures seem a better way of doing this:
#define COUNT 128
double sum = 0;
future double x[COUNT];
for(i = 0; i < COUNT; ++i) x[i] = complex_calculation(i)
for (i = 0; i < COUNT; ++i) sum += x[i];
The async accumulator thing looks confusing to me. With futures the accumulation becomes part of the spawned task.
So it's like a future. Or OpenMP tasks.
Yes, I did look at some examples. Unfortunately they're all in Objective C, but I got the main ideas, I think. I'm just noting that there isn't anything novel here. There's no big leap in productivity for writing parallel programs. You acknowledge this by referencing Microsoft's implementation.
There's nothing inherently bad about this. I was just hoping I might learn something new.
That's great and all, but systems have been doing this for years. When I launch a thread on Linux I don't care where it ends up. The scheduler takes care of it. Same with Perl, pthreads, OpenMP and pretty much every other threading technology I've ever used.
What's new here?
I must confess after reading comments here and the Wikipedia article, I'm not sure exactly what's novel here.
The "blocks" concept is nothing more than a repacked version of futures as far as I can tell. C++0x has anaymous functions and futures libraries for C++ already exist. I can see value in adding this for C but I sure hope Apple isn't thinking of trying to introduce a competing proposal for C++. We're way beyond that stage.
And I really don't get the connection to LLVM and jitting. What's the advantage?
As for the programming model, futures or OpenMP seem a much better way of expressing these kinds of things and they exist today. Better yet would be automatic parallelism extracted by the compiler when possible. It's limited to loops mainly, but anything to relieve the programmer from specifying this stuff is a win.
As for the scheduler, it seems Apple has simply decided that kernel threads are more flexible than user threads. That may be true, but this is an old argument. I just don't see the novelty.
Can someone enlighten me? An efficient implementation of threads for MacOS is certainly important so I'm not denying that the technology is important. But I don't understand the hype about it being somehow revolutionary.
The Volt is not a BEV, it is an EREV. That is, the Volt is a plug-in series hybrid that uses a small gas engine to drive the electrical system (somewhat like a diesel-electric locomotive except with gasoline). The goal is to run all-electric for 40 miles (covering 75% of commuters) and kick in the gas engine when the battery gets low enough.
And it appears to be on schedule for 2010. More info here and here.
$1 spent on road construction does not get you an additional $1 in economic growth;
Perhaps not, but $1 spent on public transit can get you $9 of economic growth. So yes, there is value in investing in the public good.
Brilliant:
Products are constantly being renamed, discontinued, bundled, unbundled and rebranded. Names are long, generic, and practically interchangeable
That summarizes a lot of the problems the Free Software community has, actually. GNOME and KDE are particularly bad offenders. What's a Phonon? Dolphin? What? Totem? Huh?
And we wonder why most people don't take Free Software seriously. People don't even know what's there because the names are so obscure. Codenames are worse than useless in a Free Software setting. They actually tend to become the actual name of the project and that just leads to confusion. It's silly all around.
And remember, the top income tax rtate in the U.S. was as high as 94% at one time and stayed at 91% for a good long while. The wealthy are severely undertaxed. Why else do you think the wealth gap is growing out of control?
I mean once the wealthy 10% pay at least the same tax rate as the middle class. Right now they pay a much lower effective rate. They should be paying a higher rate than everyone else because they benefit most from what we produce from taxes.
I'm sure the gasoline and other annual taxes to deliver the products to the customer cover the wear and tear on the roads.
You're quite wrong. A whole bunch of taxes goes into building and maintaining roads, including the sales tax. Hell, the federal highway trust fund is bankrupt because the taxes aren't keeping up with the costs.
Amazon most certainly uses all of the services you listed, because without those services there would be no civilzation and without civilization Amazon can't exist.
Amazon is in no way responsible for use taxes for roads if it does not operate its own fleet.
Amazon is responsible because Amazon exists in and benefits from society. Amazon could not do business without all of the things we invest in collectively. Amazon is shirking its responsibility, as are the internet purchasers who don't pay their taxes.
Except for the sales tax you conveniently ignored.
So what, tax toilet paper for sewer maintenance? Pencils for schools? No, we have a variety of revenue sources that we try to balance to get something done. Part of the problem is that there's a very loud minority that doesn't believe we should invest in anything collectively anymore. If you want to look for the reason the U.S. is teetering on the edge, they're it.
I actually agree with the basic principle here. However, we need to level the playing field first. Once wealthy individuals pay their fair share of taxes, then we can talk about eliminating some business taxes. Things like the property tax on businesses must stay because they're using a resource and should pay for it like everyone else. I'd be ok with eliminating the sales tax as long as we get at least a revenue-neutral progressive increase in the income tax.
No, no, NO! Fuel taxes do not cover the cost of roads. Look at what your state puts into raod construction and maintenance. You'll more than likely find that property taxes are the biggest source of revenue for that purpose. Sales tax also play a significant role in many areas. So no, the shippers do not pay the cost for Amazon, or even to cover their own use of roads.
The federal fuel tax doesn't come close to paying for road transportation. First, the federal highway trust fund is bankrupt. Second, it only pays for U.S. highways and interstates. Your state gas tax pays some for local roads but the biggest contributer to road maintenance is the property tax. The sales tax also plays a significant role in may areas. Third, the feds don't even pay for all of the maintenance on U.S. highways and interstates. Your state is paying for some of that too.
So no, fuel taxes don't cover it. Not even close.
Are you kidding me? Just how petty are we today? This is not a "rights" issue. This is a responsibility issue.
First, if affiliates receive some kind of compensation from Amazon, they should pay taxes on it. Hopefully everyone can agree on that.
The larger issue is how to collect the state/local sales taxes from Amazon customers. All local retailers need to collect the taxes and send them to the appropriate units of government. It should be no different for Amazon or any other online or mail-order retailer. Their prices are artificially low due to the lack of sales tax and that's poor policy when it comes to maintaining a healthy business climate. We need our local retailers for many reasons, not the least of which is their local presence, meaning they have a stake in what happens in the community.
We're all responsibile for our society and paying taxes is part of that. Amazon and other non-local retailers essentially facilitate tax evasion by consumers. Yes, it is the consumers who are evading but it is Amazon and others who are complicit in it.
The local sales taxes pay for vital things like roads, schools, emergency services and a host of other things. Paying taxes isn't a case of, "do I benefit, and if not, I shouldn't have to pay." We all benefit from these things and we all have a responsibility to support them. Anything less is shirking your responsibility. I've never understood why anti-tax forces hate their communities so much.
Gas taxes and vehicle registration fees don't come close to paying for roads. Many areas use some form of sales tax to pay for part of their transportation infrastructure. So the shipping companies do not in fact pay for all of Amazon's use.
Amazon does make use of police services, schools, etc. because Amazon needs civilation to survive. That's the point. We can't separate one body's responsibility from another. We all depend on it all.
What infrastructure is Washington based Amazon using in North Carolina?
First, the obvious ones: roads, sewers, electrical.
Then, the less obvious ones: schools (Amazon needs an educated customer base), various economic assistance programs (Amazon needs a strong economy to have customers), hospitals (Amazon needs live people). There are more.
It's silly to try to enumerate and categorize these things because they interrelate. Amazon makes use of the whole community infrastructure and they should bne contributing to it.
GIS works quite well for this kind of thing. It wouldn't be hard to setup a database for this purpose (see comment above).
Do you have any idea what a nightmare it would be for a small online retailer if they had to figure out what sales tax to charge on every transaction in every locality in the country.
Well, we have the internet, databases and computers. Automating this would not be difficult at all. States/cities/etc. would submit their tax rates based on GIS data and the federal government could maintain a database searchable by merchants. If the local units don't accurately represent their sales tax rates, then the onus is on them to fix it.
The technology is not a problem here. We can solve that problem. The real problem is a culture of disinvestment in our communities.