Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re^4: perllVm: A Linux test of how Perl and LLVM would work together.

by flexvault (Parson)
on Sep 08, 2012 at 20:12 UTC ( #992525=note: print w/ replies, xml ) Need Help??


in reply to Re^3: perllVm: A Linux test of how Perl and LLVM would work together.
in thread perllVm: A Linux test of how Perl and LLVM would work together.

chromatic,

The current documentation for LLVM has an example of using JIT with an existing 'C' program, without a custom front-end. I couldn't get it to work using the sample, so maybe it's not in version 3.1 - 3.2. And maybe it's a mis-print!

I joined the LLVMdev list and asked that question.

If and when I get an answer, I'll post either 'success' or 'failure' or whatever, but 15% improvement is nice. I'm not endorsing anything, since this is more of a learning exercise for me.

IBM 'xlc' is way faster on p-series machines than 'GCC', but I gave up long ago trying to get 'C' code that was designed and tested with 'GCC' to get compiled with 'xlc'! If it's my code, then I'll go with 'xlc'.

To generate a Perl 5.16.0 took half the time with 'clang' as it was to generate it with 'GCC'. And 100% of the Perl test-cases worked.

For that, I'm impressed.

Thank you

"Well done is better than well said." - Benjamin Franklin


Comment on Re^4: perllVm: A Linux test of how Perl and LLVM would work together.
Re^5: perllVm: A Linux test of how Perl and LLVM would work together.
by chip (Curate) on Sep 08, 2012 at 21:05 UTC
    Clang brings meaningful competition to free compilers and vastly improved diagnostics. Double yay. But chromatic's right. JITting Perl is a big big big job. If you'd done it, we'd be having this conversation many months later and you'd have been asking p5p a hard question every day.

        -- Chip Salzenberg, Free-Floating Agent of Chaos

Re^5: perllVm: A Linux test of how Perl and LLVM would work together.
by chromatic (Archbishop) on Sep 08, 2012 at 21:32 UTC
    The current documentation for LLVM has an example of using JIT with an existing 'C' program, without a custom front-end.

    The Ackermann function, written in Perl 5, isn't a C program.

      The Ackermann function, written in Perl 5, isn't a C program.

      No, but the perl that runs ack.pl is a c program.

      If you compile the perl sources to bitcode and run them with lli, then it can jit the perl runtime whilst it is running Ack.pl.

      That wasn't what flexvault was doing; and I'm not sure what performance would result; but when you're first playing with this stuff it is easy to get confused about what is happening during the different phases; and/or sucked in by what you read.

      Whilst lli is slow compared to native-compiled C; the relative effects of it using JIT on the bitcoded C, do give some indication of the possibilities of gains that are possible when running the native-compiled C -- iff you can get the optimiser to see all the relevant parts of the C-source concurrently.

      Easier said than done given perl's architecture; but that could change.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

      RIP Neil Armstrong

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://992525]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (8)
As of 2014-07-13 19:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (251 votes), past polls