Re: [myhdl-list] newb question
Brought to you by:
jandecaluwe
From: Christopher F. <cf...@uc...> - 2008-02-18 17:43:39
|
On Mon, 18 Feb 2008 17:38:33 +0100 Jan Decaluwe <ja...@ja...> wrote: > Jan Decaluwe wrote: >> Christopher L. Felton wrote: >> >> >>>For this test, most people would not simulate this design this way. >>> >>>The design has a simple state machine >>>that controls the inputs to a bank of pwm's (controls the duty >>>cycle). But the state machine goes to the next >>>state on the order of 100ms real-time. But since the simulation has >>> >>>little logic and the logic switches minimally >>>it seemed like a good test to profile the MyHDL simulation execution >>>(most the time spent in the simulation code and not the logic code). >> >> >> This seems to imply that more "typical" code (e.g. with more logic >> inside generators) could have a relatively larger intbv overhead, >> and therefore more to gain from intbv optimization. >> >> I'll see if I can do a profiling check on my recent designs. > > Below you find a profiling output of a recent test plan. I believe >this > is quite representative for the code I tend to write. > > I used Python 2.5, cProfile, ordered by time (first 20 items). > > I use intbv slicing a lot, and you see this takes a considerable >amount > of time. > > It seems that optimizing intbv would help significantly, but the >Simulation Does it make sense to formalize a possible plan for optimization (quick wiki page)? If different folks attack it in parallel they would head down a similar path. Define if it needs to be optimized with C code or not. If so, add ctype type for intbv (like numpy folks did for arrays). Then attributes etc. can easily be accessible from C? > (including Signal) overhead being what it is, we can't expect >miracles. > > (Until the py.py team delivers a Python that is 10 times faster :-)) > > Jan > > ---- > > Wed Feb 13 18:36:07 2008 runprof > > 536613094 function calls (523280085 primitive calls) in >2643.025 CPU seconds > > Ordered by: internal time > > ncalls tottime percall cumtime percall >filename:lineno(function) > 19119681 257.504 0.000 461.618 0.000 >_intbv.py:148(__setitem__) > 12 244.692 20.391 2623.724 218.644 _Simulation.py:95(run) > 27579102 222.675 0.000 390.886 0.000 >_Signal.py:180(_set_next) > 2092116 144.248 0.000 937.835 0.000 _Waiter.py:184(next) > 89188746 139.018 0.000 139.018 0.000 {isinstance} > 25572768 126.633 0.000 126.633 0.000 >_intbv.py:80(_checkBounds) > 4748554 108.021 0.000 1078.335 0.000 _Waiter.py:152(next) > 19675183 105.021 0.000 105.021 0.000 _Signal.py:46(purge) > 41201947/30501215 94.226 0.000 168.693 0.000 {cmp} > 27633083/26039251 93.698 0.000 248.657 0.000 >_Signal.py:426(__cmp__) > 10615743 93.432 0.000 140.551 0.000 >_intbv.py:121(__getitem__) > 28024120 84.658 0.000 107.350 0.000 >_Signal.py:151(_update) > 668592 76.952 0.000 447.660 0.001 xxx.py:131(xxx) > 13568864/13268586 75.899 0.000 127.541 0.000 >_intbv.py:428(__cmp__) > 63303336 75.171 0.000 75.171 0.000 {method 'append' of >'list' objects} > 25711177 61.852 0.000 61.852 0.000 >_Signal.py:224(_setNextBool) > 8153851 43.938 0.000 122.899 0.000 >_Signal.py:284(__getitem__) > 33114023 38.130 0.000 38.130 0.000 {id} > 29873445 33.188 0.000 33.188 0.000 {method 'extend' of >'list' objects} > 3053592 31.259 0.000 50.400 0.000 _intbv.py:39(__init__) > > > -- > Jan Decaluwe - Resources bvba - http://www.jandecaluwe.com > Kaboutermansstraat 97, B-3000 Leuven, Belgium > From Python to silicon: > http://myhdl.jandecaluwe.com > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2008. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > myhdl-list mailing list > myh...@li... > https://lists.sourceforge.net/lists/listinfo/myhdl-list |