Search
Thursday, 12th of April 2018, 23:50:44 UTC
1:30:07
drmeister
I took a look at the llvm-ir for arithmetic that Cando generates to optimize molecular geometries using Mathematica.
1:30:09
drmeister
https://www.irccloud.com/pastebin/Mpd710az/
1:31:00
drmeister
Very dense sequences of fmul, fadd, fsub with an occasional fdiv
1:31:19
Bike
i, uh. do not know what's going on there
1:32:07
Bike
really need to multiply by zero
1:33:08
drmeister
It's this compiled...
1:33:10
drmeister
https://github.com/drmeister/cando/blob/dev/include/cando/energy-functions/_NONBOND_POSITIONS_termCode.cc#L1
1:34:00
drmeister
https://github.com/drmeister/cando/blob/master/include/cando/energy-functions/_NONBONDRB_termCode.cc
1:34:13
drmeister
The first paste wasn't pushed yet.
1:34:24
Bike
oh, so it's just translating the code
1:35:07
drmeister
Yeah - I have been meaning for a long time to see what llvm did with it. Whether the temporary variables were put in alloca's or something - but they aren't.
1:36:47
drmeister
I have been thinking about taking this Mathematica program and have it generate S-expressions so that we can load it into Common Lisp and then generate llvm-ir for double precision or single precision.
1:36:55
drmeister
Or to generate GPU kernels.
1:37:01
drmeister
Better to generate GPU kernels.
1:51:41
drmeister
The energy evaluator is slow however.
1:51:44
drmeister
(let ((*trace-output* *standard-output*)) (time (loop for x below 100000 do (chem:evaluate-energy *energy* *pos*))))
1:51:55
drmeister
100,000 evaluations take 200 seconds
1:52:13
drmeister
https://www.irccloud.com/pastebin/RwUQIUI3/
1:53:22
drmeister
It's consing - I'm not sure what though - this is just a loop evaluating this math code.
1:54:30
drmeister
It returns a value - 24 bytes per step
1:55:15
drmeister
The flame graph shows it's spending all of its time in the energy evaluator.
1:55:30
drmeister
https://usercontent.irccloud-cdn.com/file/bIwyZAho/out-18905.svg
1:56:26
Bike
2.4 MB with no GC? well, i guess
1:58:07
drmeister
I need more detailed profiling. It seems slow by about 1000x
1:58:33
drmeister
I must have a stupid bug.
1:58:39
Bike
function self time.............
1:59:16
drmeister
https://github.com/drmeister/cando/blob/dev/src/chem/energyRigidBodyNonbond.cc#L161
2:00:59
drmeister
The stack isn't too deep - I'll try instruments.
2:01:11
drmeister
Did you get AWS to work for you?
2:03:41
Bike
not past logging in. i reproduced the bug i was working on without it.
2:05:34
drmeister
Oh my - profiling with Instruments is useful when you aren't profiling a compiler.
2:06:41
drmeister
https://i.imgur.com/cYbTrmM.png
2:09:35
drmeister
The ones on the right? I think they are how many times the IP was on that instruction when the backtrace was taken.
2:10:08
Bike
that's what i thought, but i don't think those instructions are conditional
2:11:05
drmeister
movapd can be a move to memory
2:11:41
drmeister
I'm a complete neophyte when it comes to writing optimized numerical code. I'm not sure if I'm looking at a horror show or not.
2:11:45
Bike
yeah, but i mean, if i'm reading it right there's a mulsd with 2x followed by a mulsd with 1715x.
2:13:53
drmeister
Yeah - I don't understand that one.
2:14:37
drmeister
Memory accesses should be slow and sqrt should be slow. There are some surprises.
2:15:45
drmeister
This is an Nx(N-1) loop
2:22:04
drmeister
It's 6784 iterations of this loop containing all this math
2:22:20
drmeister
According to TIME that takes 0.002 seconds.
2:23:41
drmeister
290ns per pass through the inner loop
2:26:56
drmeister
I'm either doing something really wrong or computers are pathetic.
2:27:23
drmeister
I'm clearly not slow by a factor of 1000x
2:28:42
drmeister
Because 0.3 ns per pass is ridiculous
2:29:16
Bike
2 ms, 290 ns, or 0.3 ns
2:29:21
Bike
way too many orders of magnitude
2:30:00
drmeister
2 ms for 6784 iterations of the inner loop.
2:30:59
drmeister
I'll explain tomorrow - I have to write a midterm.
3:11:23
beach
Good morning everyone!
9:20:07
frgo
Is dev broken currently? I pulled and now I get a "Symbol "GENERATE-ONE-SIF" not found in the CSCRAPE package." error during scraping ...
11:27:42
drmeister
I'm getting a different error - grrrr
11:34:42
drmeister
::notify attila_lendvai There appear to be problems with the build. I'm getting an error on this line: https://github.com/clasp-developers/clasp/blob/dev/wscript#L1110
11:34:42
Colleen
drmeister: Got it. I'll let attila_lendvai know as soon as possible.
11:41:07
drmeister
::notify attila_lendvai Commit abadd7f6e broke the build.
11:41:07
Colleen
drmeister: Got it. I'll let attila_lendvai know as soon as possible.
Friday, 13th of April 2018, 11:50:44 UTC