IRC log for #brlcad on 20110421

02:28.10 brlcad hello evander
02:30.43 ``Erik so the merge is complete?
02:42.01 evander I'm having trouble getting brl-cad to compile, it's just one line causing trouble, anyone willing to help
02:42.05 evander ?
02:49.42 brlcad ``Erik: doing a final pass review now
02:50.12 brlcad haven't done a compilation check yet, both old and new builds may be busted but the changes are reviewed and merged
02:50.17 brlcad evander: what's the failure?
02:51.39 evander make says that 'abi' and 'aci' 'may be uninitialized in this function'
02:54.42 evander this is for the proc_box function in src/librt/patch/patch-g.c line 1936: 'vect_t ab, ac, ad, abi, aci, adi'
02:55.37 evander sorry, src/conv/patch/patch-g.c
03:10.12 ``Erik evander: there's a flag to disable strict flags when you run configure, try that?
03:14.10 evander I'll try
03:21.38 CIA-105 BRL-CAD: 03brlcad * r44466 10/brlcad/trunk/src/conv/patch/patch-g.c: quell strict compilation warning reported by evander via irc. compiler wasn't smart enough to figure out that use prior to init isn't possible (valid is false).
03:33.41 CIA-105 BRL-CAD: 03brlcad * r44467 10/brlcad/trunk/misc/archlinux/brlcad.install: remove the rcs id var to minimize branch diff. add /bin/sh header for source scanners since it looks like proper syntax.
03:37.54 CIA-105 BRL-CAD: 03brlcad * r44468 10/brlcad/trunk/src/other/togl/CMake/CheckFunctions.cmake: this just very well may be the last sync needed to merge cmake branch to trunk.
03:40.20 brlcad verified, the diff looks clean
03:40.33 brlcad now to check/fix the build :)
03:41.09 brlcad fair game for anyone to hack on now
03:51.57 ``Erik I'll do my usual spread tomorrow and either fix or report all the failures O.o I doubt there'll be many if the merge is solid, been fixing/reporting for the cmake branch for a while :)
04:17.17 brlcad should be possible to have both working without too much effort at least while install testing proceeds -- that was just a pure source merge review so the branch can be closed out
04:19.52 CIA-105 BRL-CAD: 03brlcad * r44469 10/brlcad/trunk/src/conv/patch/patch-g.c: oops, double semi
04:31.31 brlcad hmm.. the lights regression is failing
04:31.46 brlcad pretty sure it worked for release, but not 100%
04:34.18 CIA-105 BRL-CAD: 03brlcad * r44470 10/brlcad/trunk/TODO: light regression is failing, need to investigate and fix. don't know when it broke.
04:39.04 CIA-105 BRL-CAD: 03brlcad * r44471 10/brlcad/trunk/TODO:
04:39.04 CIA-105 BRL-CAD: aha, found the cause. the lights test calls 'put' and sets attributes directly
04:39.05 CIA-105 BRL-CAD: including several old attribute names such as rgb and .. oshader. this makes
04:51.34 CIA-105 BRL-CAD: 03brlcad * r44472 10/brlcad/trunk/src/librt/CMakeLists.txt: deterministic behavior still applies, ignore individual 'extra_dist' files.
05:55.06 *** join/#brlcad Stattrav (~Stattrav@unaffiliated/stattrav)
08:02.29 *** join/#brlcad crazy_imp (~mj@a89-182-193-94.net-htp.de)
08:07.31 *** join/#brlcad crazy_im1 (~mj@a89-182-199-125.net-htp.de)
08:45.35 *** join/#brlcad mafm (~mafm@213.Red-83-40-126.dynamicIP.rima-tde.net)
10:29.08 *** join/#brlcad d_rossberg (~rossberg@BZ.BZFLAG.BZ)
11:28.43 *** join/#brlcad Yoshi47 (~jan@64.235.102.210)
11:39.39 *** join/#brlcad merzo (~merzo@193.254.217.44)
13:14.36 brlcad interesting.. old build passed distcheck :)
13:26.00 starseeker blinks - but it shouldn't, should it?
13:29.06 ``Erik should the old stuff get all the CMakeLists.txt and misc/CMake/ stuff added as EXTRA_DIST ?
13:29.42 brlcad that's why it passing distcheck was interesting :)
13:29.56 brlcad but otherwise, yeah
13:30.18 starseeker winces - that's a lot of work unless we're going to maintain both for a while
13:30.21 ``Erik distcheck won't complain if unknown "turds" don't get put in the tarball
13:30.32 brlcad only minimal attention I'd think -- wont' live for long
13:30.55 brlcad ``Erik: except I have logic in there that checks if anything is missing
13:31.09 brlcad it compares the svn list with the dist
13:31.34 starseeker took some doing to duplicate that behavior with CMake
13:31.36 brlcad starseeker: o.O not really .. 10 min tops
13:32.10 starseeker brlcad: updating all the Makefile.am extradists for all the directories where something was added?
13:32.11 brlcad tedious, sure, but not a lot of actual time
13:32.28 starseeker what do we gain?
13:32.52 brlcad if we have to push a source release with it
13:33.11 brlcad it's not your 10min, no worries :)
13:33.18 starseeker true :-)
13:33.41 brlcad I didn't plan on adding them unless distcheck failed
13:33.53 brlcad and it didn't fail, so .. interesting :)
13:34.03 starseeker cmake build is currently failing due to the Itcl_Init issue, bty
13:42.49 brlcad hm, mine is actually failing in librt here
13:42.55 brlcad strictness fail on bot.c
13:43.02 brlcad signage warnings
13:48.03 starseeker er, yeah - itcl is with strict off
13:48.21 starseeker (lots of formatting blather too)
13:56.13 brlcad so that's going to require a little digging -- Itcl_init definitely shouldn't be failing (nor should package require)
13:56.18 brlcad i'll hop of the debugger later today
13:56.23 brlcad s/of/on/
14:00.10 ``Erik the signed issues came from a commit indianlarry did, I'll ask him about it when he gets back in the office
14:01.55 brlcad autotools strict is actually off in librt, was turned off during release preparations due to a problem in the nmg export code
14:02.04 brlcad so even if bot succeeds, nmg is going to issue a warning
14:02.41 brlcad we need to either exempt librt like autotools does, or fix the warnings (ideal)
14:05.23 ``Erik yeah, I'd like to ask him sooner than later while it's still semi-fresh, mebbe leave a comment in the src if it bears holding off reverting
14:06.08 ``Erik log says something about a bug report, d'no which one, so'z *shrug*
14:36.42 starseeker brlcad: I know why Itcl_init isn't working - it's because I didn't include all the directories needed for the itcl.h/itk.h headers
14:37.29 starseeker was trying to use package require to avoid that whole "using private headers" mess
15:33.31 *** join/#brlcad Stattrav (~Stattrav@117.202.20.210)
15:33.31 *** join/#brlcad Stattrav (~Stattrav@unaffiliated/stattrav)
16:57.14 ``Erik mmmm, pröst *pats belleh*
16:58.04 ``Erik brlcad: those g_bot_include signed issues are direct fallout from size_t, the 'index' and nhits stuff use -1 as a special value in some cases, a mixed of == and <0
16:59.58 starseeker brlcad: there are a couple of cases where I call out whole directories to ignore in the CMakeLists.txt files - in particular, the Tcl/Tk man pages are generated by scripts. I suppose would could actually list all those out and update that list every time Tcl/Tk changes something, but that's quite a pain as opposed to just snarfing the list of generated files after generating them
17:06.19 CIA-105 BRL-CAD: 03starseeker * r44473 10/brlcad/trunk/doc/docbook/system/mann/en/CMakeLists.txt: Remove early experiment with file-checking code
17:21.18 CIA-105 BRL-CAD: 03starseeker * r44474 10/brlcad/trunk/src/ (bwish/CMakeLists.txt mged/CMakeLists.txt): Until we get it sorted out, add in the logic needed for btclsh/bwish and mged to find the itcl.h and itk.h headers.
17:21.46 starseeker ok, that gets me going with a non-strict build on Mac
17:24.28 starseeker reflects that eventually we'll probably want to update the svn ignore properties in trunk
17:24.37 CIA-105 BRL-CAD: 03erikgreenwald * r44475 10/brlcad/trunk/src/librt/primitives/bot/g_bot_include.c: use temporary signed variables to quell the signed/unsigned warning. Add a TODO: requesting review down the road.
17:34.00 CIA-105 BRL-CAD: 03erikgreenwald * r44476 10/brlcad/trunk/src/librt/primitives/nmg/nmg.c: bu_glong -> ntohl (only tested on v5)
17:35.35 ``Erik librt should be safe for strict again
17:42.51 CIA-105 BRL-CAD: 03starseeker * r44477 10/brlcad/trunk/ (misc/CMake/BRLCAD_Util.cmake src/librt/CMakeLists.txt): Add the ability to specify a NOSTRICT compile when adding a library.
18:11.53 *** join/#brlcad merzo (~merzo@222-14-94-178.pool.ukrtel.net)
18:14.05 brlcad ``Erik: yeah, I remember that patch -- most of the -1 should have been properly cast through size_t, so if anything was missed, it might have been a <0 check that needed to be changed to == (size_t)-1
18:14.28 brlcad warrants getting the test case that provoked the bug
18:16.11 brlcad starseeker: that sounds fine for src/other dirs -- I think the issue is more with our own directories
18:16.41 starseeker brlcad: k. For ours it'll probably be a few cases like the xxx dir
18:17.50 brlcad a minor referential integrity cost so we can say we're fully managed (with lists of all intentional files, whether source code or not)
18:18.09 brlcad not a major issue in the least, just completeness
18:18.22 brlcad really impressed how cleanly the merge went
18:19.49 brlcad ``Erik: unless I typo'd .. the "obvious" conversion to ntohl() resulted in a hard crashing raytracing bug
18:20.13 starseeker 'course, I doubt the windows build works right now
18:20.32 starseeker but it shouldn't be far off
18:20.39 brlcad sure, some wrinkles to iron out, but in all .. looking great
18:20.44 starseeker is impressed you managed to save all the history
18:20.46 brlcad old build works, new build works
18:21.29 starseeker (all my early CMake suckage preserved for posterity...)
18:21.30 brlcad now a confirmation that release tarballs produced are identical and same with binary installs, and the old can go bye bye soon
18:21.47 starseeker not quite yet - install docs will need more work
18:22.02 brlcad minor, that's an afternoon at best
18:22.29 starseeker and possibly some expansion of the options in the fake configure script - also not a huge deal, unless we want to automate its generation
18:22.54 brlcad it'll take more time to write up an article on the conversion overview and impact
18:23.50 starseeker for the source files, it's make package_source - make package for the binaries, IIRC
18:24.21 brlcad no worries, I'll assume it's all documented in INSTALL.cmake
18:24.25 brlcad otherwise, I'll chase you down :)
18:24.32 starseeker quickly checks...
18:24.34 starseeker erm...
18:24.53 brlcad er, perhaps HACKING.cmake
18:25.23 starseeker which doesn't exist yet
18:25.25 starseeker gets busy
18:29.39 starseeker eventually we'll probably want to tie the new deb/rpm settings into the CPack stuff
18:37.41 *** join/#brlcad Stattrav (~Stattrav@117.202.20.210)
18:37.41 *** join/#brlcad Stattrav (~Stattrav@unaffiliated/stattrav)
18:46.11 ``Erik brlcad: I raytraced a big nmg heavy model successfully (took 2 regex passes and hand reviewing the changes to verify, there was a cfl grade difference in some cases)
18:46.38 ``Erik for bots, the test case was dark side
18:47.36 brlcad ``Erik: okay cool
18:47.50 brlcad i'm not above having entered a typo or fat-fingered some expression
18:48.14 brlcad probably diff what I did with your patch to see where this lamb went astray
18:59.07 CIA-105 BRL-CAD: 03starseeker * r44478 10/brlcad/trunk/src/other/CMakeLists.txt: Add a few dirs to the ignore list
19:08.13 kanzure did jdoliner ever finish his implementation of boole? http://brlcad.org/wiki/User:Jdoliner
19:10.27 kanzure ah.. brlcad/trunk/src/proc-db/surfaceintersect.cpp
19:12.15 kanzure yeah i'm not sure if he committed all of his code or not
19:13.07 kanzure hmm the latest was 2009-08-13
19:13.14 kanzure ok. that sounds about right
19:14.25 brlcad kanzure: he didn't implement or integrate boole itself, but he was trying to implement what boole does in our system
19:15.18 brlcad he started building up the individual pieces needed to get surface-surface intersection calculations going, and got something going, but it wasn't a complete effort
19:15.48 kanzure looks like he did good work sticking with the opennurbs primitives
19:15.54 brlcad src/proc-db/surfaceintersect.cpp is the latest state of the code
19:15.58 brlcad yeah, pretty good
19:16.46 kanzure on the wiki he mentions SurfaceSurfaceIntersect but all i see is BrepBrepIntersect; i figure it's the one?
19:16.59 kanzure oh "SurfaceSurfaceIntersect has been renamed to FaceFaceIntersect same" ok
19:17.21 brlcad a brep is one or more surfaces
19:17.54 kanzure i forget how opennurbs handles multiple faces on an object
19:18.13 kanzure i know that it's accessed as an array (like my_nurb.m_F[x] for the xth face)
19:18.21 kanzure but usually there's some information about adjacency of faces .. er, somewhere
19:18.42 brlcad see src/proc-db/brep*.cpp
19:18.51 kanzure since you can call myobject.get_edges() where each edge separates two faces, etc.
19:18.54 kanzure ok
19:18.55 brlcad several examples
19:19.42 kanzure it's the trimming curve that is the edge around a given face right?
19:20.45 brlcad yes
19:21.40 kanzure why do you say it wasn't a complete effort?
19:21.51 kanzure oh duh, intersection isn't enough to actually perform the set operators
19:22.14 *** join/#brlcad KimK (~Kim__@wlnt-02-246.dsl.netins.net)
19:22.20 brlcad and I don't think his implementation will handle ALL cases of surface surface intersections
19:22.29 brlcad lots of edge cases to consider
19:24.00 CIA-105 BRL-CAD: 03starseeker * r44479 10/brlcad/trunk/doc/README.MacOSX: Document the issue CMake has with parallel builds and OSX open file limits
19:25.00 kanzure yeah and then you have to merge the intersection curves
19:25.07 CIA-105 BRL-CAD: 03starseeker * r44480 10/brlcad/trunk/HACKING.cmake: Add a cmake version of HACKING
19:26.16 kanzure then use the merged brep to partition the original two solids, classify each partitioned component as either inside/outside and based on that classification add it to the object (depending on whether this is a union or difference)
19:28.33 brlcad example, consider two simple triangles. they can intersect as a point (pt), a line (ln), or a face (fc), so you have pt-pt for two coinciding vertices, pt-ln for a vertex on edge, and pt-fc for a vertex in the face; ln-ln for coinciding edges (with three overlap sub-cases), ln-fa (similarly with three sub-cases), and fa-fa for non-tangential planar intersections (with at least three sub-cases)
19:29.15 brlcad that's twelve cases, and I'd be surprised if he ended up with support for more than a few of them
19:30.16 brlcad two random intersecting polygons is going to be a fc-fc intersect producing a ln result
19:31.06 kanzure i don't know what to do in the case of a vertex on a face- presumably that vertex is infintismal anyway so..
19:31.29 brlcad right, so you decide whether to ignore or stitch
19:31.48 brlcad one of them will be wrong :)
19:32.03 brlcad but you don't know which
19:33.24 brlcad you could attempt to say "okay, no points on faces" .. but even regular triangle that share an edge have this property (two pairs of coinciding vertices and a coinciding edge)
19:33.59 kanzure btw the guys who wrote BOOLE released their code in the public domain
19:34.36 kanzure (in c)
19:34.49 brlcad basically, it's needing to preserve a concept of "inside", "outside", ... and "on"
19:35.15 brlcad boole is not PD, unless they changed it recently
19:35.25 brlcad it's NC
19:36.04 brlcad http://gamma.cs.unc.edu/CSG/BOOLE-DOCS/copyright
19:36.32 kanzure blah
19:36.55 kanzure sorry for the false alarm
19:37.13 brlcad I know the guys that worked on boole (and later esolid)
19:37.25 brlcad that was collaborative research back in the day
19:37.29 kanzure in one of their papers they claim it is public domain, but i see the license clearly claims differently
19:37.41 brlcad they actually gave us permission to use their code many years ago via e-mail, but no longer have access to that e-mail without serious archive searching
19:37.57 kanzure yeah the same paper references muuss which made me wonder if brlcad implemented this (which, the answer is no, but the 2009 gsoc student worked on it, neat)
19:38.32 brlcad they were contracted by BRL to work on the problem back in the mid-90's, but unfortunately there was licensing disputes
19:38.40 kanzure lamesauce
19:38.56 brlcad maybe late 80's .. old history now
19:39.27 kanzure i trust boole over, say, opencascade, for their intersection algorithm.. since at least this one is documented
19:39.31 brlcad the goal was primarily nurbs raytracing and I think our current implementation easily beats it hands down
19:39.48 kanzure i'm honestly surprised how there is no simple, well-written, well-documented, open source brep-brep intersection software
19:40.06 kanzure this isn't *that* hard
19:40.32 brlcad a lot of the surface surface intersection calculations were needed to get accurate ray-tracing, so you might be able to repurpose some of the ray-tracing code into a more general surface-surface intersection function
19:40.55 kanzure i was thinking of implementing boole but i see there's a good start here
19:40.58 brlcad it's hard to do robustly :)
19:41.16 kanzure i think robustness can be sacrificed at first for a working system, and then robustness can be designed in for a 2.0
19:41.35 kanzure once we have someone, anyone, who is working on open source code that has successfully implemented any of this :)
19:42.00 brlcad that's just it, it's not really working if it's not robust -- the best you can do is limit yourself to robustness across simple geometry
19:42.08 brlcad like two spheres or two boxes
19:42.22 kanzure do you mean practically robust or the academic version of "robust by proof"? ;)
19:42.27 kanzure er, robust by theorem
19:42.28 brlcad even robustly answering whether that pairing intersect or not .. tricky
19:42.36 brlcad practically robust
19:42.50 brlcad if you want provably, you need different numerics
19:42.57 brlcad CGAL-style
19:43.04 brlcad slow fixed arithmetic
19:43.57 brlcad if you want to pick up the torch working in src/proc-db or elsewhere related to this, lemme know and I'll set you up
19:44.14 kanzure what do you mean set me up?
19:44.47 brlcad with commit access, so you can work on test code in src/proc-db for example
19:45.51 brlcad if you want to do your own thing out of repo, that's cool too, but it is nice to see the commits to see rationale behind development directions
19:45.54 kanzure i don't have anything to commit at the moment but i'll ping you
19:46.02 kanzure that's true..
19:46.26 brlcad whatever works
19:46.45 kanzure so you're ok with incomplete/dysfunctional code commits?
19:47.00 brlcad in src/proc-db yes
19:47.07 brlcad in src/lib* no
19:47.20 brlcad unless it's #ifdef's out of course
19:47.45 brlcad just shouldn't affect production use until it's reasonably well tested
19:48.05 brlcad otherwise, visibility and communication ftw
19:50.35 kanzure okay.
19:50.48 kanzure sure, i'll take some svn commit access goodness
19:52.05 brlcad done
19:52.07 brlcad you've been around here long enough to know how we operate, not exactly a loose canon
19:52.20 brlcad just don't break stuff :)
19:52.28 brlcad read HACKING for the rest
19:52.39 brlcad and/or ask
20:03.15 kanzure okie dokie
20:05.53 *** join/#brlcad mafm (~mafm@48.Red-83-63-197.staticIP.rima-tde.net)
20:14.35 kanzure brlcad: did you add my sourceforge account?
20:22.26 brlcad yep
20:22.26 CIA-105 BRL-CAD: 03erikgreenwald * r44481 10/geomcore/trunk/src/interfaces/cl/gsserver.lisp: use defvar instead of defparameter (to avoid clobbering a live recompile conflict). Use global variable notation instead of constant.
20:22.32 brlcad try a test commit
20:25.06 kanzure i'd rather not muddy up commit history
20:26.04 brlcad heh
20:26.30 brlcad it's a huge history, not really going to be noticed :)
20:26.53 CIA-105 BRL-CAD: 03erikgreenwald * r44482 10/geomcore/trunk/src/libgvm/repo.c: return 0 on success (instead of stack trash since there was no explicit return on success)
20:27.09 brlcad https://sourceforge.net/mailarchive/forum.php?forum_name=brlcad-commits <-- per month commit stats
20:28.21 brlcad wow, we hit a new record in january .. 914, nifty!
20:42.02 ``Erik ah, svn_repos_open doesn't open the file, each operation opens and closes the file described by the repo struct... brutal
20:49.05 bhinesley while (1) {touch . ; svn commit -M "testing"}
20:49.13 bhinesley this month promises to be even better ;)
20:49.43 brlcad heh, nice try
20:50.12 brlcad that wouldn't commit a change, and you'll get invalid option on the -M ;)
20:51.22 ``Erik can't think of a shell that'd eat that
20:51.53 brlcad while `true` ; do echo "==$RANDOM==" >> file ; svn commit -m "+1" file ; cat file | sed 's/==.*==//g' > file ; done
20:52.06 *** join/#brlcad merzo (~merzo@7-32-94-178.pool.ukrtel.net)
20:52.17 bhinesley you guys are too much
20:54.58 *** join/#brlcad mafm (~mafm@48.Red-83-63-197.staticIP.rima-tde.net)
20:54.59 starseeker never give brlcad a shell script challenge
21:00.36 ``Erik it's just another language *shrug* a repl based one, even
21:01.30 kanzure brlcad: now that i look at it, BrepBrepIntersect doesn't actually use its (brep) "out" variable
21:02.08 kanzure err, (ON_Brep) type
21:02.55 brlcad kanzure: yep, I vaguely recall having to mark that as UNUSED during a strictness pass
21:03.02 kanzure ah.
21:03.04 kanzure fooey
21:03.09 brlcad fix it ;)
21:03.15 brlcad or rewrite
21:03.26 kanzure if it wasn't using opennurbs, i'd immediately rewrite it on my own
21:03.43 kanzure but.. since he did at least go to the trouble of making this slightly maintainable..
21:03.55 brlcad opennurbs is actually a pretty nice api to work with
21:04.16 kanzure sure
21:04.22 brlcad most of the annoying aspects have been things that were intentionally removed
21:04.30 kanzure yes
21:04.36 kanzure ON_GL... grr
21:04.48 ``Erik nice, the acknowledgements section in the scsh manual... awesome
21:05.19 brlcad do they thank the flying spagetti monster?
21:05.49 ``Erik http://www.scsh.net/docu/html/man.html
21:07.21 brlcad haha
21:18.06 brlcad hm, sanity check: unsigned char cp; cp + 4 == &cp[4] ?
21:22.11 ``Erik yup
21:23.51 brlcad then the only diff between our conversions is you wrapped the cast in parens
21:24.31 brlcad I'm thinking the bug was actually an unrelated change made to rt_nmg_reindex() in the same commit
21:24.49 brlcad upgraded return type from int to long including two index vars
21:26.40 brlcad the parens shouldn't matter because arrow has higher precedence than the cast, so it's already grouped
21:27.01 brlcad otherwise we match line for line
21:27.08 brlcad gotta be rt_nmg_reindex() .. hrm
21:29.29 brlcad either way, nice fix ``Erik .. librt can be restrictified
21:34.45 *** join/#brlcad bhinesley (~bhinesley@99.104.168.20)
21:42.23 CIA-105 BRL-CAD: 03starseeker * r44483 10/brlcad/trunk/src/librt/CMakeLists.txt: Erik restored the strict building.
22:05.34 starseeker ah, that's why - the default implementation of opennurbs_memory.c is a straight-up malloc/calloc/etc. wrapper
22:11.49 brlcad starseeker: another approach for the itcl/package problem -- take it to the natural limit, shouldn't be calling either from C-land
22:11.51 CIA-105 BRL-CAD: 03brlcad * r44484 10/brlcad/trunk/src/librt/Makefile.am: ditto for now
22:12.08 brlcad make the scripts package require what they need
22:12.15 starseeker true...
22:25.19 starseeker er... this is not good. Probably the best way to set this up would be to use the apr memory pools, since we need variable sizes
22:25.23 starseeker ick
22:25.54 starseeker or custom roll our own
22:32.38 ``Erik variable sizes? that doesn't tend to work well with pools, that's a full allocator
22:34.22 ``Erik yeah, I've gotten in the habit of using parens whenever casting a referenced pieces just to verify it's all correct and obvious
22:34.36 ``Erik piece
22:34.54 starseeker ``Erik: it seems the technical term is "region based memory management"
22:36.23 starseeker that's what the Apache Portable Runtime pools really are
22:36.26 ``Erik if you have a finite set of sizes, you can do sets of pools... a 'buddy' allocator is pretty easy and quick, used to be the norm... system alloc usually uses slabs these days
22:37.04 ``Erik 'region based' might mean slabs, just implemented outside of the kernel to avoid syscalls, maybe? *shrug*
22:37.04 starseeker unfortunately, if we're going to put something behind the opennurbs on* functions (which we want to for improved performance) their API accepts arbitrary sizes
22:37.48 starseeker the only thing that comes readily to mind is a hash table of pointers to pools, hashed by data type size
22:39.09 starseeker basically, assume finite sizes in practice (if not in theory) and create whatever pools are needed - one per requested size
22:39.12 ``Erik that'd be one wasteful way to do it... buddy system slicer on subpage chunks, mebbe with an occasional gc/compactor might be another
22:39.36 starseeker looks up buddy allocator
22:39.47 ``Erik (buddy system basically means a binary tree of memory, pick the best fit, dividing if needed)
22:40.10 ``Erik and here we go, screaming to greenspuns tenth :D
22:40.47 starseeker the quickest and most practical thing to do would be to stick APR behind opennurbs and see what kind of performance we get
22:41.05 starseeker but that would tie our raytracing directly to the APR libraries as a dependency
22:41.54 ``Erik isn't keen on that
22:42.05 starseeker isn't either
22:42.50 ``Erik do we know the typical size range that opennurbs wants?
22:44.02 starseeker not really
22:44.20 ``Erik as an experiment, we (and I mean you) could write a trivial allocator that does a big block alloc, sets a 'usual max' size and subdivides the memory into those sizes, so if it's 256 bytes, just return a 256 byte zone when 40 bytes is requested
22:44.24 ``Erik wasteful, but easy
22:44.28 starseeker my concern is if it's using onmalloc and friends to allocate storage for NURBS, the size range is going to be all over the map
22:46.45 ``Erik could do a 'pass-through' allocator to instrument and record a history of allocs (or see if valgrind, efence, etc can be tortured into doing that) and compare with and without that for a test model?
22:47.27 starseeker nods - or we might just do a data collection experiment - record all sizes requested and see how big the distribution really is
22:47.38 starseeker I might be over-estimating the problem
22:48.00 *** join/#brlcad IriX64 (~kvirc@bas2-sudbury98-1177871947.dsl.bell.ca)
22:48.06 ``Erik yeh, I'd imagine you are :) profile before optimizing, right?
22:49.54 ``Erik it'd be convenient if an automated tool could do that for you, instead of hand instrumenting the code
22:50.41 bhinesley make well1.s rcc
22:50.45 bhinesley oops sorry
22:51.23 brlcad if you're messing with anything more complex than a simple bundling allocation pool (if even that), then you're probably doing something wrong
22:51.59 brlcad who is doing the allocate? when?
22:52.13 starseeker opennurbs - anytime onmalloc and friends are called
22:52.19 brlcad which is when?
22:52.30 ``Erik I think part of the evaluator for a shot hits one
22:52.46 starseeker depends on whether you're overriding the C++ new or not - if you are, everytime anything is allocated in opennurbs
22:52.52 brlcad evaluator that's called during prep, yes?
22:53.35 brlcad find it hard to believe that malloc is being called during the trace .. performance would be very bad
22:53.39 starseeker I believe so - I'd have to check if it's being called during the raytrace
22:53.57 brlcad not just a little bad .. super bad, like almost nmg bad
22:54.15 brlcad from I've seen interactive, that's just not possible
22:54.17 starseeker brlcad: there is a new being called, I remember that from the Shark profiles, but it hit some geometries worse than others
22:54.26 brlcad so if it's all prep, then you can pretty much control when you allocate
22:54.33 ``Erik I was under the impression that shoot had one... and prep definitely needs sped up
22:55.00 brlcad mm.. I'd focus on eliminating that single one during shot before even thinking about prep
22:55.27 ``Erik if you're not freeing until the end, you can alloc a bit chunk and walk it linearly, if you request more than what's left, make a new one, ad the old one to a crap list and move on
22:55.42 ``Erik big chunk
22:55.47 brlcad nods
22:56.19 brlcad that can even be done during prep
22:56.29 brlcad at least for the initial chunk
23:00.12 *** part/#brlcad IriX64 (~kvirc@bas2-sudbury98-1177871947.dsl.bell.ca)
23:00.48 CIA-105 BRL-CAD: 03starseeker * r44485 10/brlcad/trunk/src/librt/uvpoints.cpp: Add some timing and defaults.
23:10.18 starseeker ah, looks like apr is using a more straightforward approach than I thought
23:10.44 starseeker or wait...
23:11.18 starseeker OK, well, either way something custom is needed - time to figure out how to set that up
23:13.11 ``Erik the key is to limit the problem domain, if you try to be as generic as the libc stuff, you're trying to outsmart some incredibly smart guys O.o
23:13.35 starseeker nods - I know, special allocation for special purposes
23:17.53 starseeker huh, nifty: http://books.google.com/books?id=ukXrNh2g6fQC&pg=PA128&lpg=PA128&dq=APR+memory+pool+Boost&source=bl&ots=CF5TfwORRZ&sig=a6lt3dYZoPXYEaGRYIAb6mS3asU&hl=en&ei=J6uwTYvuBIeUtweqotDzCw&sa=X&oi=book_result&ct=result&resnum=3&ved=0CCYQ6AEwAg#v=onepage&q=APR%20memory%20pool%20Boost&f=false
23:48.45 brlcad starseeker: do you have a profile?
23:49.20 starseeker no, Shark is busted on my machine at the moment :-(
23:49.21 brlcad I know we constantly say "allocations are bad" .. but they are totally trumped by algorithmic complexity analysis
23:49.28 starseeker working off of memory from last year
23:49.53 starseeker I suppose it's time to upgrade and get everything fixed
23:50.34 brlcad e.g., it may be spending most of it's time calling malloc, but if it's because of some O(N^3) algorithm then it may be calling malloc 10-1000 times more than it actually needs to
23:51.32 starseeker nods
23:52.30 brlcad case in point was my nmg fix a few months bad .. nmg is relatively slow due to allocations, but was being really stupid reallocating over and over unnecessarily (by two orders of magnitude) .. cut a 5-day run down to half hour, all without changing the way allocations occur even though that's where most of the time was spent
23:52.46 brlcad changed why it was allocating in the first place
23:53.28 brlcad shark is awesome, but gprof can give insight too
23:53.42 brlcad if you copied configure, it's the -pg profile option
23:55.02 starseeker in cmake it's BRLCAD-ENABLE_PROFILING
23:55.07 starseeker tests...
23:58.58 starseeker I'm not actually messing with BRL-CAD's raytracing yet - I'm trying to get a feel for how my test uvpoints.cpp file is behaving

Generated by irclog2html.pl Modified by Tim Riker to work with infobot.