* Joel Ray Holveck | Easy, Erik! The OP made it clear that this was a curiosity thing; he didn't | indicate that it was an immediate need. I see no need to get upset.
Like I need a reason to get upset. :)
IMNSHO, we are at a point of technological development where the hardware is so extremely underutilized that it is insulting to everybody involved to ask for more. This is like the pampered child who whines for another soft pillow to keep from actually moving his body to correct the inevitable pain of _not_ moving. Just imagine what the engineers who worked miracles with 16K could have done with the gigabyte now wasting away in my computer! I still have only two 600MHz Pentium III processors with that memory, which is slow by today's standards, and that means the otherwise great website for the movie Minority Report takes real effort for the processors to show and the flash animation is jerky and when Mozilla needs that last 200M block of memory and the swap disk lamp starts flashing, I am reminded of the stupid ad for some German car maker: "The new <car> has more computing power than it took to send a man to the moon!" (I think my trusty old HP48GX does, too), and my first thought was "and yet you are stuck here on earth?"
I have to wonder what went wrong and where when I get a 900K message encoded with BASE64 and MIME and some HTML crap that only contains a _compressed_ archive of two Word documents that contains a very nice invitation, but which would have been only about 60K of network traffic had it been made into a PNG graphic and they had sent me a URL to it, not to mention that it would have taken approximately a millionth of the processing power to show it to me that way than it took to decrypt the Word idiocy -- and since I do not actually have Word, either, it probably looks much less ... inviting. Then I keep thinking that I will be stuck here on earth for a _long_ while.
Curiosity is not a bad thing. However, too much idle curiosity and too little engineering-style or researcher-style curiosity _is_ a bad thing. Idle curiosity makes people lose track of any _purpose_ to their thinking. With all the work we have done improve information technology, one would think that it should be easier to maintain a sustained focus, but not so. Concentration and attention are in short supply all over the Western world, mostly because of what I consider the worst plague on mankind ever: rampant and uncontrolled information pollution in the form of advertising, but also because the energy required to maintain and sustain focus has increased in our culture. Cognitive overload causes a constant stress level that taxes people's ability to stay focused even on their conscious purposes. It is like high caffeine "poisoning", except a rambling flow of thought and speech is no longer considered a symptom of anything wrong. Idle curiosity is just like that rambling flow of thought that produces exactly nothing worthwhile. -- Guide to non-spammers: If you want to send me a business proposal, please be specific and do not put "business proposal" in the Subject header. If it is urgent, do not use the word "urgent". If you need an immediate answer, give me a reason, do not shout "for your immediate attention". Thank you.
Greg Menke <gregm-use...@mindspring.com> writes: > It was asserted to me that inverting the array was meaningful- however > I don't know the exact application beyond its something a CS prof at > the local university is working with.
I really doubt it. In the standard texts on numerical linear algebra, inverting matrices hardly shows up. What are you going to do with the result? Multiplying it with another matrix can be done equally well by LU factorization and back substitution. For other problems things like QR factorization, Givens or Householder transforms or stuff like that might come into play, but I've never seen an algorithm that called for inverting large matrices.
> The prof in question ended up working up a Pascal program (poor guy- > the C people have it good compared to the Pascal people) using then > "Strassen algorithm". I don't know if its finished running yet...
The Strassen algorithm is an algorithm to multiply matrices faster than the obvious O(n^2) approach.
> > It was asserted to me that inverting the array was meaningful- however > > I don't know the exact application beyond its something a CS prof at > > the local university is working with.
> I really doubt it. In the standard texts on numerical linear algebra, > inverting matrices hardly shows up. What are you going to do with the > result? Multiplying it with another matrix can be done equally well by > LU factorization and back substitution. For other problems things like > QR factorization, Givens or Householder transforms or stuff like that > might come into play, but I've never seen an algorithm that called for > inverting large matrices.
I don't know what he's doing it for. For all I know he was trying to make it work just as a simple exercise. At one point he attempted it using files for the data & estimated it would take ~50 days to complete. I also don't know how efficient his algorithm was, but I suspect it would have been a fseek(), fread() kind of thing for each cell. He was happier with the Strassen approach.
Since Common Lisp is cool & fun to use, I thought of asking about how it might handle the problem.
Lieven Marchand wrote: > The Strassen algorithm is an algorithm to multiply matrices faster > than the obvious O(n^2) approach.
It may have been a typo, but just for the record, the naive method for matrix multiplication is O(n^3), not O(n^2). Strassen's algorithm is O(n^2.81), and the best known upper bound for any matrix multiplication algorithm was O(n^2.376) at the time of the publication of the first edition of CLR (1990, I think).
Also, FWIW, there are algorithms for matrix inversion which reduce it to a bunch of multiplications of smaller matrices, so Strassen's algorithm does come into play there.
> I spend half my life trying to batter this into people. People have > *really strange ideas* about what is expensive and what is cheap.
I found a ridiculous example of this the other day. The author of a tech mag article argued that, when Sun Microsystems needed a widget toolkit for their StarOffice suite, they chose GTK over Qt because they would have to _pay_ for commercial Qt licences.
>> I spend half my life trying to batter this into people. People have >> *really strange ideas* about what is expensive and what is cheap.
Patrick> I found a ridiculous example of this the other day. The author of a tech mag Patrick> article argued that, when Sun Microsystems needed a widget toolkit for their Patrick> StarOffice suite, they chose GTK over Qt because they would have to _pay_ Patrick> for commercial Qt licences.
Does OpenOffice and StarOffice share code in the same way that Mozilla and Netscape share code? That would be a really good incentive to choose a free widget toolkit.
Maybe a commercial Qt license says $100 per StarOffice sold. That might be a problem when Sun is trying to sell StarOffice for $75. Not having looked at the actual cost of a Qt license, I'm totally guessing.
What I find strange is that I know of places where they refuse to buy a few $5-10 K Sun boxes for individuals who probably cost the company a quarter million each with overhead. But, then they don't even blink an eye when you tell them you need a quarter million dollar piece of protocol test equipment. Of course, without the equipment, you can't test what you've made. But if the people don't have fast enough computers to do the work, your products are even later than you might wish, which then costs you tens of millions in lost sales, etc.
I have no understanding of how management thinks. Guess I'll never be a manager.
Now that is *really strange idea* of what's expensive and what's cheap.
* Joe Marshall | You're starting from the false premise that management thinks at all.
Oh, management thinks. It just does not think about things that matter to non-management. There is lots and lots of evidence of thinking mangagers, but they evidently value wildly different things than non-management. E.g., in a huge corporation from which several of my friends have fled recently, management at all levels have generous bonus programs, thought to be a kind of motivator, but it leads to a very curious metric for all ideas that are offered them: "How does this affect my bonus?" Needless to say, when bonuses are paid at the end of every quarter, any idea that fails to promise a bonus increase for that particular manager in the current or next quarter is just ignored or worse, yet, is actively blocked from propagated upwards because the lowest-level manager does not want others to get a bonus for his work. It is somewhat like giving children candy for everything they do to motivate them -- you get to pay for it in dental health bills. Generally speaking, they provide some evidence to the theory that motivation does not motivate, it only demotivates that which is not explicitly motivated. Management is generall running on the wrong kinds of stimulators and motivators. -- Guide to non-spammers: If you want to send me a business proposal, please be specific and do not put "business proposal" in the Subject header. If it is urgent, do not use the word "urgent". If you need an immediate answer, give me a reason, do not shout "for your immediate attention". Thank you.
>>>>> "Erik" == Erik Naggum <e...@naggum.net> writes:
Erik> * Joe Marshall Erik> | You're starting from the false premise that management thinks at all.
Erik> Oh, management thinks. It just does not think about things that matter to Erik> non-management. There is lots and lots of evidence of thinking mangagers, Erik> but they evidently value wildly different things than non-management. E.g., Erik> in a huge corporation from which several of my friends have fled recently, Erik> management at all levels have generous bonus programs, thought to be a kind Erik> of motivator, but it leads to a very curious metric for all ideas that are Erik> offered them: "How does this affect my bonus?" Needless to say, when bonuses Erik> are paid at the end of every quarter, any idea that fails to promise a bonus Erik> increase for that particular manager in the current or next quarter is just Erik> ignored or worse, yet, is actively blocked from propagated upwards because Erik> the lowest-level manager does not want others to get a bonus for his work. Erik> It is somewhat like giving children candy for everything they do to motivate Erik> them -- you get to pay for it in dental health bills. Generally speaking, Erik> they provide some evidence to the theory that motivation does not motivate, Erik> it only demotivates that which is not explicitly motivated. Management is Erik> generall running on the wrong kinds of stimulators and motivators.
Yeah, this really sucks. In the meantime, they just grind the workers into total apathy and eventual departure, thereby losing all the good guys they had, so now they have no hope to actually get anything done to get their big bonuses, except that they probably will because they saved the company big bucks by making everyone leave and didn't have to pay severance. :-)
I've always felt that business management should be paid the same way sports managers are paid. The players (i.e. me! :-) ) get paid the big bucks because they actually make things happen. After all, I don't go to a game to see a manager shouting at everyone; I go to see the players do their magic.
> Does OpenOffice and StarOffice share code in the same way that Mozilla > and Netscape share code? That would be a really good incentive to > choose a free widget toolkit.
There may be some licensing issues[*] that make GTK+ a better choice, but I was commenting on the notion that Qt is prohibitively expensive to Sun Microsystems. (A Qt license is comparable to buying a copy of Visual C++. It's a one-off payment. No royalties involved).
[*] A commercial Qt license is only required for proprietary products. Qt is also licensed under the GPL, but only the X11 version is GPL'd. A no-cost "non-commercial" version exists for Windows, which can be used in products licensed under the LGLP or a BSD-style license. OpenOffice is distributed under the LGPL (which presents no problem for use with Qt), but it's also released under the "Sun Industry Standards Source License" which may or may not be incompatible with either the GPL'd Qt or the "non-commercial" Qt. (I haven't checked, and don't really care) ;-)
> I've always felt that business management should be paid the same way > sports managers are paid. The players (i.e. me! :-) ) get paid the > big bucks because they actually make things happen. After all, I > don't go to a game to see a manager shouting at everyone; I go to see > the players do their magic.
I'm ready to endorse Nike for the appropriate remuneration.
On Thu, 20 Jun 2002 17:57:52 GMT, Erik Naggum <e...@naggum.net> wrote: > moving. Just imagine what the engineers who worked miracles with 16K could > have done with the gigabyte now wasting away in my computer! I still have
Examples of what has been done with even less than 16K can be found in:
> the swap disk lamp starts flashing, I am reminded of the stupid ad for some > German car maker: "The new <car> has more computing power than it took to > send a man to the moon!" (I think my trusty old HP48GX does, too), and my > first thought was "and yet you are stuck here on earth?"
P.S. By the way, the Apollo spacecraft had a "CDR" :) -- EncyCMUCLopedia * Extensive collection of CMU Common Lisp documentation http://www.paoloamoroso.it/ency/README
Raymond Toy <t...@rtp.ericsson.se> writes: > I can understand why you might want cons cells to be small. I find > less of a reason for arrays, but that might be because my arrays tend > to fairly large and one extra word out of thousands for each array is > irrelevant to me. :-) As an implementor, I'm sure you have a much > different view. Thanks for the info.
Think of using arrays to store the coordinates of the nodes of an unstructured mesh in 1-3 dimensions and you have a lot of small arrays.
>>>>> "Nicolas" == Nicolas Neuss <Nicolas.Ne...@iwr.uni-heidelberg.de> writes:
Nicolas> Raymond Toy <t...@rtp.ericsson.se> writes: >> I can understand why you might want cons cells to be small. I find >> less of a reason for arrays, but that might be because my arrays tend >> to fairly large and one extra word out of thousands for each array is >> irrelevant to me. :-) As an implementor, I'm sure you have a much >> different view. Thanks for the info.
Nicolas> Think of using arrays to store the coordinates of the nodes of an Nicolas> unstructured mesh in 1-3 dimensions and you have a lot of small Nicolas> arrays.
But I could also say that having a single extra header word for each of those tiny arrays is an unacceptable solution. :-) Upto 50% wasted.
So, I go for one giant array to hold everything and do the indexing myself. Now it's either one or two words of overhead for all of the data.
Nicolas Neuss <Nicolas.Ne...@iwr.uni-heidelberg.de> writes: > Think of using arrays to store the coordinates of the nodes of an > unstructured mesh in 1-3 dimensions and you have a lot of small > arrays.
Wouldn't small lists be the appropriate data type for storing such coordinates?
Raymond Toy <t...@rtp.ericsson.se> writes: > >>>>> "Nicolas" == Nicolas Neuss <Nicolas.Ne...@iwr.uni-heidelberg.de> writes:
> Nicolas> Raymond Toy <t...@rtp.ericsson.se> writes: > >> I can understand why you might want cons cells to be small. I find > >> less of a reason for arrays, but that might be because my arrays tend > >> to fairly large and one extra word out of thousands for each array is > >> irrelevant to me. :-) As an implementor, I'm sure you have a much > >> different view. Thanks for the info.
> Nicolas> Think of using arrays to store the coordinates of the nodes of an > Nicolas> unstructured mesh in 1-3 dimensions and you have a lot of small > Nicolas> arrays.
> But I could also say that having a single extra header word for each > of those tiny arrays is an unacceptable solution. :-) Upto 50% > wasted.
Correct. The cost of such a style must be considered. And we have customers on both sides - ones who have rejected this approach in favor of another, and ones who have accepted this approach because they deemed the cost not to be too great. Which group is right? They both are!
> So, I go for one giant array to hold everything and do the indexing > myself. Now it's either one or two words of overhead for all of the > data.
There are pros and cons to this kind of approach as well. All in all, the pros and cons of each approach are worthy of careful consideration and weighing during design for each project (and according to the style of each programmer and the problem at hand).
As an implementor of a general-purpose language, I try to give as many options as possible to users. Obviously, I can't please all of the people all of the time, but I can certainly try.
-- Duane Rettig Franz Inc. http://www.franz.com/ (www) 1995 University Ave Suite 275 Berkeley, CA 94704 Phone: (510) 548-3600; FAX: (510) 548-8253 du...@Franz.COM (internet)
> Nicolas> Think of using arrays to store the coordinates of the > Nicolas> nodes of an unstructured mesh in 1-3 dimensions and you > Nicolas> have a lot of small arrays.
> But I could also say that having a single extra header word for each > of those tiny arrays is an unacceptable solution. :-) Upto 50% > wasted.
> So, I go for one giant array to hold everything and do the indexing > myself. Now it's either one or two words of overhead for all of the > data.
> :-)
> Ray
You're right that this is usually more efficient. But now imagine this mesh being modified from time step to time step by adding and removing points. You would have to do some garbage collection for your indices then, which is nontrivial.
Thus, it would be very nice for me if Matlisp could handle also small vectors/matrices fast. Unfortunately, the generic function call kills you in that case. (I'm just working on a solution for that. At the moment, my solution uses the deftransform construct of CMUCL. Probably, a portable solution would be to define compiler-macros which inline generic function calls for certain types.)
>> Besides, if you really need gigabyte upon gigabyte of memory >> and the hardware to utilize it, the only thing between you and >> satisfying that need has been money for at least 10 years. > Exactly so, see: > <URL:http://www.sgi.com/origin/3000/> > <URL:http://www.sgi.com/products/storage/9400.html> [snip] > Unfortunately(?), applications that make effective *use* of all that > horsepower at once in a single program tend to be written in Fortran > (usually with OpenMP or MPI), not Common Lisp.
I've had a hard time finding CLs for cluster computing. Does anybody know if this sort of thing was ever developed as a product?
> Just imagine what the engineers who worked miracles with 16K could > have done with the gigabyte now wasting away in my computer!
This much I agree with.
In an amusing twist of irony, you know the old quip (I think from Alan Perlis): "Lisp programmers know the value of everything, and the cost of nothing."
These days, I tend to find systems written in Lisp to take up rather less memory than systems in other languages. I recently saw a bunch of jaws hit the table when I mentioned that a program I'm developing (in Lisp) has a 9MB dynamic dataset size, including the code. Most of the other coders (used to other languages) had expected something in the 25-100 MB range.
I normally attribute this to the newest crop of coders who don't know (and frequently don't care) how things work under the hood. It doesn't take a lot of in-depth analysis to keep things reasonably tight, just a basic familiarity with The Way Things Work to sit in the back of your head while you code.
> Curiosity is not a bad thing. However, too much idle curiosity and too > little engineering-style or researcher-style curiosity _is_ a bad thing.
I'm going to take this at face value, which is different than how I read it the first time through. I think you're saying that idle curiosity (investigation without a purpose) is bad, unless it's mixed in with a generous dose of researcher-style curiosity (investigation with a purpose). I'm not sure whether I quite agree, but I'm a little unsure about the meaning of your terms.
I engage in a lot of both styles of curiosity, and they both pay off regularly. I first started learning Lisp because of a "I wonder what it's like" thought. I'm now using it to write programs that people thought were unworkable. I first picked up Principles of AI Programming because I wondered what it had to offer. A few months later, I adapted one of the algorithms I learned about from it to form the core of a major project at work. I constantly find myself using things that I first learned about as a result of idle curiosity.
Certainly, when I investigate something new, I think of how I can apply it to whatever jobs I have at hand. But just because I don't have an immediate application doesn't keep me from investigating.
> Idle curiosity is just like that rambling flow of thought that > produces exactly nothing worthwhile.
I'm still hazy on the definitions here, but if by "idle curiosity" you mean "investigation without a definite, immediate, application", then I'm going to have to disagree. I named a couple of counterexamples from my own experiences above, and I've found that what I've learned without an immediate purpose (at that time) has helped me time and time again. It provides me with a vast toolkit that I can use to tackle new and unusual problems, and gives me a broader perspective that I can use to deal with new situations.
* Joel Ray Holveck | I'm going to take this at face value, which is different than how I read it | the first time through. I think you're saying that idle curiosity | (investigation without a purpose) is bad, unless it's mixed in with a | generous dose of researcher-style curiosity (investigation with a purpose).
The kind of idle curiosity I refer to is the that calls up an ISP and wonders what it would cost to give him a 100Mbps pipe with an average load of 20Mbps, but has no intention of buying _anything_ -- he would just sort of like to know, without saying so up front, admitting that he feared he would not get the right answer if he did not pretend he was buying. But I guess I would not believe such people existed, either, if I had not experienced them first hand. Idle curiosity is the kind that you would like to invoice people for after wasting somebody's paid time. -- Guide to non-spammers: If you want to send me a business proposal, please be specific and do not put "business proposal" in the Subject header. If it is urgent, do not use the word "urgent". If you need an immediate answer, give me a reason, do not shout "for your immediate attention". Thank you.
>>>>> On 28 Jun 2002 19:58:04 -0700, Joel Ray Holveck ("Joel") writes:
>>> Besides, if you really need gigabyte upon gigabyte of memory >>> and the hardware to utilize it, the only thing between you and >>> satisfying that need has been money for at least 10 years. >> Exactly so, see: >> <URL:http://www.sgi.com/origin/3000/> >> <URL:http://www.sgi.com/products/storage/9400.html> Joel> [snip] >> Unfortunately(?), applications that make effective *use* of all that >> horsepower at once in a single program tend to be written in Fortran >> (usually with OpenMP or MPI), not Common Lisp.
Joel> I've had a hard time finding CLs for cluster computing. Does anybody Joel> know if this sort of thing was ever developed as a product?
Sometimes "comp.lang.lisp" looks like a "cluster-CL".
> >> Besides, if you really need gigabyte upon gigabyte of memory > >> and the hardware to utilize it, the only thing between you and > >> satisfying that need has been money for at least 10 years. > > Exactly so, see: > > <URL:http://www.sgi.com/origin/3000/> > > <URL:http://www.sgi.com/products/storage/9400.html> > [snip] > > Unfortunately(?), applications that make effective *use* of all that > > horsepower at once in a single program tend to be written in Fortran > > (usually with OpenMP or MPI), not Common Lisp.
> I've had a hard time finding CLs for cluster computing. Does anybody > know if this sort of thing was ever developed as a product?
Yes. Ask Google about either MPI and Lisp or PVM and Lisp.
> >> Besides, if you really need gigabyte upon gigabyte of memory > >> and the hardware to utilize it, the only thing between you and > >> satisfying that need has been money for at least 10 years. > > Exactly so, see: > > <URL:http://www.sgi.com/origin/3000/> > > <URL:http://www.sgi.com/products/storage/9400.html> > [snip] > > Unfortunately(?), applications that make effective *use* of all that > > horsepower at once in a single program tend to be written in Fortran > > (usually with OpenMP or MPI), not Common Lisp.
> I've had a hard time finding CLs for cluster computing. Does anybody > know if this sort of thing was ever developed as a product?