def run_DMComplex(ex, name, opts, args, sizes, times, events, log=True): # This should eventually be replaced by a direct FFC/Ignition interface if args.operator == 'laplacian': numComp = 1 elif args.operator == 'elasticity': numComp = args.dim else: raise RuntimeError('Unknown operator: %s' % args.operator) for numBlock in [2**i for i in map(int, args.blockExp)]: opts['gpu_blocks'] = numBlock # Generate new block size cmd = './bin/pythonscripts/PetscGenerateFEMQuadrature.py %d %d %d %d %s %s.h' % ( args.dim, args.order, numComp, numBlock, args.operator, os.path.splitext(source[0])[0]) print(cmd) ret = os.system('python ' + cmd) args.files = ['[' + ','.join(source) + ']'] buildExample(args) sizes[name][numBlock] = [] times[name][numBlock] = [] events[name][numBlock] = {} for r in map(float, args.refine): out = ex.run(log=log, refinement_limit=r, **opts) sizes[name][numBlock].append(getDMComplexSize(args.dim, out)) processSummary('summary', args.stage, args.events, times[name][numBlock], events[name][numBlock]) return
def run_DMComplex(ex, name, opts, args, sizes, times, events, log=True): # This should eventually be replaced by a direct FFC/Ignition interface if args.operator == 'laplacian': numComp = 1 elif args.operator == 'elasticity': numComp = args.dim else: raise RuntimeError('Unknown operator: %s' % args.operator) for numBlock in [2**i for i in map(int, args.blockExp)]: opts['gpu_blocks'] = numBlock # Generate new block size cmd = './bin/pythonscripts/PetscGenerateFEMQuadrature.py %d %d %d %d %s %s.h' % (args.dim, args.order, numComp, numBlock, args.operator, os.path.splitext(source[0])[0]) print(cmd) ret = os.system('python '+cmd) args.files = ['['+','.join(source)+']'] buildExample(args) sizes[name][numBlock] = [] times[name][numBlock] = [] events[name][numBlock] = {} for r in map(float, args.refine): out = ex.run(log=log, refinement_limit=r, **opts) sizes[name][numBlock].append(getDMComplexSize(args.dim, out)) processSummary('summary', args.stage, args.events, times[name][numBlock], events[name][numBlock]) return
def run_DMComplex(ex, name, opts, args, sizes, times, events, log=True): # This should eventually be replaced by a direct FFC/Ignition interface if args.operator == 'laplacian': numComp = 1 elif args.operator == 'elasticity': numComp = args.dim else: raise RuntimeError('Unknown operator: %s' % args.operator) for numBlock in [2**i for i in map(int, args.blockExp)]: opts['gpu_blocks'] = numBlock args.files = ['['+','.join(source)+']'] buildExample(args) sizes[name][numBlock] = [] times[name][numBlock] = [] events[name][numBlock] = {} for r in map(float, args.refine): out = ex.run(log=log, refinement_limit=r, **opts) sizes[name][numBlock].append(getDMComplexSize(args.dim, out)) processSummary('summary', args.stage, args.events, times[name][numBlock], events[name][numBlock]) return