t-openmp.py released
This commit is contained in:
parent
9dcbb94ffb
commit
20fd5b206f
2 changed files with 46 additions and 29 deletions
|
|
@ -64,9 +64,9 @@ int main(int ac, char** av)
|
|||
eoUniformGenerator< double > gen(-5, 5);
|
||||
|
||||
std::ostringstream params;
|
||||
params << "-p" << popMin << "-pS" << popStep << "-P" << popMax
|
||||
<< "-d" << dimMin << "-dS" << dimStep << "-D" << dimMax
|
||||
<< "-r" << nRun << "-s" << seedParam;
|
||||
params << "_p" << popMin << "_pS" << popStep << "_P" << popMax
|
||||
<< "_d" << dimMin << "_dS" << dimStep << "_D" << dimMax
|
||||
<< "_r" << nRun << "_s" << seedParam;
|
||||
std::ofstream speedupFile( std::string( fileNamesPrefix + speedupFileName + params.str() ).c_str() );
|
||||
std::ofstream efficiencyFile( std::string( fileNamesPrefix + efficiencyFileName + params.str() ).c_str() );
|
||||
std::ofstream dynamicityFile( std::string( fileNamesPrefix + dynamicityFileName + params.str() ).c_str() );
|
||||
|
|
|
|||
|
|
@ -14,25 +14,21 @@ LOG_DEFAULT_FILENAME='notitle.log'
|
|||
|
||||
OPENMP_EXEC_FORMAT='./test/t-openmp -p=%d --popStep=%d -P=%d -d=%d --dimStep=%d -D=%d -r=%d --seed=%d -v=%s -H=%s'
|
||||
|
||||
RESULT_FILE_FORMAT='%s%s_p%d_pS%d_P%d_d%d_dS%d_D%d_r%d_s%d'
|
||||
|
||||
def parser(parser=optparse.OptionParser()):
|
||||
# general parameters
|
||||
parser.add_option('-v', '--verbose', choices=LEVELS.keys(), default='warning', help='set a verbose level')
|
||||
parser.add_option('-v', '--verbose', choices=LEVELS.keys(), default='info', help='set a verbose level')
|
||||
parser.add_option('-f', '--file', help='give an input project filename', default='')
|
||||
parser.add_option('-o', '--output', help='give an output filename for logging', default=LOG_DEFAULT_FILENAME)
|
||||
# general parameters ends
|
||||
|
||||
parser.add_option('-p', '--popMin', default=1)
|
||||
parser.add_option('', '--popStep', default=1)
|
||||
parser.add_option('-P', '--popMax', default=100)
|
||||
parser.add_option('-d', '--dimMin', default=1)
|
||||
parser.add_option('', '--dimStep', default=1)
|
||||
parser.add_option('-D', '--dimMax', default=100)
|
||||
parser.add_option('-r', '--nRun', default=100)
|
||||
parser.add_option('-s', '--seed', default=-1)
|
||||
parser.add_option('-s', '--seed', default=1)
|
||||
|
||||
topic = str(datetime.today())
|
||||
for char in [' ', ':', '-', '.']: topic = topic.replace(char, '_')
|
||||
parser.add_option('-t', '--topic', default='openmp_' + topic + '/')
|
||||
parser.add_option('-t', '--topic', default='openmp_measures_' + topic + '/')
|
||||
|
||||
options, args = parser.parse_args()
|
||||
|
||||
|
|
@ -54,33 +50,54 @@ def logger(level_name, filename=LOG_DEFAULT_FILENAME):
|
|||
|
||||
options = parser()
|
||||
|
||||
def execute_openmp( p, ps, P, d, ds, D, r, s, v=options.verbose ):
|
||||
cmd = OPENMP_EXEC_FORMAT % (p, ps, P, d, ds, D, r, s, v, options.topic)
|
||||
def get_boxplot_data( filename ):
|
||||
try:
|
||||
f = open( filename )
|
||||
return [ [ float(value) for value in line.split() ] for line in f.readlines() ]
|
||||
except:
|
||||
raise ValueError('got an issue during the reading of file %s' % filename)
|
||||
|
||||
def non_zero( value ): return value if value > 0 else 1
|
||||
|
||||
def do_measure( name, p, ps, P, d, ds, D, r=options.nRun, s=options.seed, v='logging' ):
|
||||
pwd = options.topic + name + '_'
|
||||
cmd = OPENMP_EXEC_FORMAT % (p, ps, P, d, ds, D, r, s, v, pwd)
|
||||
logging.debug( cmd )
|
||||
#os.system( cmd )
|
||||
os.system( cmd )
|
||||
|
||||
for cur in ['speedup', 'efficiency', 'dynamicity']:
|
||||
filename = RESULT_FILE_FORMAT % (pwd, cur, p, ps, P, d, ds, D, r, s)
|
||||
pylab.boxplot( get_boxplot_data( filename ) )
|
||||
iters = ( non_zero( P - p ) / ps ) * ( non_zero( D - d ) / ds )
|
||||
pylab.xlabel('%d iterations from %d,%d to %d,%d' % ( iters, p, d, P, D) )
|
||||
pylab.ylabel('%s - %s' % (cur, name))
|
||||
pylab.savefig( filename + '.pdf', format='pdf' )
|
||||
pylab.savefig( filename + '.png', format='png' )
|
||||
pylab.cla()
|
||||
pylab.clf()
|
||||
|
||||
def main():
|
||||
# creates first the new topic repository
|
||||
#os.mkdir( options.topic )
|
||||
logging.info('creates first the new topic repository %s', options.topic)
|
||||
os.mkdir( options.topic )
|
||||
|
||||
# (1) EA in time O(1)
|
||||
logging.info('do all tests with r = %d and a common seed value = %d' % (options.nRun, options.seed))
|
||||
|
||||
# (1.1) speedup measure Sp, Ep for P & D
|
||||
logging.info('EA in time O(1) and O(n) - speedup measure Sp, Ep and Dp for P & D')
|
||||
|
||||
# (1.1.1) measure for all combinaisons of P n D
|
||||
execute_openmp( 1, 10, 100, 1, 10, 100, 100, options.seed )
|
||||
logging.info('(1) measure for all combinaisons of P n D')
|
||||
do_measure( '1', 1, 10, 101, 1, 10, 101 )
|
||||
|
||||
# (1.1.1) measure for all combinaisons of P n D
|
||||
execute_openmp( 1, 10, 100, 1, 10, 100, 100, options.seed )
|
||||
logging.info('(2) measure for P \in [1, 100[ with D fixed to 1000')
|
||||
do_measure( '2', 1, 1, 101, 1000, 1, 1000 )
|
||||
|
||||
logging.info('(3) measure for P \in [1, 1000[ with ps = 10 and D fixed to 1000')
|
||||
do_measure( '3', 1, 10, 1001, 1000, 1, 1000 )
|
||||
|
||||
# pylab.boxplot( [ [ float(value) for value in line.split() ] for line in open( sys.argv[i] ).readlines() ] )
|
||||
|
||||
# pylab.xlabel('iterations')
|
||||
# pylab.savefig( sys.argv[ len(sys.argv) - 1 ], format='pdf', transparent=True )
|
||||
|
||||
# (2) EA in time O(1)
|
||||
logging.info('(4) measure for D \in [1, 100[ with P fixed to 1000')
|
||||
do_measure( '4', 1000, 1, 1000, 1, 1, 101 )
|
||||
|
||||
logging.info('(5) measure for D \in [1, 1000[ with ds = 10 and P fixed to 1000')
|
||||
do_measure( '5', 1000, 1, 1000, 1, 10, 1001 )
|
||||
|
||||
# when executed, just run main():
|
||||
if __name__ == '__main__':
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue