languages = [lang for lang in [ getlang(PythonLanguage), getlang(NumexprPythonLanguage), getlang(CPPLanguage, extra_compile_args=['-O3', '-ffast-math', '-march=native'], restrict='__restrict__', flush_denormals=True), #getlang(CUDALanguage), ] if lang is not None] codestrings = {} for lang in languages: innercode = translate(G.abstract_code, G.specifiers, float64, lang) code = lang.apply_template(innercode, lang.template_state_update()) codestrings[lang] = code print lang.__class__.__name__ print '='*len(lang.__class__.__name__) codeprint(code) if not test_compile: exit() N = 100000 Nshow = 10 tshow = 100 ttest = 1000 dt = 0.001 _array_V = pylab.rand(N) _array_I = pylab.rand(N) _array_tau = pylab.ones(N)*30*0.001 print print 'Timings'
dt = 0.001 N = 10 I = pylab.zeros(N) f = 1.0+pylab.arange(N) for lang in languages: namespace = { '_array_I': I.copy(), '_array_f': f.copy(), 'pi': pylab.pi, '_num_neurons': N, } innercode = translate(abstract, specifiers, float64, lang) print '*********', lang.__class__.__name__, '*********' print '========= INNER CODE =========' codeprint(innercode) print '=========== TEMPLATE =========' tmp = lang.template_state_update() codeprint(tmp) code = lang.apply_template(innercode, lang.template_state_update()) print '=========== CODE =============' codeprint(code) codeobj = lang.code_object(code, specifiers) codeobj.compile(namespace) T = [] M = [] for t in pylab.arange(100)*dt: t = float(t) M.append(namespace['_array_I'].copy()) T.append(t) codeobj(t=t)