News flash! Processors' numerical capacity have been increasing on par with Moore's law for the last five years. And yes, I'm talking about the single core.
You are aware that the instruction sets have been changing, right? That we now have gone full circle and are back to the vector processor, right? Admittedly, you have to be very careful when programming for them, but I guess you've always had to be careful when targeting a processor.
Hey, I've been having a little play and it (as per usual) is the compiler. Results are comparable for GNU compiler, Intel compiler is an entirely different matter (Intel compiler, -O2 by default).
2000's Global Warming? remains to be seen where this goes.
I've changed my use of energy, at home as well as work. I don't leave things on standby. If it doesn't need to be on, turn it off. Whenever I'm not sitting at my desk, I turn my 30" LCDs off. I use laptops instead of PCs at home. One fridge and make sure it's seals are good. Use air-conditioning, but limit it to the room you are in and not the whole house. Don't spend more than 4 minutes in the shower (Brisbane, Queensland and we can only use 170litres of water per person per day - up from 140litres due to recent rains)
Will the message of global warming be to pay just a little more attention to the smaller details?
Stupid, unsustainable 'initiatives' like "Earth Hour" just make people feel good while smelling their farts.
I think the winner is pretty clear. Maybe not for the reasons why I specified, but something is happening with the std::vector that is unacceptable for me.
That's what sucks.. I haven't seen a definitive place yet and so far has been stumbling on the ieee website, intel site (whitepapers) and just generally playing with the intel compiler.
Give me a little more time (a day or two) while I chase up the urls of some of the pdfs and codes I have:)
I've been meaning to put this stuff together for a while now with code fragments to back it up.
No bullshit... at least in my case. std::vector does a lot of array bounds checking and various other things that involve 'if' statements. You don't want them inside large loops. So I write my own vector classes - I make assumptions.
Now, I used to have some kickarse vector (and matrix) templates but have had to ditch them with the release of the Harpertown processor because templates don't vectorise. This was ok for the Clovertown but the 256 bit wide register in the Harpertown (as opposed to the 128bit for Clovertown) made my template tricks redundant.
It's getting hard to program for a single core - to get maximum work done.
It's been on the agenda for a while. I just haven't learnt all the little tweaks yet. But you are right. It amazes me how often another white paper comes out with further compiler optimisations for fortran. 40 years of optimisations (at least!) have to make it the superior language.
I used to live up in North Queensland, Australia (will move back there once I've made enough money) and mudcrabs formed a big part of the weekend diet. You just catch the 2 kilo monsters yourself.
What I grew to do after time was to first put them in the freezer for a while (~45 minutes) as it puts them into a hibernation state that they don't seem to wake from when you then cook by boiling/pressure cooker.
Much like my Fedora 8 machine on a HP6600, that bastard never woke from hibernate and considered manytimes putting it in boiling water.
I do my best here not to offend, but I can see clearly now why I don't use Python.
I keep getting pressured by others to adopt it rather than my C or C++ but if they are touting a possible 5x increase, that means it was really, really slow to begin with. And how much further is there to go? I suspect it is not even worth benchmarking it yet.
Since all I mostly do is big matrix and vector work why would I use python? And no, scipy doesn't count as I can get MPI going pretty quickly.
Yes, I realise the right tool for the job argument.
There is nothing wrong with the occasional intelligent question... if fact it is very good. Generally one person needs to ask because you can be assured that most of the class is not following and are reluctant to ask themselves.
No, I'm talking about the really arrogant bastards that have never learnt to know when to shut the fuck up. It gets to the point that in a 2 hour lecture, they steal 90 minutes with nonsensical dribble that prevents the material being 'taught'. It generally starts with them asking a relevant question, but then they think they are on a role and are seeing 'the blinding light' and have a break though and want everybody to bask in their gloriousness.
Jsut don't be one of those really annoying fuckers that think they know everything about anything. They piss me off... limit the number of questions or everyone will think you're a douche... not brilliant.
Sadly, this is probably the one species that is threatened by extinction that is *not* the result of humans. A highly infectious cancer is wiping them out.
Man, why did you have to go and ruin a perfectly good conspiracy theory? I thought my ISP was blocking me (when they shouldn't be, apparently) and was getting nice and toasty under the collar.
I really think that the beauty of this sort of thing is that all contributors are there in front of you.
I love this sort of thing. These sort of guys (the fields winners) don't have to worry about getting publications and instead can just concentrate with getting on with the job. Everybody else can tag along for the ride. Beautiful.
I got a Nikon D60 and I love it. If I bought it here in Australia, it would cost me AU$1200. I bought it while in Korea and picked it up for AU$400 (I'm getting pretty annoyed with being ripped off in Western countries). For a DSLR, I'm extremely happy.
I can take about 30 photos per second of 10MP (storing RAW + JPEG Thumbnail). Works exceptionally well in low light... in fact, I have not yet used the flash.
I really consider it the best money I've ever spent. HDD storage is starting to bite though.
It was informative. Yours was insightful. This one's redundant.
No, don't be silly.
In other news, there's a new compiler that does automatic parallelisation. There is even an icon called piggie that'll help you ... and he flies!
News flash! Processors' numerical capacity have been increasing on par with Moore's law for the last five years. And yes, I'm talking about the single core.
You are aware that the instruction sets have been changing, right? That we now have gone full circle and are back to the vector processor, right? Admittedly, you have to be very careful when programming for them, but I guess you've always had to be careful when targeting a processor.
Hey, I've been having a little play and it (as per usual) is the compiler. Results are comparable for GNU compiler, Intel compiler is an entirely different matter (Intel compiler, -O2 by default).
me@cl1n024:~/bin/pbstest/Interactive> g++ --version
g++ (GCC) 4.1.2 20070115 (SUSE Linux)
me@cl1n024:~/bin/pbstest/Interactive> icpc --version
icpc (ICC) 11.0 20081105
RESULTS:
std::Vector
g++ -O2 test.cpp -o Go2
me@cl1n024:~/bin/pbstest/Interactive> taskset -c 3 time ./Go2
48.19user
0.48system
0:48.67elapsed
100%CPU
(0avgtext+0avgdata 0maxresident)
k0inputs+0outputs (0major+195578minor)pagefaults 0swaps
icpc test.cpp -o Go2
test.cpp(14): (col. 10) remark: LOOP WAS VECTORIZED. /usr/include/c++/4.1.2/bits/vector.tcc(330): (col. 5) remark: LOOP WAS VECTORIZED. /usr/include/c++/4.1.2/bits/vector.tcc(334): (col. 5) remark: LOOP WAS VECTORIZED. /usr/include/c++/4.1.2/bits/vector.tcc(343): (col. 5) remark: LOOP WAS VECTORIZED. /usr/include/c++/4.1.2/bits/vector.tcc(365): (col. 5) remark: LOOP WAS VECTORIZED. ./Go2
me@cl1n024:~/bin/pbstest/Interactive> taskset -c 3 time
26.05user
0.44system
0:26.50elapsed
100%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (1major+195591minor)pagefaults 0swaps
Normal Array
g++ -O2 test.cpp -o Go2 ./Go2
me@cl1n024:~/bin/pbstest/Interactive> taskset -c 3 time
49.61user
1.02system
0:50.63elapsed
100%CPU
(0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+390890minor)pagefaults 0swaps
icpc test.cpp -o Go2 ./Go2
test.cpp(26): (col. 5) remark: LOOP WAS VECTORIZED.
me@cl1n024:~/bin/pbstest/Interactive> taskset -c 3 time
0.25user
0.40system
0:00.65elapsed
99%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (1major+195584minor)pagefaults 0swaps
Sorry for any spamming.
We've dramatically cleaned up our environment ...
Really? Out of sight, out of mind. A garbage tip in the ocean twice the size of the continental United States and getting bigger.
I know you probably won't read it because it's buried under a lot of other comments, but it may well change the statement you made above.
2000's Global Warming? remains to be seen where this goes.
I've changed my use of energy, at home as well as work. I don't leave things on standby. If it doesn't need to be on, turn it off. Whenever I'm not sitting at my desk, I turn my 30" LCDs off. I use laptops instead of PCs at home. One fridge and make sure it's seals are good. Use air-conditioning, but limit it to the room you are in and not the whole house. Don't spend more than 4 minutes in the shower (Brisbane, Queensland and we can only use 170litres of water per person per day - up from 140litres due to recent rains)
Will the message of global warming be to pay just a little more attention to the smaller details?
Stupid, unsustainable 'initiatives' like "Earth Hour" just make people feel good while smelling their farts.
Hey, thanks for the reply.
I suspected the realloc problem hence running 100 times
j = 0; j lessthan 100; j++
i = 0; i lessthan n; n++
But I made the malloc instead of looping a realloc and I still get
icpc test.cpp -o Go /usr/include/c++/4.1.2/bits/vector.tcc(330): (col. 5) remark: LOOP WAS VECTORIZED. /usr/include/c++/4.1.2/bits/vector.tcc(334): (col. 5) remark: LOOP WAS VECTORIZED. /usr/include/c++/4.1.2/bits/vector.tcc(343): (col. 5) remark: LOOP WAS VECTORIZED. /usr/include/c++/4.1.2/bits/vector.tcc(365): (col. 5) remark: LOOP WAS VECTORIZED. ./Go
test.cpp(14): (col. 10) remark: LOOP WAS VECTORIZED.
me@cl1n024:~/bin/pbstest/Interactive> taskset -c 0 time
25.95user 0.51system 0:26.46elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (1major+195592minor)pagefaults 0swaps
"FLAGS = -O2" by default
That second code fragment
float *test = new float[n];
float *tests = new float[n];
for (int i = 0; i lessthan n; i++)
{
test[i] = i;
tests[i] = i;
}
for (int i = 0; i lessthan n; i++)
test[i] = 6.4*tests[i] + 9.0;
I just had to test, tell me why:
int n = 100000000;
std::vector inta;
std::vector intb;
for (int i = 0; i lessthan n; i++)
{
inta.push_back(i);
intb.push_back(i);
}
for (int i = 0; i lessthan n; i++)
inta[i] = 6.4*intb[i] + 9.0;
Takes 8 times longer to execute than
int n = 100000000;
float *test = new float[n]; /proc/cpuinfo
float *tests = new float[n];
for (int i = 0; icat
model name : Genuine Intel(R) CPU T2400 @ 1.83GHz
Intel compiler (11.0.081)
Because I was curious, I did the y = ax +b loop 100 times on
model name : Intel(R) Xeon(R) CPU E5462 @ 2.80GHz
And the std::vector: ./Go
taskset -c 0 time
26.33user 1.13system 0:27.46elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (1major+457736minor)pagefaults 0swaps
Simple Array: ./Go
taskset -c 0 time
0.10user 0.23system 0:00.33elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (1major+97929minor)pagefaults 0swaps
(I'm the only person on the node in question)
I think the winner is pretty clear. Maybe not for the reasons why I specified, but something is happening with the std::vector that is unacceptable for me.
I dunno, I can write C and C++ pretty quick.
That's pretty much all I got to say about that :)
That's what sucks .. I haven't seen a definitive place yet and so far has been stumbling on the ieee website, intel site (whitepapers) and just generally playing with the intel compiler.
Give me a little more time (a day or two) while I chase up the urls of some of the pdfs and codes I have :)
I've been meaning to put this stuff together for a while now with code fragments to back it up.
No bullshit ... at least in my case. std::vector does a lot of array bounds checking and various other things that involve 'if' statements. You don't want them inside large loops. So I write my own vector classes - I make assumptions.
Now, I used to have some kickarse vector (and matrix) templates but have had to ditch them with the release of the Harpertown processor because templates don't vectorise. This was ok for the Clovertown but the 256 bit wide register in the Harpertown (as opposed to the 128bit for Clovertown) made my template tricks redundant.
It's getting hard to program for a single core - to get maximum work done.
It's been on the agenda for a while. I just haven't learnt all the little tweaks yet. But you are right. It amazes me how often another white paper comes out with further compiler optimisations for fortran. 40 years of optimisations (at least!) have to make it the superior language.
I used to live up in North Queensland, Australia (will move back there once I've made enough money) and mudcrabs formed a big part of the weekend diet. You just catch the 2 kilo monsters yourself.
What I grew to do after time was to first put them in the freezer for a while (~45 minutes) as it puts them into a hibernation state that they don't seem to wake from when you then cook by boiling/pressure cooker.
Much like my Fedora 8 machine on a HP6600, that bastard never woke from hibernate and considered manytimes putting it in boiling water.
I do my best here not to offend, but I can see clearly now why I don't use Python.
I keep getting pressured by others to adopt it rather than my C or C++ but if they are touting a possible 5x increase, that means it was really, really slow to begin with. And how much further is there to go? I suspect it is not even worth benchmarking it yet.
Since all I mostly do is big matrix and vector work why would I use python? And no, scipy doesn't count as I can get MPI going pretty quickly.
Yes, I realise the right tool for the job argument.
There is nothing wrong with the occasional intelligent question ... if fact it is very good. Generally one person needs to ask because you can be assured that most of the class is not following and are reluctant to ask themselves.
No, I'm talking about the really arrogant bastards that have never learnt to know when to shut the fuck up. It gets to the point that in a 2 hour lecture, they steal 90 minutes with nonsensical dribble that prevents the material being 'taught'. It generally starts with them asking a relevant question, but then they think they are on a role and are seeing 'the blinding light' and have a break though and want everybody to bask in their gloriousness.
Jsut don't be one of those really annoying fuckers that think they know everything about anything. They piss me off ... limit the number of questions or everyone will think you're a douche ... not brilliant.
That would temporarily save the ones in captivity. But they'll die out eventually due to poor genetic diversity (or, that's how I interpret it).
Sadly, this is probably the one species that is threatened by extinction that is *not* the result of humans. A highly infectious cancer is wiping them out.
Conroy is going to be on the ABC's QandA next Thursday evening at 9.30pm.
That should be good viewing :)
Man, why did you have to go and ruin a perfectly good conspiracy theory? I thought my ISP was blocking me (when they shouldn't be, apparently) and was getting nice and toasty under the collar.
Or, is downforeveryoneorjustme in on it? Oohhhhh
Chaos
I really think that the beauty of this sort of thing is that all contributors are there in front of you.
I love this sort of thing. These sort of guys (the fields winners) don't have to worry about getting publications and instead can just concentrate with getting on with the job. Everybody else can tag along for the ride. Beautiful.
If that is the interpretation, then where is the crossover point between lower dimensional and higher dimensional space where the draws stop?
I got a Nikon D60 and I love it. If I bought it here in Australia, it would cost me AU$1200. I bought it while in Korea and picked it up for AU$400 (I'm getting pretty annoyed with being ripped off in Western countries). For a DSLR, I'm extremely happy.
I can take about 30 photos per second of 10MP (storing RAW + JPEG Thumbnail). Works exceptionally well in low light ... in fact, I have not yet used the flash.
I really consider it the best money I've ever spent. HDD storage is starting to bite though.