← Back to team overview

dolfin team mailing list archive

Re: Improvements in generation of SWIG interface

 

Yes, I have seen that...

I think we can do 1 of 2 thing.

  1) append the relative path to dolfin_utils in the script, which
     is an easy fix.

  2) prevent running script from within the tree and for example place
     them in:

       utils/something

Johan


On 08/25/2012 09:39 AM, Garth N. Wells wrote:
> Looks like this has re-introduced an old bug. It's not possible to run
> generateswigcode.py without DOLFIN being installed. This is a circular
> dependency. I get
> 
> Traceback (most recent call last):
>   File "generateswigcode.py", line 32, in <module>
>     from dolfin_utils.cppparser import *
> ImportError: No module named dolfin_utils.cppparser
> 
> Garth
> 
> On 13 August 2012 09:51, Johan Hake <hake.dev@xxxxxxxxx> wrote:
>> Hello!
>>
>> I have improved (hopefully!) the automatic generation of the SWIG
>> interface of DOLFIN by reducing the size of the generated
>> modulePYTHON_wrap.cxx file, with the result of using less memory during
>> compilation of the individual modules. It now peaks at 650 MB instead of
>> 1.2 GB. The reduced interface is accomplished by only importing and
>> including the dependent dolfin types for each module. Previously we
>> exposed the whole dolfin library to all modules.
>>
>> The reduced import is accomplished by parsing all .h files in the DOLFIN
>> tree, and collecting dependencies. For this I used a python module
>> called CppHeaderParser. It is released using BSD license and is included
>> in dolfin_utils. I have worked together with Jashua Cloutier the
>> developer of CppHeaderParser to make it parse the whole DOLFIN library.
>>
>> CppHeaderParser depends on ply.lex, which is distributed in debian in
>> the python-ply package. So one either need to:
>>
>>   sudo apt-get install python-ply
>>
>> or
>>
>>   pip install ply
>>
>> using PyPI.
>>
>> JIT compilation of dolfin modules (Expressions and SubDomains) is also
>> much faster now, as the JIT compiled DOLFIN code is parsed runtime and
>> only dependent files are included or imported when the SWIG interface is
>> generated. Running Expression.py unit test takes 42 s instead of 140 s.
>>
>> Not everything could be automated through the parsing, as the
>> Hierarchical class with all its derived classes causes huge pain for
>> SWIG. The pain was, however, overcome by two simple hacks in
>> generateswigcode.py and compileextensionmodule.py.
>>
>> Regards,
>>
>> Johan
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~dolfin
>> Post to     : dolfin@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~dolfin
>> More help   : https://help.launchpad.net/ListHelp



Follow ups

References