mirror of
https://github.com/moses-smt/mosesdecoder.git
synced 2024-12-26 05:14:36 +03:00
Test and fix errors in the profiling part of speedtest and update documentation. Works.
This commit is contained in:
parent
e7228ec9fb
commit
36bab92fcf
@ -63,21 +63,21 @@ The _Variants:_ line specifies what type of tests should we run. This particular
|
||||
If you want to produce profiler results together in some tests you need to specify the _MOSES\_PROFILER\_REPO_ in the config
|
||||
```bash
|
||||
git clone https://github.com/moses-smt/mosesdecoder.git mosesdecoder-profile
|
||||
cd mosesdecoder
|
||||
cd mosesdecoder-profile
|
||||
./bjam -j10 --with-cmph=/usr/include/ variant=profile
|
||||
```
|
||||
|
||||
Afterwards for testcases which contain the **profile** keyword in **Variants** you will see a directory inside _TEST\_LOG\_DIR which contains the **gprof** output from every run.
|
||||
Afterwards for testcases which contain the **profile** keyword in **Variants** you will see a directory inside _TEST\_LOG\_DIR which contains the **gprof** output from every run (files ending in **\_profile**).
|
||||
|
||||
#### Produce google profiler results.
|
||||
If you want to produce profiler results together in some tests you need to specify the _MOSES\_GOOGLE\_PROFILER\_REPO in the config
|
||||
```bash
|
||||
git clone https://github.com/moses-smt/mosesdecoder.git mosesdecoder-google-profile
|
||||
cd mosesdecoder
|
||||
./bjam link=shared -j10 --full-tcmalloc- -with-cmph=/usr/include/
|
||||
./bjam link=shared -j10 --full-tcmalloc --with-cmph=/usr/include/
|
||||
```
|
||||
|
||||
Afterwards for testcases which contain the **google-profiler** keyword in **Variants** you will see a directory inside _TEST\_LOG\_DIR which contains the **google-profiler** output from every run.
|
||||
Afterwards for testcases which contain the **google-profiler** keyword in **Variants** you will see a directory inside _TEST\_LOG\_DIR which contains the **google-profiler** output from every run (files prefixed with **pprof**). To analyze the output you need to use [pprof](http://google-perftools.googlecode.com/svn/trunk/doc/cpuprofile.html).
|
||||
|
||||
### Running tests.
|
||||
Running the tests is done through the **runtests.py** script.
|
||||
|
@ -119,7 +119,7 @@ def parse_configfile(conffile, testdir, moses_repo, moses_prof_repo=None, moses_
|
||||
if moses_prof_repo is not None: # Get optional command for profiling
|
||||
prof_command = moses_prof_repo + '/bin/' + command
|
||||
if moses_gprof_repo is not None: # Get optional command for google-perftools
|
||||
gprof_command = moses_gprof_repo + '/bin' + command
|
||||
gprof_command = moses_gprof_repo + '/bin/' + command
|
||||
command = moses_repo + '/bin/' + command
|
||||
elif opt == 'LDPRE:':
|
||||
ldopts = args.replace('\n', '')
|
||||
@ -226,14 +226,14 @@ def write_gprof(command, name, variant, config):
|
||||
executable_path = command.split(' ')[0] # Path to the moses binary
|
||||
gprof_command = 'gprof ' + executable_path + ' ' + gmon_path + ' > ' + outputfile
|
||||
subprocess.call([gprof_command], shell=True)
|
||||
os.remove('gmon_path') # After we are done discard the gmon file
|
||||
os.remove(gmon_path) # After we are done discard the gmon file
|
||||
|
||||
def write_pprof(name, variant, config):
|
||||
"""Copies the google-perftools profiler output to the corresponding test directory"""
|
||||
output_dir = config.testlogs + '/' + name
|
||||
if not os.path.exists(output_dir):
|
||||
os.makedirs(output_dir)
|
||||
outputfile = output_dir + '/gprof_' + time.strftime("%d.%m.%Y_%H:%M:%S") + '_' + name + '_' + variant
|
||||
outputfile = output_dir + '/pprof_' + time.strftime("%d.%m.%Y_%H:%M:%S") + '_' + name + '_' + variant
|
||||
shutil.move("/tmp/moses.prof", outputfile)
|
||||
|
||||
|
||||
@ -373,7 +373,7 @@ if __name__ == '__main__':
|
||||
|
||||
for logfile in os.listdir(CONFIG.testlogs):
|
||||
logfile_name = CONFIG.testlogs + '/' + logfile
|
||||
if not check_for_basever(logfile_name, CONFIG.basebranch):
|
||||
if os.path.isfile(logfile_name) and not check_for_basever(logfile_name, CONFIG.basebranch):
|
||||
logfile = logfile.replace('_vanilla', '')
|
||||
logfile = logfile.replace('_cached', '')
|
||||
logfile = logfile.replace('_ldpre', '')
|
||||
@ -384,7 +384,7 @@ if __name__ == '__main__':
|
||||
#Create a new configuration for base version tests:
|
||||
BASECONFIG = Configuration(CONFIG.repo, CONFIG.drop_caches,\
|
||||
CONFIG.tests, CONFIG.testlogs, CONFIG.basebranch,\
|
||||
CONFIG.baserev, CONFIG.repo_prof)
|
||||
CONFIG.baserev, CONFIG.repo_prof, CONFIG.repo_gprof)
|
||||
BASECONFIG.additional_args(None, CONFIG.baserev, CONFIG.basebranch)
|
||||
#Set up the repository and get its revision:
|
||||
REVISION = repoinit(BASECONFIG)
|
||||
@ -406,7 +406,7 @@ if __name__ == '__main__':
|
||||
#Perform tests
|
||||
for directory in FIRSTTIME:
|
||||
cur_testcase = parse_configfile(BASECONFIG.tests + '/' + directory +\
|
||||
'/config', directory, BASECONFIG.repo)
|
||||
'/config', directory, BASECONFIG.repo, BASECONFIG.repo_prof, BASECONFIG.repo_gprof)
|
||||
execute_tests(cur_testcase, directory, BASECONFIG)
|
||||
|
||||
#Reset back the repository to the normal configuration
|
||||
@ -430,10 +430,10 @@ if __name__ == '__main__':
|
||||
|
||||
if CONFIG.singletest:
|
||||
TESTCASE = parse_configfile(CONFIG.tests + '/' +\
|
||||
CONFIG.singletest + '/config', CONFIG.singletest, CONFIG.repo)
|
||||
CONFIG.singletest + '/config', CONFIG.singletest, CONFIG.repo, CONFIG.repo_prof, CONFIG.repo_gprof)
|
||||
execute_tests(TESTCASE, CONFIG.singletest, CONFIG)
|
||||
else:
|
||||
for directory in ALL_DIR:
|
||||
cur_testcase = parse_configfile(CONFIG.tests + '/' + directory +\
|
||||
'/config', directory, CONFIG.repo)
|
||||
'/config', directory, CONFIG.repo, CONFIG.repo_prof, CONFIG.repo_gprof)
|
||||
execute_tests(cur_testcase, directory, CONFIG)
|
||||
|
Loading…
Reference in New Issue
Block a user