Okay Nikola... I've added a thread pool to ECJ and have modified
Slave.java so that if you evaluate in non-"evolve" mode it'll do so
multithreaded using the evalthreads parameter. I haven't tested this
much so I'm relying on you (or anyone else) to do so and let me know
if you see anything amiss. Feel free to send me mail directly so as
not to bother everyone on the list.
On Mar 24, 2011, at 4:09 PM, Sean Luke wrote:
> On Mar 24, 2011, at 1:26 PM, Nikola N. wrote:
>> At some point of time all the threads are running, at some point
>> only single
>> thread is running by the slave.
> Well, keep in mind that the Slave has to read in Individuals from
> the stream before it can start working on them (in the "evolve" mode
> I suggested to you). This means that in a single thread it's
> sitting there waiting for all the Individuals to be sent over the
> stream, and only then does it begin evaluating them in a
> multithreaded fashion. If your evaluation is expensive with respect
> to network transfer (which is usually the case for situations where
> distributed EC makes sense) then most of your time will be spent in
> the multithreaded section.
> At the very least if I can get to whipping up the multithreaded
> "standard" slave evaluation (non-"evolve" mode) we can set it up so
> that as soon as an Individual is read in it immediately begins
> evaluation. But even so there will be a period of time when the
> fitnesses are sent back that things are gonna be in single threaded
> mode for a bit. There's just no way around it short of constructing
> an asynchronous response.