Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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