Sender: |
|
Date: |
Wed, 19 Jun 2013 11:39:30 +0200 |
Reply-To: |
|
Subject: |
|
MIME-Version: |
1.0 |
Content-Transfer-Encoding: |
8bit |
In-Reply-To: |
|
Content-Type: |
text/plain; charset=utf-8 |
From: |
|
Parts/Attachments: |
|
|
Hi Warren,
here's the config I'm using:
# Copyright 2006 by Sean Luke and George Mason University
# Licensed under the Academic Free License version 3.0
# See the file "LICENSE" for more information
#### PARENT PARAMS
parent.0 = /home/jbojan/Programme/BachelorThesis/ecj21/ec/gp/koza/koza.params
#### CORE DEFINITION
breedthreads = 15
evalthreads = 15
seed.0 = time
seed.1 = time
seed.2 = time
seed.3 = time
seed.4 = time
seed.5 = time
seed.6 = time
seed.7 = time
seed.8 = time
seed.9 = time
seed.10 = time
seed.11 = time
seed.12 = time
seed.13 = time
seed.14 = time
#### POPULATION DEFINITION
generations = 50
quit-on-run-complete = true
pop.subpops = 1
pop.subpops.0 = ec.Subpopulation
pop.subpop.0.size = 15
pop.subpop.0.duplicate-retries = 0
breed.elite.0 = 0
stat.file = $out.stat
#### BREEDING DEFINITION
pop.subpop.0.species.pipe.source.0=ec.gp.breed.SizeFairCrossoverPipeline
gp.breed.size-fair.source.0=ec.select.TournamentSelection
gp.breed.size-fair.source.1=same
gp.breed.size-fair.ns.0=ec.gp.koza.KozaNodeSelector
gp.breed.size-fair.ns.1=ec.gp.koza.KozaNodeSelector
gp.breed.size-fair.tries=20
gp.breed.size-fair.homologous=true
gp.breed.size-fair.maxdepth=20
#### TREE DEFINITION
pop.subpop.0.species.ind.numtrees = 1
pop.subpop.0.species.ind.tree.0 = ec.gp.GPTree
pop.subpop.0.species.ind.tree.0.tc = tc0
#### TREE CONSTRAINTS
gp.tc.size = 1
gp.tc.0 = ec.gp.GPTreeConstraints
gp.tc.0.name = tc0
gp.tc.0.fset = f0
gp.tc.0.returns = rule
gp.tc.0.init = ec.gp.koza.HalfBuilder
gp.tc.0.init.growp = 0.5
gp.tc.0.init.min = 2
gp.tc.0.init.max = 6
#### FUNCTION SETS
gp.fs.size = 1
### Function set for a rule exclusive then
gp.fs.0 = ec.gp.GPFunctionSet
gp.fs.0.name = f0
gp.fs.0.size = 7
gp.fs.0.func.0 = rulevolution.nodes.When
gp.fs.0.func.0.nc = nc0
gp.fs.0.func.1 = rulevolution.nodes.Not
gp.fs.0.func.1.nc = nc1
gp.fs.0.func.1.prob = 0.1
gp.fs.0.func.2 = rulevolution.nodes.And
gp.fs.0.func.2.nc = nc2
gp.fs.0.func.3 = rulevolution.nodes.Faktum
gp.fs.0.func.3.nc = nc6
gp.fs.0.func.4 = rulevolution.nodes.Contains
gp.fs.0.func.4.nc = nc5
gp.fs.0.func.5 = rulevolution.nodes.Exists
gp.fs.0.func.5.nc = nc3
gp.fs.0.func.6 = rulevolution.nodes.Eval
gp.fs.0.func.6.nc = nc4
#### NODE CONSTRAINTS
gp.nc.size = 7
# Rule Node
gp.nc.0 = ec.gp.GPNodeConstraints
gp.nc.0.name = nc0
gp.nc.0.returns = rule
gp.nc.0.size = 1
gp.nc.0.child.0 = condition
# Not Node
gp.nc.1 = ec.gp.GPNodeConstraints
gp.nc.1.name = nc1
gp.nc.1.returns = condition
gp.nc.1.size = 1
gp.nc.1.child.0 = exist
# And Node
gp.nc.2 = ec.gp.GPNodeConstraints
gp.nc.2.name = nc2
gp.nc.2.returns = condition
gp.nc.2.size = 2
gp.nc.2.child.0 = conditionNode
gp.nc.2.child.1 = conditionNode
# Exists Node
gp.nc.3 = ec.gp.GPNodeConstraints
gp.nc.3.name = nc3
gp.nc.3.returns = exist
gp.nc.3.size = 1
gp.nc.3.child.0 = subconditionNode
# Eval Node
gp.nc.4 = ec.gp.GPNodeConstraints
gp.nc.4.name = nc4
gp.nc.4.returns = condition
gp.nc.4.size = 1
gp.nc.4.child.0 = boolean
# Contains Node
gp.nc.5 = ec.gp.GPNodeConstraints
gp.nc.5.name = nc5
gp.nc.5.returns = subcondition
gp.nc.5.size = 0
# Generic Faktum Node (It will be loaded from Methodpool Class)
gp.nc.6 = ec.gp.GPNodeConstraints
gp.nc.6.name = nc6
gp.nc.6.returns = boolean
gp.nc.6.size = 0
#### NODE TYPES
gp.type.a.size = 5
gp.type.a.0.name = boolean
gp.type.a.1.name = condition
gp.type.a.2.name = subcondition
gp.type.a.3.name = rule
gp.type.a.4.name = exist
gp.type.s.size = 2
gp.type.s.0.name = conditionNode
gp.type.s.0.size = 2
gp.type.s.0.member.0 = condition
gp.type.s.0.member.1 = exist
gp.type.s.1.name = subconditionNode
gp.type.s.1.size = 2
gp.type.s.1.member.0 = boolean
gp.type.s.1.member.1 = subcondition
#### PROBLEM AND RULEDATA DEFINITION
eval.problem = rulevolution.RulEvolution
eval.problem.data = rulevolution.RuleData
Like you see I'm using only 15 cores so that the server still has some space.
I've also set the size of my population to 15, because I think that it's way
faster if each core handles one evaluation of the population.
Greetings
Bojan
----- Ursprüngliche Mail -----
Von: "Warren Henning" <[log in to unmask]>
An: [log in to unmask]
Gesendet: Mittwoch, 19. Juni 2013 11:27:01
Betreff: Re: ECJ is not using all cores
Did you set up ECJ to use the number of cores you expect?
Specifically what did you do to set this up? Which configuration setting and precisely what did you give it?
On Wed, Jun 19, 2013 at 2:13 AM, Bojan Janisch < [log in to unmask] > wrote:
Hello everyone,
I'm using ECJ for rule-creation and -evaluation. Recently I can use ECJ on 20 cores
of a server which runs very fast at the beginning. But after a while the CPU-usage
goes down to 1 core which I don't understand.
The evaluation process looks so:
Step 1: Create a valid rule from GPTree
Step 2: If rule contains nothing useful skip everything else, set bad score and go to Step 6
Step 3: Rule contains something useful, so load the testdata
Step 4: Run the rule through Drools and testdata (Drools is a ruleengine which also runs multithreaded)
Step 5: Compare the output of Drools and a goldstandard (the goldstandard and some more information are one time loaded at setup)
Step 6: Put the score, returned by the comparison, into the koza fitness
I don't know why but after some time, ECJ is only using 1 core.
Does someone got an idea where the problem could come from?
Greetings
Bojan
|
|
|