[PD] [PD-announce] jit_expr 0.1: Just in time compiled expr/expr~/fexpr~
Marco Matteo Markidis
mm.markidis at gmail.com
Sun Mar 18 23:38:11 CET 2018
I managed to add llvm but compilation fails.
MMMarkidis:jit_expr dis$ make
[ 7%] [FLEX][Scanner] Building scanner with flex 2.6.4
[ 15%] [BISON][Parser] Building parser with bison 3.0.4
Scanning dependencies of target parse
[ 23%] Building CXX object src/parse/CMakeFiles/parse.dir/scanner.cc.o
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:772:8:
error:
member reference type 'std::istream *' (aka 'basic_istream<char> *')
is a
pointer; maybe you meant to use '->'?
yyin.rdbuf(std::cin.rdbuf());
~~~~^
->
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:779:9:
error:
member reference type 'std::ostream *' (aka 'basic_ostream<char> *')
is a
pointer; maybe you meant to use '->'?
yyout.rdbuf(std::cout.rdbuf());
~~~~~^
->
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:1112:50:
error:
member reference type 'std::istream *' (aka 'basic_istream<char> *')
is a
pointer; maybe you meant to use '->'?
YY_CURRENT_BUFFER_LVALUE->yy_input_file =
yyin.rdbuf();
~~~~^
->
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:1232:2:
error:
cannot initialize a member subobject of type 'std::istream *' (aka
'basic_istream<char> *') with an rvalue of type
'basic_streambuf<char_type, traits_type> *'
yyin(arg_yyin ? arg_yyin->rdbuf() : std::cin.rdbuf()),
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:1233:2:
error:
cannot initialize a member subobject of type 'std::ostream *' (aka
'basic_ostream<char> *') with an rvalue of type
'basic_streambuf<char_type, traits_type> *'
yyout(arg_yyout ? arg_yyout->rdbuf() : std::cout.rdbuf())
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:1235:2:
error:
use of undeclared identifier 'ctor_common'
ctor_common();
^
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:1240:14:
error:
out-of-line definition of 'parseFlexLexer' does not match any
declaration
in 'parseFlexLexer'
yyFlexLexer::yyFlexLexer( std::istream& arg_yyin, std::ostream& arg_yyout ):
^~~~~~~~~~~
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:30:25:
note:
expanded from macro 'yyFlexLexer'
#define yyFlexLexer parseFlexLexer
^~~~~~~~~~~~~~
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:1231:27:
note:
type of 1st parameter of member declaration does not match definition
('std::istream *' (aka 'basic_istream<char> *') vs 'std::istream &'
(aka
'basic_istream<char> &'))
yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout ):
^
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:1241:2:
error:
cannot initialize a member subobject of type 'std::istream *' (aka
'basic_istream<char> *') with an rvalue of type
'basic_streambuf<char_type, traits_type> *'
yyin(arg_yyin.rdbuf()),
^ ~~~~~~~~~~~~~~~~
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:1242:2:
error:
cannot initialize a member subobject of type 'std::ostream *' (aka
'basic_ostream<char> *') with an rvalue of type
'basic_streambuf<char_type, traits_type> *'
yyout(arg_yyout.rdbuf())
^ ~~~~~~~~~~~~~~~~~
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:1244:2:
error:
use of undeclared identifier 'ctor_common'
ctor_common();
^
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:1249:19:
error:
out-of-line definition of 'ctor_common' does not match any
declaration in
'parseFlexLexer'
void yyFlexLexer::ctor_common()
^~~~~~~~~~~
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:1287:19:
error:
out-of-line definition of 'switch_streams' does not match any
declaration
in 'parseFlexLexer'
void yyFlexLexer::switch_streams( std::istream& new_in, std::ostream&
new_out )
^~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/FlexLexer.h:129:31:
note:
type of 1st parameter of member declaration does not match definition
('std::istream *' (aka 'basic_istream<char> *') vs 'std::istream &'
(aka
'basic_istream<char> &'))
virtual void switch_streams( FLEX_STD istream* new_in, FLEX_STD ...
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/FlexLexer.h:53:22:
note:
expanded from macro 'FLEX_STD'
# define FLEX_STD std::
^
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:1291:41:
error:
no viable conversion from 'std::istream' (aka 'basic_istream<char>')
to
'std::istream *' (aka 'basic_istream<char> *')
yy_switch_to_buffer( yy_create_buffer( new_in, YY_BUF_SIZE ) );
^~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/FlexLexer.h:121:62:
note:
passing argument to parameter 's' here
struct yy_buffer_state* yy_create_buffer( FLEX_STD istream* s, int
size );
^
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:1294:7:
error:
member reference type 'std::ostream *' (aka 'basic_ostream<char> *')
is a
pointer; maybe you meant to use '->'?
yyout.rdbuf(new_out.rdbuf());
~~~~~^
->
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:1302:10:
error:
assigning to 'std::istream *' (aka 'basic_istream<char> *') from
incompatible type 'std::istream **' (aka 'basic_istream<char> **');
remove
&
new_in = &yyin;
^ ~~~~~
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:1306:11:
error:
assigning to 'std::ostream *' (aka 'basic_ostream<char> *') from
incompatible type 'std::ostream **' (aka 'basic_ostream<char> **');
remove
&
new_out = &yyout;
^ ~~~~~~
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:1315:18:
error:
out-of-line definition of 'LexerInput' does not match any declaration
in
'parseFlexLexer'
int yyFlexLexer::LexerInput( char* buf, int max_size )
^~~~~~~~~~
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:1318:11:
error:
member reference type 'std::istream *' (aka 'basic_istream<char> *')
is a
pointer; maybe you meant to use '->'?
if ( yyin.eof() || yyin.fail() )
~~~~^
->
/Users/dis/Documents/Pd/externals/jit_expr/build/src/parse/scanner.cc:1318:25:
error:
member reference type 'std::istream *' (aka 'basic_istream<char> *')
is a
pointer; maybe you meant to use '->'?
if ( yyin.eof() || yyin.fail() )
~~~~^
->
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[3]: *** [src/parse/CMakeFiles/parse.dir/scanner.cc.o] Error 1
make[2]: *** [src/parse/CMakeFiles/parse.dir/all] Error 2
make[1]: *** [all] Error 2
make: *** [pd] Error 2
2018-03-18 22:49 GMT+01:00 Marco Matteo Markidis <mm.markidis at gmail.com>:
> Hi Alex,
>
> jit_expr.pd_darwin is in the same folder of help file. Usually it works...
> On my machine, Deken puts the externals in Pd/externals and in my path I
> have Pd/externals.
>
> Anyway, putting all stuff in verbose I get in console:
>
> /Users/dis/Documents/Pd/externals/jit_expr/jit_expr.pd_darwin:
> dlopen(/Users/dis/Documents/Pd/externals/jit_expr/jit_expr.pd_darwin,
> 10): Symbol not found: _futimens
> Referenced from: /Users/dis/Documents/Pd/extern
> als/jit_expr/jit_expr.pd_darwin (which was built for Mac OS X 10.13)
> Expected in: /usr/lib/libSystem.B.dylib
> in /Users/dis/Documents/Pd/externals/jit_expr/jit_expr.pd_darwin
>
> So there is futimens function that is not found; indeed looking at symbols
> present in my /usr/lib/libSystem.B.dylib futimens is not present. So I
> suspect that passing from OSX 10.10.5 (my os) to OSX 10.13 (the one you use
> to compile) something changes.
>
> Finally, I tried to compile jit_expr. However Cmake 3.10.2 does not find
> LLVMConfig.cmake or llvm-config.cmake. I have several llvm installed on my
> machine with macports, but even using find command I do not find manually
> any of these two files.
>
> Best,
> Marco
>
> Ps. I found a LLVM-Config.cmake but I don't know how to add this path or
> set a LLVM_DIR.
>
> 2018-03-18 19:22 GMT+01:00 Alex <x37v.alex at gmail.com>:
>
>> Hi Marco,
>>
>> HMM, where did you install jit_expr.pd_darwin ? Deken initially sets up a
>> directory for you if you tell it to, I believe. I think on mac this is in
>> ~/Documents/Pd/extra ?
>> Can you tell me what is in your "path" settings, on mac the "file" menu
>> item might be just called "Pd"? I'm not sure [I'm on a linux machine right
>> now]
>> File -> preferences -> path
>>
>> -Alex
>>
>>
>> On Sun, Mar 18, 2018 at 10:10 AM, Marco Matteo Markidis <
>> mm.markidis at gmail.com> wrote:
>>
>>> Sorry,
>>> I forgot to let you know all the important informations.
>>>
>>> Pd vanilla 48.1 64 bit, OSX, downloaded from deken binaries and sources.
>>> help file doesn't work opening from pd browser and directly double-clicking.
>>>
>>> I tried even copy pd.lib in the same folder of help & pd.darwin, but
>>> without success.
>>>
>>> 2018-03-18 18:04 GMT+01:00 Alex <x37v.alex at gmail.com>:
>>>
>>>> Hi Marco,
>>>>
>>>> Which version of PD are you running? Which OS? I expect you downloaded
>>>> jit_expr from deken?
>>>> Does the jit_expr help file work if you open it in the pd browser? help
>>>> -> browse -> jit_expr -> double click on the jit_expr-help.pd file?
>>>>
>>>> -Alex
>>>>
>>>>
>>>> On Sun, Mar 18, 2018 at 9:49 AM, Marco Matteo Markidis <
>>>> mm.markidis at gmail.com> wrote:
>>>>
>>>>> Dear Alex,
>>>>>
>>>>> very happy about this new feature... and incredibly very happy about
>>>>> hearing just-in-time compiling dsp graph!
>>>>> Anyway, I get only various jit/expr, jit/expr~, jit/fexpr~ couldn't
>>>>> create...
>>>>> I tried to change the [declare -lib] in [declare -path], jit_expr in
>>>>> jit/expr in declare, looking to have the right 64 bit pd but nothing...
>>>>>
>>>>> Best,
>>>>> Marco
>>>>>
>>>>> 2018-03-18 17:34 GMT+01:00 Alex <x37v.alex at gmail.com>:
>>>>>
>>>>>> Alexandre,
>>>>>>
>>>>>> I don't think it has had enough usage to be called "stable" yet, but
>>>>>> I could see that happening down the line. In fact, I could see eventually
>>>>>> JIT compiling the entire DSP graph.. but of course that would be
>>>>>> significant work. At this point I just need more people to try it out and
>>>>>> make sure it would be up to it.
>>>>>>
>>>>>> -Alex
>>>>>>
>>>>>>
>>>>>> On Sun, Mar 18, 2018 at 9:23 AM, Alexandre Torres Porres <
>>>>>> porres at gmail.com> wrote:
>>>>>>
>>>>>>> if this is stable, wouldn't it be a nice idea to propose it as an
>>>>>>> update to the expr~ family of objects? since it is basically an optimized
>>>>>>> clone?
>>>>>>>
>>>>>>> cheers
>>>>>>>
>>>>>>> 2018-03-18 13:08 GMT-03:00 Alex <x37v.alex at gmail.com>:
>>>>>>>
>>>>>>>> jit_expr is a clone of the pure data expr/expr~/fexpr~ objects. It
>>>>>>>> just-in-time compiles its expressions so they should be much more optimized
>>>>>>>> than the original. If all works as designed, they should use less CPU than
>>>>>>>> the equivalent vanilla, non-expr, patching and have a significant CPU
>>>>>>>> advantage over the original expr objects.
>>>>>>>>
>>>>>>>> I've put the external, compiled for 64-bit Mac-OS and 64-bit Linux,
>>>>>>>> up on deken: in pd, go to help menu, find externals, search for "jit_expr".
>>>>>>>>
>>>>>>>> After installing the external you should be able to change any of
>>>>>>>> your expr family of objects to just in time compile by loading the library,
>>>>>>>> [declare -lib jit_expr], and then prefixing the object name with "jit/",
>>>>>>>> for example [jit/fexpr~ $x1[0] + $y1[-1]].
>>>>>>>>
>>>>>>>> I believe they are feature complete with the originals but I'd love
>>>>>>>> to know if there is anything that I'm missing or any bugs that you discover.
>>>>>>>> I'm not exactly sure how to profile pure data patches. If anyone
>>>>>>>> has a good approach or original expr~/fexpr~ patches that use a lot of CPU
>>>>>>>> you can share, let me know.
>>>>>>>>
>>>>>>>> Compiling in the object takes a little bit of time, so the initial
>>>>>>>> instantiation of the object/expression will be a bit slower than the
>>>>>>>> original, FYI.
>>>>>>>>
>>>>>>>> Please report any issues here:
>>>>>>>> https://github.com/x37v/jit-expr/issues
>>>>>>>>
>>>>>>>>
>>>>>>>> BTW, if you're curious to see the llvm assembly produced by your
>>>>>>>> expression, send the |print( message into the left most inlet of your
>>>>>>>> object then check out the pd console.
>>>>>>>>
>>>>>>>>
>>>>>>>> I would love help building Windows and 32-bit Linux versions of the
>>>>>>>> externals. I'm guessing we could also do raspi/arm builds but we'd need
>>>>>>>> some changes to the source code as it uses llvm and explicitly generates
>>>>>>>> code for x86 right now.
>>>>>>>>
>>>>>>>> The source code can be found in the git repo:
>>>>>>>> https://github.com/x37v/jit-expr
>>>>>>>>
>>>>>>>> -Alex Norman
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Pd-announce mailing list
>>>>>>>> Pd-announce at lists.iem.at
>>>>>>>> https://lists.puredata.info/listinfo/pd-announce
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Pd-list at lists.iem.at mailing list
>>>>>>>> UNSUBSCRIBE and account-management ->
>>>>>>>> https://lists.puredata.info/listinfo/pd-list
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Pd-list at lists.iem.at mailing list
>>>>>>> UNSUBSCRIBE and account-management -> https://lists.puredata.info/li
>>>>>>> stinfo/pd-list
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Pd-list at lists.iem.at mailing list
>>>>>> UNSUBSCRIBE and account-management -> https://lists.puredata.info/li
>>>>>> stinfo/pd-list
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Ho cambiato l'indirizzo email in mm.markidis at autistici.org . Se non è
>>>>> un problema, scrivimi a questo nuovo indirizzo email.
>>>>>
>>>>> I changed my email address in mm.markidis at autistici.org . If it is ok
>>>>> for you, please write me to this new email address.
>>>>>
>>>>> _______________________________________________
>>>>> Pd-list at lists.iem.at mailing list
>>>>> UNSUBSCRIBE and account-management -> https://lists.puredata.info/li
>>>>> stinfo/pd-list
>>>>>
>>>>>
>>>>
>>>
>>>
>>> --
>>> Ho cambiato l'indirizzo email in mm.markidis at autistici.org . Se non è
>>> un problema, scrivimi a questo nuovo indirizzo email.
>>>
>>> I changed my email address in mm.markidis at autistici.org . If it is ok
>>> for you, please write me to this new email address.
>>>
>>> _______________________________________________
>>> Pd-list at lists.iem.at mailing list
>>> UNSUBSCRIBE and account-management -> https://lists.puredata.info/li
>>> stinfo/pd-list
>>>
>>>
>>
>
>
> --
> Ho cambiato l'indirizzo email in mm.markidis at autistici.org . Se non è un
> problema, scrivimi a questo nuovo indirizzo email.
>
> I changed my email address in mm.markidis at autistici.org . If it is ok for
> you, please write me to this new email address.
>
--
Ho cambiato l'indirizzo email in mm.markidis at autistici.org . Se non è un
problema, scrivimi a questo nuovo indirizzo email.
I changed my email address in mm.markidis at autistici.org . If it is ok for
you, please write me to this new email address.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20180318/f81ea6cd/attachment-0001.html>
More information about the Pd-list
mailing list