jemc changed the topic of #ponylang to: Welcome! Please check out our Code of Conduct => https://github.com/ponylang/ponyc/blob/master/CODE_OF_CONDUCT.md | Public IRC logs are available => http://irclog.whitequark.org/ponylang
amclain has quit [Quit: Leaving]
aturley has joined #ponylang
aturley has quit [Ping timeout: 246 seconds]
aturley has joined #ponylang
aturley has quit [Ping timeout: 250 seconds]
c355e3b has quit [Quit: Connection closed for inactivity]
akant has quit [Read error: Connection reset by peer]
akant has joined #ponylang
copy` has quit [Quit: Connection closed for inactivity]
aturley has joined #ponylang
aturley has quit [Ping timeout: 244 seconds]
jemc has quit [Ping timeout: 276 seconds]
unbalancedparen has quit [Quit: WeeChat 1.5]
SirWillem has joined #ponylang
felixonmars has quit [Remote host closed the connection]
felixonmars has joined #ponylang
aturley has joined #ponylang
SirWillem has quit [Ping timeout: 252 seconds]
aturley has quit [Ping timeout: 260 seconds]
jemc has joined #ponylang
aturley has joined #ponylang
aturley has quit [Ping timeout: 276 seconds]
trapped has joined #ponylang
trapped has quit [Read error: Connection reset by peer]
trapped has joined #ponylang
kushalp has quit [Ping timeout: 276 seconds]
kushalp has joined #ponylang
shepheb has quit [Ping timeout: 260 seconds]
shepheb has joined #ponylang
Scramblejams has quit [Ping timeout: 260 seconds]
Scramblejams has joined #ponylang
jemc has quit [Ping timeout: 260 seconds]
aturley has joined #ponylang
aturley has quit [Ping timeout: 260 seconds]
trapped has quit [Read error: Connection reset by peer]
srenatus has joined #ponylang
tankfeeder has joined #ponylang
tankfeeder has left #ponylang [#ponylang]
SirWillem has joined #ponylang
SirWillem has quit [Ping timeout: 276 seconds]
aturley has joined #ponylang
aturley has quit [Ping timeout: 244 seconds]
<Candle_> The '--docs' option generates a pile of markdown in a structured directory layout. What tool is used to turn that into html?
Candle_ is now known as Candle
<jonas-l> Candle, you can use mkdocs
<jonas-l> there's online version as well: http://www.ponylang.org/ponyc/
<Candle> jonas-l: I was trying to get an off-line version - given that the internet isn't always available (shock!)
tm-exa has joined #ponylang
c355e3b has joined #ponylang
<jonas-l> Candle, there's a gh-pages: https://github.com/ponylang/ponyc/tree/gh-pages
<jonas-l> this is the version served by ponylang.org/ponyc
<jonas-l> you can download it as a zip file
<Candle> That's useful, thanks.
<jonas-l> np
aturley has joined #ponylang
aturley has quit [Ping timeout: 260 seconds]
Applejack_ has joined #ponylang
<Applejack_> doublec: jemc: going through what you wrote about right now, will tell you what I find
<Applejack_> jemc: no, I have not set the debug on
SirWillem has joined #ponylang
lispmeister has joined #ponylang
SirWillem has quit [Ping timeout: 250 seconds]
<doublec> Applejack_: I'm curious what it is
<Applejack_> doublec: still 1.9s vs 8.8s !
<Applejack_> I used your code directly
<Applejack_> then typed "ponyc"
<Applejack_> then time ./speed, since my code in a "speed" directory
tm-exa has quit [Quit: Computer has gone to sleep]
<doublec> Applejack_: weird
<doublec> Applejack_: What's the specs of the machine you're running on?
<doublec> Applejack_: Mines a thinkpad w540
<Applejack_> Mac i7 2GHz
<Applejack_> Air
<doublec> Applejack_: what llvm version?
<Applejack_> How can I check that?
<doublec> Applejack_: llvm-config --version
<Applejack_> 33.3
<Applejack_> 3.3
<doublec> Mines 3.6.0
<Applejack_> Ok, will update
Praetonus has joined #ponylang
<Applejack_> apparently I have 3.6.2 installed too with homebrew except that it's not the one llvm-config sees
<doublec> I wonder which one pony is using
aturley has joined #ponylang
<Applejack_> doublec: Apperently Pony can only be built with llvm > 3.6.2 on Mac, and that's what I did since I used the git repo
<Applejack_> But then ponyc uses again llvm to build programs but I haven't yet figured out which llvm it uses then
aturley has quit [Ping timeout: 260 seconds]
<Praetonus> According to the Makefile, it searches for specific versions from 3.8 to 3.6 and falls back to the generic llvm-config if no llvm-config-3.x exists
<Applejack_> Praetonus: Ok, I've updated to llvm 3.8 with homebrew and llvm-config-3.8 is there and on my path, so will recompile pony
<Applejack_> Praetonus: doublec: same results, after recompiling ponyc but how can I check what llvm ponyc uses to compile my programs?
<sylvanc> applejack: you get 8.8 seconds for the pony gsl gist you posted previously?
<sylvanc> i get 1.27 seconds for that gist
<Applejack_> I installed llvm using the instructions on ponyc github readme
<Applejack_> sylvanc: yes
<sylvanc> can you post a gist of the C version of your code?
<Applejack_> also with what doublec posted
<Applejack_> it's what doublec posted
<sylvanc> thanks
<Applejack_> doublec added the blas thing, didn't change anything for me
<Applejack_> we've been checking the llvm version used, since doublec get different results with pony on par with C
<Applejack_> but I can't figure out what llvm version ponyc uses to compile my program because I have different llvm versions on my mac and don't know how things are sorted out
<Applejack_> I've installed llvm-3.8 with homebrew following instructions on ponyc github, and git pulled and recompiled ponyc, then used ponyc to compile my Pony program but same
<sylvanc> yeah, i get consistently faster performance from the pony version
<sylvanc> C: 1.38 seconds, Pony: 1.27 seconds
<Applejack_> !
<sylvanc> that's using the most aggressive C optimisations
<Applejack_> Can I get into that paradise too?
<Applejack_> Do you think it's because ponyc does not use the right llvm?
<sylvanc> not sure
<sylvanc> the pony version uses a bit more memory (about 1 mb vs about 750 kb)
<Applejack_> If I can sort this out then I will bench again my little markov chain which was so slow that it prompted me to write that little code just to see what was wrong
<sylvanc> (that's all memory used to start up a process of course)
<sylvanc> (the actual code uses nearly no memory)
<Applejack_> And I will then work on adding stuff to my Gsl Pony package
<sylvanc> nice :)
<sylvanc> with a debug version of the pony compiler (and so a debug version of libponyrt) i still get 1.30 seconds in pony
<Applejack_> I'm drooling, what can I do to sort this out?
<sylvanc> if i link to the dynamic version of gsl instead of the static version, i still get 1.32 seconds in pony
<sylvanc> using the static version of the library with C is no improvement
<Applejack_> Ok, but any idea on what I can do to check what's wrong with my ponyc ?
_andre has joined #ponylang
aturley has joined #ponylang
<Applejack_> sylvanc: so do you have any suggestion was to what I can do to solve that discrepancy ? What should I check on my system ?
aturley has quit [Ping timeout: 260 seconds]
<SeanTAllen> i get 2.1 seconds with debug compiler
<SeanTAllen> Applejack_: can you run otool -L on your binary and paste the result?
<Applejack_> SeanTAllen: speed: /usr/local/lib/libgsl.0.dylib (compatibility version 18.0.0, current version 18.0.0) /usr/local/lib/libgslcblas.0.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
<SeanTAllen> Applejack_: which versions of llvm-config-* are in your PATH?
<Applejack_> llvm-config and llvm-config-3.8, the first one giving version 3.6.0svn
<Applejack_> I'm on a mac
<SeanTAllen> so in theory, you should be using llvm 3.8
<Applejack_> can ponyc tell me what it sees?
copy` has joined #ponylang
<SeanTAllen> run make config=debug verbose=true install
<SeanTAllen> towards the final linking stage you will see something like -L/usr/local/Cellar/llvm38/3.8.0/lib/llvm-3.8/lib
<Applejack_> does "install" mean install system-wide?
<SeanTAllen> yes
<SeanTAllen> you can leave install off if you want
<Applejack_> I used "make config=release"
<Applejack_> ok, will do now
<Applejack_> does "make clean" suffice beforehand to remove my previous make?
<SeanTAllen> you can you config=release
<SeanTAllen> no
<SeanTAllen> make clean works in relation to either a debug or release build
<SeanTAllen> to be safe
<SeanTAllen> make clean config=release
<SeanTAllen> or
<SeanTAllen> make clean config=debug
<SeanTAllen> to get rid of the specific one
<SeanTAllen> it defaults to one of the two, i cant remember which
<Applejack_> Ok, I see stuff like that: L/usr/local/Cellar/llvm38/3.8.0/lib/llvm-3.8/lib
<Applejack_> So ponyc was built with 3.8 apparently
<SeanTAllen> you can also see all the LLVM options used at link time
<SeanTAllen> I'm using the debug version of the rt/compiler here are my options if you want to compare: https://gist.github.com/SeanTAllen/70f98fa510b7ad57a60d098c30cc9c1c
tm-exa has joined #ponylang
tm-exa has quit [Quit: Computer has gone to sleep]
unbalancedparen has joined #ponylang
TwoNotes has joined #ponylang
<SeanTAllen> what version of c++ are you using?
<SeanTAllen> `c++ --version`
aturley has joined #ponylang
<SeanTAllen> also what shell are you using? there's a lot -D defines that are missing from yours
<SeanTAllen> which gsl version are you using?
aturley has quit [Ping timeout: 244 seconds]
<TwoNotes> Segfault in ponyint_actor_run on ARM. How to debug? https://gist.github.com/pdtwonotes/fbbcbd685a92319b889e956e79f272c5
<SeanTAllen> do you have a minimal case TwoNotes ?
<TwoNotes> Unfortunately no. It just happened and I do not know how to cut down my program to narrow in on it
<SeanTAllen> is it repeatable?
<TwoNotes> I think so. But this is a very complex program and I don't know where to narrow in on it.
<TwoNotes> Though I do know which source file I had been messing with last
<TwoNotes> It does not seem to happen on X86_64. At least I have not caught it failing yet
<TwoNotes> I was about to look at the src for actor_run
<TwoNotes> I may have to rebuild the RT with debug
<TwoNotes> The fact that the BT command reports a loop in the stack is a clue. Something is getting stomped
<SeanTAllen> debug version with more info would def be of assistance
<TwoNotes> Maybe refresh to latest version too
<Applejack_> SeanTAllen: Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn) Target: x86_64-apple-darwin13.4.0 Thread model: posix
<Applejack_> SeanTAllen: bash, and gsl 1.16
<SeanTAllen> i have a later c++ version. doubt that would be such a dramatic difference but it might
aturley has joined #ponylang
aturley has quit [Ping timeout: 276 seconds]
aturley has joined #ponylang
tm-exa has joined #ponylang
<TwoNotes> Oops, compilation error in gentype.c on ARM, maybe because "all warnings being treated as errors"
tm-exa has quit [Quit: Computer has gone to sleep]
TwoNotes has quit [Quit: Leaving.]
Applejack_ has quit [Quit: Page closed]
jemc has joined #ponylang
Applejack_ has joined #ponylang
<jemc> TwoNotes: if you use a debug build of ponyc, you might be able to get a more informed backtrace (like a line number so we can infer what pointer has a bad address)
<jemc> just looked at ponyint_actor_run hoping it was a trivial function and it would be obvious which pointer deref was causing the SEGV, but it's not trivial and there are many possible culprits
trapped has joined #ponylang
Matthias247 has joined #ponylang
amclain has joined #ponylang
Applejack_ has quit [Ping timeout: 250 seconds]
lispmeister has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
aturley has quit [Ping timeout: 252 seconds]
Matthias247 has quit [Read error: Connection reset by peer]
Praetonus has quit [Quit: Leaving]
aturley has joined #ponylang
aturley has quit [Ping timeout: 276 seconds]
aturley has joined #ponylang
akant has quit [Ping timeout: 260 seconds]
Applejack_ has joined #ponylang
lispmeister has joined #ponylang
pulpfiction has joined #ponylang
TwoNotes has joined #ponylang
<TwoNotes> Issue #852, compilation of ponyc fails on ARM. This used to work, so something changed recently
lispmeister has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
Matthias247 has joined #ponylang
SirWillem has joined #ponylang
<Applejack_> SeanTAllen: I'm updating my mac, and in the meantime I've tried the whole process on a Ubuntu 14.04 i7 with llvm-3.8 and all, and followed the github instructions for installing on Ubuntu, and I get 3.5s for C vs 3.9s for Pony, which is a remarkable improvement, yet not as good as what sylvanc observed on his box.
unbalancedparen has quit [Quit: WeeChat 1.5]
<Applejack_> I would have been quite happy had not sylvanc given his figures... there remains a lingering disappointment. I will try the larger simulation I started with and compare the results, but I would really like to start with on par performance, which apparently is possible
SirWillem has quit [Ping timeout: 260 seconds]
<jemc> 3.5s vs 3.9s does sound a lot like on-par performance to me - especially given sylvanc's results, it seems like it's enough similarity to move away from is-this-language-fast-enough microbenchmarks and try profiling a real application
_andre has quit [Quit: leaving]
_whitelogger has joined #ponylang
<Applejack_> jemc: Yes, I agree, and I'm moving on, but by sylvanc results I meant I would also have liked to be just a tiny bit faster than C as he was, I just would like to understand why I'm now consistently 12% slower. But yeah, I move on and will come back to that discrepancy when I have more experience on more substantial code.
akant has joined #ponylang
pulpfiction has quit [Read error: Connection reset by peer]
<jemc> I think the difference seen by sylvanc could just as easily have been something *worse* about his compiled C than something *better* about the compiled Pony. For such a simple example as this (a for loop with identical 3rd party function calls) the LLVM IR generated by ponyc vs clang for those loops should be "theoretically" identical with no additional overhead on either side, so if you put this case
<jemc> under a microscope in a microbenchmark, you're likely to just be seeing the magnification of minutia in the platform and compiler rather than answering anything meaningful to the effect of "is language X faster than language Y?" - for example, I wouldn't be surprised if you saw a similar magnitude of difference between compiling the same C snippet in gcc vs clang.
<jemc> often the real question underlying that question is "if I write my program in language X, will it run faster than if I write it in language Y?" - and that question is much more interesting and much more complex, taking into account things like the data structures available in the language and the patterns and idioms that influence the code you write as you go
<jemc> the truth is that often writing your program in a different language means that you end up writing a very different program, and that's where you'll see the biggest contributions to performance differences when comparing two languages that both compile down to a similar LLVM IR without a lot of indirection
trapped has quit [Read error: Connection reset by peer]
srenatus has quit [Quit: Connection closed for inactivity]
<TwoNotes> The difference between compiled and interpreted languages is probably much greater than between various compiled ones.
<TwoNotes> Even Erlang running with HIPE is a lot faster than the BEAM flavor, but neither one is doing inline hardware floating ops
<TwoNotes> JIT ocmpiled Java can be pretty fast, but the GC-stalls are killers
<TwoNotes> There is also the old saying, "I can make the code be arbitrarily fast if it does not have to be correct." Pony has a leg up there, I think
<Applejack_> jemc: I agree that it should be the same, and sylvanc does reach sameness, and I'm quite happy with the sameness i now observe on Ubuntu, but want that sameness too on my Mac. It's like calibrating, and then, yes, using Pony will make me travel a different path than with another language, but at least I know the basic should-be-similar-benchmarks are within 10% and not 500%. I will continue with Gsl/Pony and proceed to writing th
<Applejack_> It's much easier for newcomers to spend the time necessary learning a new language when the snake oil benchmarks are on par with the champions. It's psychological, but I feel much better admitting it's snake oil when I'm on par... And a new language needs a spotless FFI (to C for Pony), especially when speed is it's second great goal.
Applejack_ has quit [Ping timeout: 250 seconds]