Changeset 4b41184 in sasmodels for sasmodels/compare.py


Ignore:
Timestamp:
Nov 25, 2015 4:10:43 PM (8 years ago)
Author:
Paul Kienzle <pkienzle@…>
Branches:
master, core_shell_microgels, costrafo411, magnetic_model, release_v0.94, release_v0.95, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
Children:
a5899c8
Parents:
0fa687d
Message:

internal refactoring of compare/compare_many

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/compare.py

    r319ab14 r4b41184  
    233233    return data, index 
    234234 
    235 def compare(name, pars, Ncpu, Nocl, opts, set_pars): 
     235def compare(name, pars, Ncomp, Nbase, opts, set_pars): 
    236236    model_definition = core.load_model_definition(name) 
    237237 
     
    277277        print "pars",parlist(pars) 
    278278 
    279     # OpenCl calculation 
    280     if Nocl > 0 and "-ctypes" in opts and "-sasview" in opts: 
     279    # Base calculation 
     280    if 0: 
     281        from sasmodels.models import sphere as target 
     282        base_name = target.name 
     283        base, base_time = eval_ctypes(target, pars, data, 
     284                         dtype='longdouble', cutoff=0., Nevals=Ncomp) 
     285    elif Nbase > 0 and "-ctypes" in opts and "-sasview" in opts: 
    281286        try: 
    282             ocl, ocl_time = eval_sasview(model_definition, pars, data, Ncpu) 
    283             base = "sasview" 
    284             #print "ocl/sasview", (ocl-pars['background'])/(cpu-pars['background']) 
    285             print "sasview t=%.1f ms, intensity=%.0f"%(ocl_time, sum(ocl)) 
    286             #print "sasview",cpu 
     287            base, base_time = eval_sasview(model_definition, pars, data, Ncomp) 
     288            base_name = "sasview" 
     289            #print "base/sasview", (base-pars['background'])/(comp-pars['background']) 
     290            print "sasview t=%.1f ms, intensity=%.0f"%(base_time, sum(base)) 
     291            #print "sasview",comp 
    287292        except ImportError: 
    288293            traceback.print_exc() 
    289             Ncpu = 0 
    290     elif Nocl > 0: 
    291         ocl, ocl_time = eval_opencl(model_definition, pars, data, 
    292                                     dtype=dtype, cutoff=cutoff, Nevals=Nocl) 
    293         base = "ocl" 
    294         print "opencl t=%.1f ms, intensity=%.0f"%(ocl_time, sum(ocl)) 
    295         #print "ocl", ocl 
    296         #print max(ocl), min(ocl) 
    297  
    298     # ctypes/sasview calculation 
    299     if Ncpu > 0 and "-ctypes" in opts: 
    300         cpu, cpu_time = eval_ctypes(model_definition, pars, data, 
    301                                     dtype=dtype, cutoff=cutoff, Nevals=Ncpu) 
    302         comp = "ctypes" 
    303         print "ctypes t=%.1f ms, intensity=%.0f"%(cpu_time, sum(cpu)) 
    304     elif Ncpu > 0: 
     294            Ncomp = 0 
     295    elif Nbase > 0: 
     296        base, base_time = eval_opencl(model_definition, pars, data, 
     297                                    dtype=dtype, cutoff=cutoff, Nevals=Nbase) 
     298        base_name = "ocl" 
     299        print "opencl t=%.1f ms, intensity=%.0f"%(base_time, sum(base)) 
     300        #print "base", base 
     301        #print max(base), min(base) 
     302 
     303    # Comparison calculation 
     304    if Ncomp > 0 and "-ctypes" in opts: 
     305        comp, comp_time = eval_ctypes(model_definition, pars, data, 
     306                                    dtype=dtype, cutoff=cutoff, Nevals=Ncomp) 
     307        comp_name = "ctypes" 
     308        print "ctypes t=%.1f ms, intensity=%.0f"%(comp_time, sum(comp)) 
     309    elif Ncomp > 0: 
    305310        try: 
    306             cpu, cpu_time = eval_sasview(model_definition, pars, data, Ncpu) 
    307             comp = "sasview" 
    308             #print "ocl/sasview", (ocl-pars['background'])/(cpu-pars['background']) 
    309             print "sasview t=%.1f ms, intensity=%.0f"%(cpu_time, sum(cpu)) 
    310             #print "sasview",cpu 
     311            comp, comp_time = eval_sasview(model_definition, pars, data, Ncomp) 
     312            comp_name = "sasview" 
     313            #print "base/sasview", (base-pars['background'])/(comp-pars['background']) 
     314            print "sasview t=%.1f ms, intensity=%.0f"%(comp_time, sum(comp)) 
     315            #print "sasview",comp 
    311316        except ImportError: 
    312317            traceback.print_exc() 
    313             Ncpu = 0 
     318            Ncomp = 0 
    314319 
    315320    # Compare, but only if computing both forms 
    316     if Nocl > 0 and Ncpu > 0: 
    317         #print "speedup %.2g"%(cpu_time/ocl_time) 
    318         #print "max |ocl/cpu|", max(abs(ocl/cpu)), "%.15g"%max(abs(ocl)), "%.15g"%max(abs(cpu)) 
    319         #cpu *= max(ocl/cpu) 
    320         resid = (ocl - cpu) 
    321         relerr = resid/cpu 
     321    if Nbase > 0 and Ncomp > 0: 
     322        #print "speedup %.2g"%(comp_time/base_time) 
     323        #print "max |base/comp|", max(abs(base/comp)), "%.15g"%max(abs(base)), "%.15g"%max(abs(comp)) 
     324        #comp *= max(base/comp) 
     325        resid = (base - comp) 
     326        relerr = resid/comp 
    322327        #bad = (relerr>1e-4) 
    323         #print relerr[bad],cpu[bad],ocl[bad],data.qx_data[bad],data.qy_data[bad] 
    324         _print_stats("|%s-%s|"%(base,comp)+(" "*(3+len(comp))), resid) 
    325         _print_stats("|(%s-%s)/%s|"%(base,comp,comp), relerr) 
     328        #print relerr[bad],comp[bad],base[bad],data.qx_data[bad],data.qy_data[bad] 
     329        _print_stats("|%s-%s|"%(base_name,comp_name)+(" "*(3+len(comp_name))), resid) 
     330        _print_stats("|(%s-%s)/%s|"%(base_name,comp_name,comp_name), relerr) 
    326331 
    327332    # Plot if requested 
    328333    if '-noplot' in opts: return 
    329334    import matplotlib.pyplot as plt 
    330     if Ncpu > 0: 
    331         if Nocl > 0: plt.subplot(131) 
    332         plot_theory(data, cpu, view=view, plot_data=False) 
    333         plt.title("%s t=%.1f ms"%(comp,cpu_time)) 
     335    if Ncomp > 0: 
     336        if Nbase > 0: plt.subplot(131) 
     337        plot_theory(data, comp, view=view, plot_data=False) 
     338        plt.title("%s t=%.1f ms"%(comp_name,comp_time)) 
    334339        #cbar_title = "log I" 
    335     if Nocl > 0: 
    336         if Ncpu > 0: plt.subplot(132) 
    337         plot_theory(data, ocl, view=view, plot_data=False) 
    338         plt.title("%s t=%.1f ms"%(base,ocl_time)) 
     340    if Nbase > 0: 
     341        if Ncomp > 0: plt.subplot(132) 
     342        plot_theory(data, base, view=view, plot_data=False) 
     343        plt.title("%s t=%.1f ms"%(base_name,base_time)) 
    339344        #cbar_title = "log I" 
    340     if Ncpu > 0 and Nocl > 0: 
     345    if Ncomp > 0 and Nbase > 0: 
    341346        plt.subplot(133) 
    342347        if '-abs' in opts: 
     
    344349        else: 
    345350            err,errstr,errview = abs(relerr), "rel err", "log" 
    346         #err,errstr = ocl/cpu,"ratio" 
     351        #err,errstr = base/comp,"ratio" 
    347352        plot_theory(data, None, resid=err, view=errview, plot_data=False) 
    348353        plt.title("max %s = %.3g"%(errstr, max(abs(err)))) 
     
    352357    #    h.ax.set_title(cbar_title) 
    353358 
    354     if Ncpu > 0 and Nocl > 0 and '-hist' in opts: 
     359    if Ncomp > 0 and Nbase > 0 and '-hist' in opts: 
    355360        plt.figure() 
    356361        v = relerr 
     
    479484    pars = get_demo_pars(model_definition) 
    480485 
    481     Nopencl = int(args[1]) if len(args) > 1 else 5 
    482     Nsasview = int(args[2]) if len(args) > 2 else 1 
     486    Ncomp = int(args[1]) if len(args) > 1 else 5 
     487    Nbase = int(args[2]) if len(args) > 2 else 1 
    483488 
    484489    # Fill in default polydispersity parameters 
     
    499504        set_pars[k] = float(v) if not v.endswith('type') else v 
    500505 
    501     compare(name, pars, Nsasview, Nopencl, opts, set_pars) 
     506    compare(name, pars, Ncomp, Nbase, opts, set_pars) 
    502507 
    503508if __name__ == "__main__": 
Note: See TracChangeset for help on using the changeset viewer.