[Push] Speed
Lee Spector
lspector at hampshire.edu
Wed Jun 30 10:21:35 EDT 2010
PS I should also say with respect to the Clojush timings that in Clojure, as in many Lisps, you can usually get really major speed improvements by specifying optional type information ("hints"), but I haven't done any of that at all. Yet.
Also BTW one of the selling points of Clojure is that it's fairly trivial to make things run on multiple cores, and I'm relying in part on that to do large scale runs (with 16-core nodes and a 48-core node soon).
-Lee
On Jun 30, 2010, at 10:18 AM, Lee Spector wrote:
>
> It's really hard to know what the meaningful benchmark is here, since different instructions can take radically different times (e.g. especially code-manipulation instructions), and program sizes will matter, and the overhead of beginning/ending executions may matter, etc.
>
> But for a quick test with Clojush running with clojure 1.1.0 on one core on a 3.06 GHz powermac pro I ran a function that generated a random 100-point program and executed it 1000 times with an execution limit of 150 (but I didn't keep track of how many points were actually executed). Timing this 7 times (each of which would have a different random program, generated from the full instruction set that's implemented in Clojush, plus ephemeral random integers and floats) produced:
>
> 1842.571 msecs
> 757.436 msecs
> 2555.908 msecs
> 2157.655 msecs
> 1729.549 msecs
> 1675.614 msecs
> 2064.964 msecs
>
> The average of this is about 1800 msecs. This is a wild guess but let's guess that on average there were 100 points executed per run (which maybe splits the difference between programs that were terminated for exceeding the limit at 150 and others that naturally ended after less than the full 100 of their sizes, which can happen for many reasons).
>
> That would mean I'm executing about 1000 * 100 = 100,000 points in 1.8 secs or very approximately 55,000 points/sec.
>
> This is about an order of magnitude SLOWER than what you're reporting, but I suspect we're not really measuring the same things.
>
> I also expect that Clojush will run substantially faster in clojure-1.2 but I haven't gone there yet.
>
> I also suspect that there will be wide variation among the other Push implementations. My guess would be that Schush is the slowest and the C++ version the fastest, but I don't really know that or where the others would fall...
>
> -Lee
>
>
>
> On Jun 29, 2010, at 9:24 AM, PerPlex Ed wrote:
>
>> How fast are your implementations?
>>
>> Mine should work at about 500.000 points/second/core.
>>
>> I'm not going to spend much time optimizing it but I was curious to know if other people work at a much higher speed or about the same.
>>
>>
>>
>>
>> _______________________________________________
>> Push mailing list
>> Push at lists.hampshire.edu
>> https://lists.hampshire.edu/mailman/listinfo/push
>
> --
> Lee Spector, Professor of Computer Science
> School of Cognitive Science, Hampshire College
> 893 West Street, Amherst, MA 01002-3359
> lspector at hampshire.edu, http://hampshire.edu/lspector/
> Phone: 413-559-5352, Fax: 413-559-5438
>
> Check out Genetic Programming and Evolvable Machines:
> http://www.springer.com/10710 - http://gpemjournal.blogspot.com/
>
--
Lee Spector, Professor of Computer Science
School of Cognitive Science, Hampshire College
893 West Street, Amherst, MA 01002-3359
lspector at hampshire.edu, http://hampshire.edu/lspector/
Phone: 413-559-5352, Fax: 413-559-5438
Check out Genetic Programming and Evolvable Machines:
http://www.springer.com/10710 - http://gpemjournal.blogspot.com/
More information about the Push
mailing list