Skip to content

Commit

Permalink
Finish experiment mfem#4 and add notes
Browse files Browse the repository at this point in the history
  • Loading branch information
mikebentley15 committed Jan 27, 2018
1 parent eb77ada commit 6929d81
Show file tree
Hide file tree
Showing 2 changed files with 381 additions and 6 deletions.
116 changes: 110 additions & 6 deletions examples/flit-tests-ex4/narrow_down.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@

import sys
from glob import glob
import multiprocessing
import multiprocessing as mp
import subprocess
import tempfile
import itertools as it

src = [
'main.cpp',
Expand Down Expand Up @@ -59,6 +60,15 @@

src.extend(glob('tests/*.cpp'))

src_of_interest = [
'../../fem/fe.cpp',
'../../fem/intrules.cpp',
'../../linalg/densemat.cpp',
'../../mesh/mesh.cpp',
'../../mesh/nurbs.cpp',
'tests/Example04.cpp',
]

def compile_objects(src):
'Compiles shared targets such as object files and the devrun executable'
assert(run_test(src, src, make_args=['-j30', 'objects'], quietout=False,
Expand Down Expand Up @@ -102,17 +112,88 @@ def run_test(dev_src, gt_src, make_args=[], quietout=True, quieterr=True,
subprocess.call(['make', 'clean', '-f', outfname],
**extra_call_args)

def main(arguments):
'Main entry point'
def only_one_dev():
'One file in executable, all others in shared library'
dev_src_list = []
gt_src_list = []
for src_file in src:
dev_src_list.append(set([src_file]))
gt_src_list.append(set(src) - dev_src_list[-1])
print('Running tests')
with mp.Pool() as p:
results = p.starmap(run_test, zip(dev_src_list, gt_src_list))
for dev_src, success in zip(dev_src_list, results):
if success:
print('\nCompiling all but {0} into libgt.so'.format(dev_src) +
'\n Caused a success')
else:
print('.', end='')
print('\nFully finished')

def all_two_combos_dev():
'Two files in executable, all others in shared library'
dev_src_list = []
gt_src_list = []
already_paired = set()
for src_file in src:
for src_file_2 in src:
if src_file == src_file_2 \
or (src_file, src_file_2) in already_paired \
or (src_file_2, src_file) in already_paired:
continue
dev_src_list.append(set([src_file, src_file_2]))
gt_src_list.append(set(src) - dev_src_list[-1])
already_paired.add((src_file, src_file_2))
print('Running tests')
with mp.Pool() as p:
results = p.starmap(run_test, zip(dev_src_list, gt_src_list))
for dev_src, success in zip(dev_src_list, results):
if success:
print('\nCompiling all but {0} into libgt.so'.format(dev_src) +
'\n Caused a success')
else:
print('.', end='')
print('\nFully finished')

def only_one_gt():
'One file in shared library, all others in executable'
dev_src_list = []
gt_src_list = []
for src_file in src:
dev_src_list.append(set(src) - set([src_file]))
gt_src_list.append(set(src) - dev_src_list[-1])
compile_objects(src)
print('Finished compiling objects')
print('Running tests')
with multiprocessing.Pool() as p:
with mp.Pool() as p:
results = p.starmap(run_test, zip(dev_src_list, gt_src_list))
for gt_src, success in zip(gt_src_list, results):
if not success:
print('\nCompiling {0} into libgt.so'.format(gt_src) +
'\n Caused a failure')
else:
print('.', end='')
print('\nFully finished')

def all_interesting_files():
'''
Combos of putting interesting files in shared library, all others in
executable
'''
print('Interesting files investigated:')
for filename in src_of_interest:
print(' ', filename)
def powerset(A):
iterable = it.chain.from_iterable(
it.combinations(A, r) for r in range(len(A) + 1))
for elem in iterable:
yield set(elem)
combos = powerset(src_of_interest)
dev_src_list = []
gt_src_list = []
src_set = set(src)
for gt in combos:
gt_src_list.append(gt)
dev_src_list.append(src_set - gt)
with mp.Pool() as p:
results = p.starmap(run_test, zip(dev_src_list, gt_src_list))
for gt_src, success in zip(gt_src_list, results):
if not success:
Expand All @@ -122,5 +203,28 @@ def main(arguments):
print('.', end='')
print('\nFully finished')

def main(arguments):
'Main entry point'
print('Compiling objects before experiments')
compile_objects(src)
print('Finished compiling objects')
print()

#print('Running only_one_gt()')
#only_one_gt()
#print()

#print('Running only_one_dev()')
#only_one_dev()
#print()

#print('Running all_two_combos_dev()')
#all_two_combos_dev()
#print()

print('Running all_interesting_files()')
all_interesting_files()
print()

if __name__ == '__main__':
main(sys.argv[1:])
Loading

0 comments on commit 6929d81

Please sign in to comment.