| 00:01.44 | vasc | yeah. the simt model helped tremendously with that |
| 00:01.59 | vasc | coz it maps good to simd and mimd |
| 00:01.59 | Stragus | True, it's a lot more flexible than SIMD |
| 00:02.05 | vasc | yeah and that |
| 00:02.13 | vasc | simd programming is so cumbersome |
| 00:02.30 | vasc | its like trying to fight with one hand on your back |
| 00:02.51 | Stragus | Depends how you see it. :) I like telling the compiler which instructions to use exactly |
| 00:03.08 | vasc | well its not like opencl doesn't have vector instructions |
| 00:03.14 | Stragus | But I agree OpenCL/CUDA style SIMT is a lot more convenient |
| 00:03.34 | vasc | it doesn't have all of them but |
| 00:04.21 | Stragus | Nvidia hardware doesn't have any per-lane vector instructions, besides read/write 64 bits (which is somewhat a float2 operation) |
| 00:04.39 | Stragus | I think AMD is the same |
| 00:05.38 | vasc | i think amd is more mixed |
| 00:05.54 | vasc | it's kinda like an array of VLIW processors |
| 00:06.22 | vasc | oh |
| 00:06.25 | Stragus | Mmhm, perhaps. I don't have much experience with AMD |
| 00:06.37 | vasc | or an array of SIMD ones depending on the architecture |
| 00:06.43 | vasc | well i don't have one of their gpus either |
| 00:06.50 | vasc | i read it somewhere |
| 00:07.28 | Stragus | So they have parallelism per SIMT lane and SIMD within the lanes themselves? |
| 00:07.59 | Stragus | Seems like... a little too intense, how to allocate their transistor budget |
| 00:10.06 | vasc | can't find it |
| 00:10.34 | vasc | i had some slides with a diagram |
| 00:11.00 | Stragus | It just seems like a lot of transistors dedicated to SIMD on top of the SIMT parallelism |
| 00:11.25 | vasc | http://www.slideshare.net/DevCentralAMD/gs4106-the-amd-gcn-architecture-a-crash-course-by-layla-mah |
| 00:11.53 | vasc | 5-element VLIW |
| 00:12.24 | vasc | and now its 4-element VLIW |
| 00:13.46 | Stragus | Okay, so it's not SIMD, just many instructions packed together |
| 00:14.04 | vasc | ah crap that was the old arch |
| 00:14.15 | vasc | GCN is on slide 19 |
| 00:14.39 | vasc | and 20 |
| 00:14.44 | vasc | 4x SIMD-16 units |
| 00:15.14 | vasc | each SIMD-16 unit has a 16-lane vector ALU |
| 00:15.33 | Stragus | So it's 16-wide SIMD |
| 00:15.55 | vasc | kinda like larabee but without the x86 baggage i guess |
| 00:16.19 | Stragus | Given that it's a GPU, it's probably a lot more flexible than x86 SIMD |
| 00:16.29 | vasc | it also has a dedicated local memory |
| 00:16.35 | Stragus | x86, Larabee, Xeon Phi, it's all terrible |
| 00:16.47 | vasc | so in that arch _local is prolly useful. |
| 00:16.52 | Stragus | Same as CUDA, it's basically a software-managed L1 cache |
| 00:17.09 | vasc | no it has an L1 cache in addition to that |
| 00:17.14 | vasc | see slide 19 |
| 00:17.40 | vasc | kinda interesting |
| 00:17.42 | Stragus | I know, I know |
| 00:18.10 | Stragus | Shared/local memory is still some very fast on-chip memory, the closest GPU equivalent to a CPU L1 cache |
| 00:18.14 | vasc | it even has a scalar unit |
| 00:18.34 | vasc | well the difference is that i don't need to manage an L1 cache |
| 00:18.41 | vasc | as much |
| 00:19.32 | Stragus | It's better when managed by software :p |
| 00:19.58 | Stragus | Nvidia Fermi had excellent L1/L2 cache, the automated caches became all crappy after that |
| 00:20.31 | Stragus | Kepler and Maxwell have a great read-only texture cache though |
| 00:21.49 | Stragus | AMD's local memory even has the same bank conflicts as Nvidia CUDA shared memory |
| 00:23.07 | vasc | the problem with amd as usual is the software |
| 00:23.39 | vasc | their drivers stink |
| 00:23.53 | Stragus | That's very polite |
| 00:23.53 | vasc | i actually liked their opencl cpu compiler |
| 00:24.41 | vasc | one issue, or so i heard, was that because they had no binary compat like nvidia they constantly needed to rewrite the driver code |
| 00:24.53 | vasc | and they don't have a lot of resources to begin with |
| 00:25.15 | Stragus | I wish they would focus a little more on their CPUs |
| 00:25.16 | vasc | the cpu guys don't have those issues |
| 00:25.26 | vasc | well they're in dire straits |
| 00:25.33 | Stragus | I know :( |
| 00:25.35 | vasc | if it wasn't for the console win they would be dead now |
| 00:25.59 | vasc | ibm's going out of the market totally |
| 00:26.01 | Stragus | I plan on upgrading AMD in about a month, dual Opteron 6370P |
| 00:26.15 | vasc | i have a piledriver |
| 00:26.21 | vasc | amd fx-8350 or something |
| 00:26.40 | Stragus | They haven't made any new FX chip for a while |
| 00:27.03 | vasc | yeah i think there was like one speed bump after that and that was it |
| 00:27.11 | vasc | and i bought it a looong time ago years ago |
| 00:27.24 | vasc | when it came out |
| 00:27.29 | Stragus | I'm really sad, I have always like AMD since the Athlon XP |
| 00:27.49 | vasc | they did too many management mistakes |
| 00:27.50 | Stragus | 3dnow! was great, and they had fast big number arithmetics and other things that were terrible on Intel |
| 00:27.54 | vasc | they didn't handle their resources well |
| 00:28.24 | vasc | the ati buy was a real mistake |
| 00:28.33 | vasc | it drained them of all the cash they had |
| 00:29.09 | Stragus | Most low-end laptops now run AMD CPU+GPU, at least they got that |
| 00:29.09 | vasc | hector ruiz basically took a company that was finally doing ok and brought it to its knees |
| 00:29.17 | vasc | that and the consoles |
| 00:29.24 | vasc | its the same arch i think |
| 00:29.25 | vasc | jaguar |
| 00:29.30 | vasc | or is it zen now |
| 00:29.38 | Stragus | Their NUMA Opterons were/are great machines at an excellent prices |
| 00:30.09 | Stragus | Come on, 32 cores for $1400, try getting that with Intel |
| 00:30.16 | vasc | yeah. not a lot of processor with cheap large socket count like that |
| 00:30.18 | vasc | and that |
| 00:30.28 | vasc | losing their fabs cost them big time |
| 00:31.03 | vasc | they probably thought it was a good idea because TSMC was executing so well |
| 00:31.08 | vasc | WAS until they slipped |
| 00:31.36 | vasc | intel has too much of a process advantage right now |
| 00:31.55 | Stragus | Intel has slightly higher performance for 2.5x the cost |
| 00:32.12 | Stragus | I don't understand people don't go more for AMD chips |
| 00:32.22 | vasc | well right now the amd chips really suck |
| 00:32.50 | Stragus | Opterons 63xx are okay |
| 00:33.30 | Stragus | In fact, they are faster than Intel chips *if* you are running NUMA-aware code able to allocate memory for each core in its own specific NUMA bank, with threads locked to the cores |
| 00:33.39 | Stragus | But very little software does that |
| 00:34.46 | vasc | 32nm |
| 00:35.22 | vasc | that's at least two processes behind intel |
| 00:36.07 | vasc | so its like they are using 4 years older fabs |
| 00:36.19 | Stragus | The chips still perform well, so the design is probably fairly good |
| 00:37.21 | Stragus | Some two years ago, I benchmarked Opteron 63xx against the latest Intel with NUMA-aware code and AMD was faster |
| 00:37.37 | Stragus | Except AMD hasn't produced anything new since then |
| 00:37.50 | Stragus | (32 cores in both cases) |
| 00:38.03 | vasc | which kind of code? |
| 00:38.19 | vasc | int, fp? |
| 00:38.37 | Stragus | Mostly floating point |
| 00:38.47 | vasc | seems weird |
| 00:38.49 | Stragus | Consuming a lot of memory bandwidth too |
| 00:39.03 | vasc | i think haswell has a wider simd unit |
| 00:39.28 | Stragus | The code was only SSE, no AVX |
| 00:39.33 | vasc | oh ok |
| 00:41.24 | Stragus | AVX is really bothersome sometimes |
| 00:41.51 | Stragus | You can do shuffles... but only within the upper and lower 128 bits "lanes", and all other kind of weird stuff limited within 128 bits lanes |
| 00:42.05 | Stragus | It's really awkward to write good AVX, the instruction set is messed up |
| 00:43.21 | vasc | that's one reason why i went opencl |
| 00:43.26 | vasc | the constant ISA changes |
| 00:43.51 | Stragus | It's still good to know what the hardware can do, or you'll generate terribly slow AVX code without knowing it |
| 00:44.08 | vasc | DLXV was a lot nicer. |
| 00:44.12 | vasc | classical vector. |
| 00:45.56 | Stragus | I wonder what OpenCL does if you have a 8 floats AVX vector and you want to shuffle float [0] with [7] |
| 00:46.07 | Stragus | Or can you even do that in OpenCL?... |
| 00:48.03 | vasc | i think so |
| 00:48.08 | vasc | there's a float8 type |
| 00:48.20 | Stragus | No, a shuffle between lanes of the same wavefront |
| 00:48.28 | *** join/#brlcad gurwinder (~chatzilla@59.91.119.36) | |
| 00:49.52 | vasc | there's a shuffle() and shuffle2() instruction |
| 00:50.22 | vasc | i think you can't do comms in the same lane in opencl like that |
| 00:53.24 | vasc | CUDA has some instructions but i think opencl doesn't |
| 00:54.19 | Stragus | Right... so you can't use CUDA shuffles, nor SSE/AVX shuffles and so on |
| 00:54.27 | Stragus | OpenCL is a little limited on certain things |
| 00:55.46 | vasc | the thing that really annoys me is the opencl texture support. it's crap. |
| 00:56.02 | Stragus | What's missing? |
| 00:56.09 | vasc | no mipmaps for one |
| 00:56.11 | Stragus | In CUDA, we don't have compressed textures and some other things |
| 00:56.16 | Stragus | Ouch |
| 00:56.46 | vasc | there's an extension now |
| 00:56.59 | vasc | but at the rate nvidia updates their opencl implementation maybe we'll have it in a decade or two |
| 00:58.33 | Stragus | Eh, they want to promote CUDA first |
| 00:59.08 | Stragus | Where you can do a trilinear mipmapped lookup into a seamless cubic texture, by the way :p |
| 00:59.12 | vasc | only intel and amd are serious about opencl |
| 00:59.20 | Stragus | cube* texture |
| 00:59.20 | vasc | that's nice |
| 00:59.38 | vasc | do they have bitmaps which are real bitmaps instead of bytemaps? |
| 01:00.03 | Stragus | Bitmaps? Bit maps? |
| 01:00.09 | vasc | yeah |
| 01:00.16 | Stragus | Not quite following what you mean |
| 01:00.21 | vasc | 1 bit per pixel |
| 01:00.25 | vasc | instead of 8 bits |
| 01:00.50 | Stragus | It's not a format supposed by the hardware |
| 01:00.53 | vasc | see |
| 01:01.00 | vasc | i did my own implementation of that |
| 01:01.16 | vasc | in cuda |
| 01:01.22 | Stragus | Of course, but the hardware texturing logic doesn't do 1 bit textures |
| 01:01.32 | vasc | it's a shame though i could use that |
| 01:01.53 | vasc | mipmapped 1 bit per pixel 3d textures with my own filtering function |
| 01:02.33 | Stragus | That's nice, the hardware texturing is fast but it has some limitations |
| 01:02.52 | Stragus | Although it does support a wide range of very useful formats, like RGBA 10,10,10,2 |
| 01:03.02 | Stragus | Which is fantastic to store 3D vectors |
| 01:13.22 | Notify | 03BRL-CAD:starseeker * 65737 brlcad/trunk/src/librt/db_tree.c: Make sure rt_uniresource is initialized before using it |
| 01:57.56 | Notify | 03BRL-CAD:starseeker * 65738 (brlcad/trunk/include/analyze.h brlcad/trunk/src/libanalyze/find_subtracted_shapes.cpp brlcad/trunk/src/libged/shape_recognition.cpp): Back up to the last point that didn't crash. |
| 02:05.32 | Notify | 03BRL-CAD:starseeker * 65739 brlcad/trunk/src/libged/shape_recognition.cpp: This step doesn't seem to cause problems... |
| 02:26.27 | vasc | blech |
| 02:26.42 | vasc | the quartic solver is annoyingly codey |
| 02:29.57 | Stragus | I assumed it would mostly be copy/paste to OpenCL |
| 02:30.21 | vasc | kind of. |
| 02:30.27 | vasc | but it's branchy like heck. |
| 02:31.09 | Stragus | Eh yes, that could be optimized for SIMT hardware |
| 02:33.07 | vasc | BRL-CAD uses this generic solver for up to 6th order polys |
| 02:33.20 | vasc | and for some reason the torus intersector uses that code |
| 02:33.34 | vasc | it may be that it has extra checks for weird polys |
| 02:33.44 | vasc | but it's still annoying like heck |
| 02:35.00 | vasc | like if you have lots of zeros then it uses the cubic solver. or the quadratic solver. etc |
| 02:35.08 | vasc | branch and branch and branch |
| 02:35.53 | vasc | BAH |
| 02:36.00 | vasc | i'll just use the quadratic solver |
| 02:36.06 | vasc | quartic |
| 02:36.35 | vasc | and you know which is the primitive that uses 6th order polys? |
| 02:36.38 | vasc | the HEART primitive |
| 02:36.52 | Stragus | Ahah! |
| 02:36.58 | vasc | so we have a 6th order solver just because of that |
| 02:37.39 | vasc | bangs his head with a hammer |
| 02:37.50 | Stragus | Having all primitives use the same solver code can be useful for incoherent rays |
| 02:38.02 | Stragus | But if they are coherent, you would be much better off with optimized code for each primitive |
| 02:38.09 | vasc | well ya know |
| 02:38.35 | vasc | this thing supports more than implicits |
| 02:38.51 | vasc | and the sphere and ellipsoid actually use the quadratic solver instead of the general one |
| 02:39.28 | vasc | for some reason no one uses the quartic solver directly |
| 02:39.45 | vasc | its probably because of numeric instabilities |
| 02:39.48 | vasc | but lets ignore that for now |
| 02:39.54 | vasc | uses the quartic solver |
| 02:41.38 | vasc | gah |
| 02:42.02 | vasc | its like looking at the niagara falls or something |
| 02:42.07 | vasc | cascading branches again |
| 02:42.27 | Stragus | Start with copy/paste, someone can optimize that later |
| 02:44.21 | vasc | i'm doing that and some inlining |
| 02:48.13 | vasc | i feel like just doing my own based on the wolfram or wikipedia page for the quartic solver would be quicker though |
| 02:49.20 | Stragus | I wouldn't recommend that, stability can be tricky for these things |
| 02:49.49 | vasc | yeah i know |
| 02:49.59 | vasc | but i'm not gonna use the generic solver that's for sure |
| 02:50.36 | Stragus | Before using any other code, I would bombard both codes with billion of equations to detect any glitch |
| 02:50.47 | Stragus | Which is time consuming, so it's probably best to copy/paste for now |
| 02:51.46 | Notify | 03BRL-CAD:starseeker * 65740 (brlcad/trunk/include/brep.h brlcad/trunk/src/libbrep/shape_recognition.cpp and 2 others): looks like I had gummed up the name handling, and it was showing up as weird errors in the tree build... |
| 02:55.11 | vasc | bah humbug |
| 03:01.02 | Notify | 03BRL-CAD:starseeker * 65741 (brlcad/trunk/include/analyze.h brlcad/trunk/src/libanalyze/find_subtracted_shapes.cpp brlcad/trunk/src/libged/shape_recognition.cpp): switch in rt_wdb |
| 03:04.03 | vasc | good. time to start finding bugs |
| 03:21.39 | vasc | blam |
| 03:21.43 | vasc | crash |
| 03:21.52 | vasc | well that's a start |
| 03:23.11 | Stragus | How easy is OpenCL debugging? |
| 03:23.24 | vasc | it's bad |
| 03:23.42 | vasc | at least this time it didn't lock my display |
| 03:23.44 | Stragus | CUDA is slightly painful, I generally write the whole CUDA-designed code in C and pretty much copy/paste |
| 03:23.46 | vasc | computer |
| 03:23.52 | vasc | yeah |
| 03:23.54 | vasc | i do that usually |
| 03:24.02 | vasc | an ANSI C mockup and then i port it |
| 03:24.07 | Stragus | Exactly |
| 03:24.17 | Stragus | With dummy malloc/free for shared memory and stuff |
| 03:24.43 | vasc | hm this ain't working so well |
| 03:24.59 | vasc | maybe the quartic solver alone doesn't work |
| 03:25.35 | vasc | i'll try doing that in the ANSI C bit to see what happens |
| 03:25.40 | Stragus | nods |
| 03:28.43 | vasc | yeah it doesn't work either |
| 03:28.43 | vasc | great |
| 03:29.07 | vasc | the generic 6th order solver it is then |
| 03:31.25 | vasc | oh its recursive |
| 03:31.28 | vasc | now i notice that |
| 03:31.30 | vasc | hmm |
| 03:31.50 | Stragus | Damn. |
| 03:32.38 | vasc | well i think opencl supports recursionm |
| 03:33.51 | Stragus | Probably, although it's darn slow |
| 03:34.28 | vasc | ah no it ain't |
| 03:34.35 | vasc | it just calls a function with a really similar name |
| 03:38.36 | vasc | holy cascading function calls batman |
| 03:40.05 | vasc | you're in a maze of twisty passages all aline |
| 03:40.06 | vasc | alike |
| 03:40.31 | vasc | i need complex numbers as well |
| 03:40.32 | vasc | neato |
| 03:41.26 | Notify | 03BRL-CAD:starseeker * 65742 (brlcad/trunk/src/libanalyze/find_subtracted_shapes.cpp brlcad/trunk/src/libged/shape_recognition.cpp): There we go - getting what should be all the key pieces we need. Next up is a) a bbox filter for the missing gaps and b) the final decision logic. |
| 03:43.10 | Stragus | You are in a maze of twisty branches, all alike |
| 03:44.11 | starseeker | brlcad: my apologies - I was feeding in nonsense names to the combs and didn't realize it |
| 03:45.02 | starseeker | notes to self to remember that comb building does no sanity checking on names... |
| 03:47.02 | vasc | if it was the amd gpu compiler it would probably barf on this code |
| 03:48.36 | Notify | 03BRL-CAD:brlcad * 65743 brlcad/trunk/src/librt/primitives/datum/datum.c: add an arrowhead onto the tip of axes as an indicator of directionality, fix placement of the plane plots too. |
| 04:28.48 | vasc | well its working |
| 04:44.41 | Notify | 03BRL-CAD Wiki:85.246.114.172 * 9138 /wiki/User:Vasco.costa/GSoC15/logs: |
| 04:48.18 | vasc | too tired. it's the crack of dawn here. |
| 04:48.24 | vasc | see you tomorrow |
| 04:53.16 | Notify | 03BRL-CAD Wiki:85.246.114.172 * 9139 /wiki/User:Vasco.costa/GSoC15/logs: |
| 04:53.49 | Notify | 03BRL-CAD Wiki:85.246.114.172 * 9140 /wiki/User:Vasco.costa/GSoC15/logs: |
| 04:54.19 | Notify | 03BRL-CAD Wiki:85.246.114.172 * 9141 /wiki/User:Vasco.costa/GSoC15/logs: |
| 04:56.49 | Notify | 03BRL-CAD Wiki:85.246.114.172 * 9142 /wiki/User:Vasco.costa/GSoC15/logs: |
| 04:59.53 | Notify | 03BRL-CAD Wiki:85.246.114.172 * 9143 /wiki/User:Vasco.costa/GSoC15/logs: |
| 05:01.11 | Notify | 03BRL-CAD Wiki:85.246.114.172 * 9144 /wiki/User:Vasco.costa/GSoC15/logs: |
| 05:03.13 | Notify | 03BRL-CAD Wiki:85.246.114.172 * 9145 /wiki/User:Vasco.costa/GSoC15/logs: |
| 05:07.59 | Notify | 03BRL-CAD Wiki:85.246.114.172 * 9146 /wiki/User:Vasco.costa/GSoC15/logs: |
| 05:19.49 | Notify | 03BRL-CAD:brlcad * 65744 brlcad/trunk/NEWS: libdm changes to improve the appearance of points -- actually drawing circles instead of squares -- is user visible in a variety of places, most notably the point cloud primitive. |
| 05:32.15 | *** join/#brlcad shaina (~shaina@59.89.41.116) | |
| 05:50.43 | *** join/#brlcad ries (~ries@D979C47E.cm-3-2d.dynamic.ziggo.nl) | |
| 06:11.48 | Notify | 03BRL-CAD Wiki:Gurwinder Singh * 9147 /wiki/User:Gurwinder_Singh/GSoc15/log_developmen: |
| 06:13.48 | Notify | 03BRL-CAD Wiki:Gurwinder Singh * 9148 /wiki/User:Gurwinder_Singh/GSoc15/log_developmen: |
| 06:18.00 | brlcad | notes the solver Stragus and vasc were talking about is not 6th order just for heart, it's Nth order with N set at compile-time -- and it amazingly worked very stable for 6th order although having never been implemented with that in mind |
| 06:19.02 | brlcad | I tested about a half dozen different solvers available online a few years ago and brl-cad's substantially outperformed ALL of them including the venerable GMP |
| 06:20.36 | brlcad | frankly shocking result, because I was looking to replace it with a 3rd party solver lib .. assuming there would be something faster out there |
| 06:21.57 | gurwinder | brlcad: I'm working on pipe. Not able to understand bend radius. I run make pipe make it has bend radius 500 but there is no bend at all. |
| 06:22.33 | gurwinder | the pipe is strait |
| 06:23.45 | brlcad | Stragus: my comment about not caring about performance was specifically with regards to vasc's gsoc project, please don't turn that into a bigger statement than that :) |
| 06:25.08 | brlcad | dracarys983: not enough info, how are you printing the vls to the mged window? |
| 06:26.21 | brlcad | gurwinder: you got half working? |
| 06:27.14 | brlcad | gurwinder: see http://brlcad.org/wiki/Documentation principles of effective meodeling document for a pipe overview |
| 06:27.27 | gurwinder | brlcad: yes half is working well. POV-Ray support it as plane. |
| 06:28.19 | gurwinder | here is link http://www.povray.org/documentation/view/3.6.1/297/ |
| 06:29.17 | gurwinder | brlcad: I read about bend in http://brlcad.org/VolumeIII-Principles_of_Effective_Modeling.pdf |
| 06:30.15 | gurwinder | but it confuses me when I run make pipe make and it show pipe with two points and bend radius 500. |
| 06:31.08 | gurwinder | So If there are only two points so whats the meaning of bend here? |
| 06:32.04 | brlcad | you have a radius but no point around which to bend (you need a third point) |
| 07:03.01 | dracarys983 | brlcad: Using bu_vls_printf(). bu_log() works perfectly, bu_vls_printf() doesn't. |
| 07:39.11 | *** join/#brlcad teepee-- (bc5c2134@gateway/web/freenode/ip.188.92.33.52) | |
| 08:07.33 | *** join/#brlcad dracarys983 (dracarys98@nat/iiit/x-tqmhgqesmhgvsphs) | |
| 08:34.12 | *** join/#brlcad d_rossberg (~rossberg@66-118-151-70.static.sagonet.net) | |
| 08:51.54 | *** join/#brlcad gurwinder (~chatzilla@59.91.119.36) | |
| 09:28.38 | dracarys983 | d_rossberg: I updated the rt^3 tests patch. I sent a mail regarding the API design on mailing list. Is that design alright? |
| 09:29.01 | dracarys983 | I have implemented it in that way and volume is working now. Centroid needs the density table to be imported. It'll be done in a day. |
| 09:29.18 | dracarys983 | Surface area is next up, and then the caller functions. |
| 09:29.26 | dracarys983 | in C++ interface |
| 09:35.29 | d_rossberg | the over all design looks reasonable |
| 09:36.16 | d_rossberg | the only thing i would like to mention is that api.c doesn't contain an API but internal helper functionality |
| 09:36.52 | d_rossberg | this is a little bit confusing |
| 09:39.56 | dracarys983 | d_rossberg: Okay. I have implemented the ray shooting logic in api.c (I will change the name if it's misleading). It fills in the structures and a ray context structure. |
| 09:40.26 | dracarys983 | I pass the ray context structure to volume, centroid and surface area calculating functions in libanalyze. |
| 09:40.46 | dracarys983 | They calculate the grand totals and return the required value. |
| 09:41.14 | dracarys983 | s/ray/raytracing |
| 09:42.26 | dracarys983 | The ray shooting code is the same as that in gqa, no changes right now. |
| 09:43.23 | dracarys983 | d_rossberg: One thing I'm not able to do is print messages to MGED window using bu_vls_printf(). bu_log() works. |
| 10:50.18 | d_rossberg | as far as i can see bu_vls_printf() writes the output to a bu_vls struct, no emged window there |
| 10:52.59 | dracarys983 | Yes, I'm using a bu_vls struct to which I write using bu_vls_printf(). Now, there's ged_result_str which is a bu_vls struct and it's used to print output to MGED window. |
| 10:53.22 | dracarys983 | I've made a bu_vls struct named analyze_struct_str to do the same. Not working. |
| 11:03.34 | d_rossberg | and how do you want to write the buffer (t.e. the vls struct) to the mged window? |
| 11:04.33 | d_rossberg | ged is a structure which comes from the tcl interpreter, the ged routines write something to it, snd then the tcl interpreter will do something with it |
| 11:04.47 | dracarys983 | As I would write a string to stdout -- I want to write the string to MGED output. |
| 11:05.04 | d_rossberg | e.g. write the ger_result_str to the tcl command window |
| 11:05.30 | dracarys983 | d_rossberg: Ah, right. So it's the Tcl interpreter that writes the contents of ged_result_str to MGED window. |
| 11:05.33 | d_rossberg | do you have a handle of the mged window? |
| 11:06.11 | dracarys983 | No, I don't pass gedp. I only pass the dbip pointed to by gedp. |
| 11:07.00 | dracarys983 | If I pass the gedp, I can use gedp->ged_result_str to print to Tcl command window. |
| 11:07.10 | d_rossberg | tcl is (ideally) a layer above the kernel |
| 11:08.22 | d_rossberg | you shouldn't mix them |
| 11:09.39 | dracarys983 | d_rossberg: Hm okay. So is it possible to switch output bu_vls struct to analyze_result_str when analyze command is called? |
| 11:09.55 | dracarys983 | There's one way to avoid using bu_vls_printf() -- to use bu_log(). |
| 11:12.35 | d_rossberg | this would be the appropriate method for logging at kernel level |
| 11:14.15 | d_rossberg | btw, libraries can define debug levels (see include/rt/debug.h) |
| 11:17.30 | dracarys983 | d_rossberg: Those flags are to be assigned to RT_G_DEBUG to get debugging info, right? |
| 11:17.45 | dracarys983 | And yes, I'll switch to bu_log() then. :) |
| 11:21.43 | d_rossberg | yes, but i don't know if you want to make it that complex, but a switch to switch the libanalyze debug output on and of like in librt ... |
| 11:41.10 | *** join/#brlcad gurwinder (~chatzilla@59.91.119.36) | |
| 12:49.06 | brlcad | dracarys983: bu_vls_printf() lets you use a printf-style interface to print INTO a vls, not print that vls to stdout |
| 12:50.10 | brlcad | you have to use bu_log or fprintf or printf or std::cout or write or some other standard method to write to standard out |
| 12:50.33 | brlcad | fprintf("%s\n", bu_vls_addr(&your_vls)); |
| 12:50.41 | brlcad | er, fprintf(stdout, "%s\n", bu_vls_addr(&your_vls)); |
| 13:00.08 | *** join/#brlcad ih8sum3r (~deepak@122.173.207.45) | |
| 14:03.18 | *** join/#brlcad sofat (~sofat@202.164.45.212) | |
| 14:11.02 | Notify | 03BRL-CAD:starseeker * 65745 brlcad/trunk/src/libanalyze/find_subtracted_shapes.cpp: Use the bbox to limit which gaps are being considered for the given candidate object. |
| 14:14.20 | Notify | 03BRL-CAD:starseeker * 65746 (brlcad/trunk/include/wdb.h brlcad/trunk/src/libwdb/reg.c): Empty strings as wmember names leads to a number of problems, including infinite loops when trees with nested empty string entries are interperted as referring to each other. Extra fun when debugging since there's no unique name handy to help identify what might be causing the problem. While we're at it, sanity check headp. |
| 14:50.01 | *** join/#brlcad sofat (~sofat@202.164.45.212) | |
| 14:57.52 | *** join/#brlcad packrat (~packrator@c-71-231-32-234.hsd1.wa.comcast.net) | |
| 15:01.27 | dracarys983 | brlcad: Ah, I see. Thank you. So, printing using bu_vls_printf() solved. |
| 15:27.18 | Notify | 03BRL-CAD:starseeker * 65747 brlcad/trunk/src/libanalyze/find_subtracted_shapes.cpp: Make an initial subtract/no-subtract determination. Need to refine in situations where we're getting relatively small numbers of rays. |
| 15:29.22 | *** join/#brlcad shaina (~shaina@59.89.41.116) | |
| 16:14.35 | *** join/#brlcad sofat (~sofat@202.164.45.212) | |
| 16:32.11 | *** join/#brlcad vasc (~vasc@bl7-121-4.dsl.telepac.pt) | |
| 16:49.43 | dracarys983 | brlcad: Are there any primitives who have a NULL entry in either of ft_volume/centroid/surf_area but it's *analyze_<primitive>* function has been implemented? |
| 16:56.13 | *** join/#brlcad sofat (~sofat@202.164.45.212) | |
| 17:22.08 | *** join/#brlcad bhollister2 (~brad@2601:647:cb02:7a00:6e71:d9ff:fe7c:6803) | |
| 17:57.30 | *** join/#brlcad konrado (~konro@41.205.22.39) | |
| 18:29.35 | *** join/#brlcad sofat (~sofat@202.164.45.204) | |
| 18:59.08 | *** join/#brlcad konrado (~konro@41.205.22.58) | |
| 19:01.22 | Notify | 03BRL-CAD:brlcad * 65748 brlcad/trunk/src/libdm/dm-X.c: calling BN_VLIST_DRAW_POINT should move the cursor to that position, so we don't have to explicitly call MOVE if drawing from there. |
| 19:21.26 | Notify | 03BRL-CAD:brlcad * 65749 (brlcad/trunk/TODO brlcad/trunk/src/libdm/dm-wgl.c): make sure the vlist cursor is always moved to the current point so that point drawing works as expected, but this begs for a quick test to make sure wireframes were not broken in the process if there is some statefulness implied. it should be save though as it's exactly what the ogl manager is currently doing. this brings them back closer |
| 19:21.28 | Notify | into alignment. |
| 19:21.30 | Notify | ... |
| 19:21.49 | Notify | 03BRL-CAD:brlcad * 65750 (brlcad/trunk/src/libdm/dm-X.c brlcad/trunk/src/libdm/dm-qt.cpp): we want to stash in lpnt after drawing a point |
| 19:24.53 | Notify | 03BRL-CAD:brlcad * 65751 brlcad/trunk/TODO: plot and tk are in the same boat, needing support for points |
| 19:34.55 | Notify | 03BRL-CAD:brlcad * 65752 (brlcad/trunk/TODO brlcad/trunk/src/libdm/CMakeLists.txt): separate out libdm-specific issues into a libdm README file. as our ledger has grown over the years, there are too many developer-only entries that could just as well live as comments in the code or notes in a library README file and don't really have any user-visible value for being tracked on our public TODO backlog. |
| 19:40.13 | *** join/#brlcad ries_nicked (~ries@D979C47E.cm-3-2d.dynamic.ziggo.nl) | |
| 19:47.59 | Notify | 03BRL-CAD Wiki:Deekaysharma * 9149 /wiki/User:Deekaysharma/logs: |
| 20:05.14 | vasc | nope opencl doesn't support recursion |
| 20:06.36 | Stragus | Really? No "true" function calls then? |
| 20:07.09 | Notify | 03BRL-CAD:starseeker * 65753 (brlcad/trunk/src/libanalyze/find_subtracted_shapes.cpp brlcad/trunk/src/libanalyze/util.cpp): This undoubtely needs a lot of refinement, but get a subtract/no-subtract decision from the ray tracing. Need more context - for example, need to distinguish when a solid in a candidate is removing positive material it shouldn't vs. subtracting empty space. |
| 20:07.16 | Stragus | The first generation of CUDA hardware from 2008 didn't support functions either |
| 20:18.11 | ``Erik | shakes fist at 2008 via his 2008 laptop :/ |
| 20:26.31 | Notify | 03BRL-CAD:brlcad * 65754 brlcad/trunk/src/librt/primitives/datum/datum.c: big improvement on datum plane plotting, just draw a simple box in the plane with an up vector. |
| 20:27.28 | Notify | 03BRL-CAD:ejno * 65755 brlcad/trunk/src/libgcv/conv/fastgen4/fastgen4_write.cpp: fix an issue in which WALLs between components with thin-wall cones/spheres could result in creation of nonexistent cones/spheres |
| 20:27.57 | *** join/#brlcad sofat (~sofat@202.164.45.212) | |
| 20:34.49 | *** join/#brlcad Shubham (6719e766@gateway/web/freenode/ip.103.25.231.102) | |
| 20:37.06 | Notify | 03BRL-CAD:brlcad * 65756 brlcad/trunk/src/libbn/mat.c: bn_vec_perp() is really jumpy and inconsistent, making it undesirable when rendering GUI elements. implementation needs to be more continuous . |
| 20:50.00 | Notify | 03BRL-CAD:brlcad * 65757 brlcad/trunk/include/vmath.h: VPROJECT() needs to swap args .. yikes. |
| 20:55.28 | Notify | 03BRL-CAD:starseeker * 65758 brlcad/trunk/src/libanalyze/find_subtracted_shapes.cpp: Add the new subtractions to the final csg definition |
| 20:57.30 | *** join/#brlcad sofat (~sofat@202.164.45.204) | |
| 21:04.35 | Notify | 03BRL-CAD:starseeker * 65759 brlcad/trunk/src/libged/shape_recognition.cpp: Only do the raytracing prep when we actually need it. |
| 21:23.54 | Notify | 03BRL-CAD:starseeker * 65760 brlcad/trunk/src/librt/mkbundle.c: zeros won't work here... |
| 21:42.01 | Notify | 03BRL-CAD:starseeker * 65761 (brlcad/trunk/src/libanalyze/find_subtracted_shapes.cpp brlcad/trunk/src/libanalyze/util.cpp): avoid crashing in some error cases. |
| 21:48.00 | vasc | BTW i tried doing a rendering loop where i first compute the intersections and store the lengths of the lists, alloc, and then compute the intersections and store the intersections |
| 21:48.09 | vasc | the performance loss is like %30 |
| 21:48.19 | vasc | so i think i'll do that |
| 21:48.36 | vasc | instead of the dynamic allocation |
| 21:49.08 | vasc | doing the intersections twice doesn't make things twice slower |
| 21:49.12 | vasc | its like 30% slower |
| 21:49.22 | vasc | because a lot of time is spent on the boolean weaving |
| 21:49.37 | vasc | there's just one snag |
| 21:49.52 | vasc | because i only do boolean weaving in the end i can't do early termination |
| 21:50.02 | vasc | on the rays |
| 21:50.08 | *** join/#brlcad ries (~ries@D979C47E.cm-3-2d.dynamic.ziggo.nl) | |
| 21:50.28 | vasc | so i always need to trace rays all the way |
| 21:51.05 | vasc | the performance impact would be on scenes with high depth complexity |
| 21:51.12 | Stragus | If you are going to count all hits then trace again, early termination makes no sense indeed |
| 21:51.23 | vasc | but AFAIK usually scenes don't have a lot more depth complexity than 2 or 3 anyway |
| 21:51.39 | Stragus | I think they manage fairly complex scenes :p |
| 21:52.47 | vasc | well between that kind of extra calcs and the extra mallocs |
| 21:52.55 | vasc | i kinda suspect the extra calcs win |
| 21:53.34 | vasc | 30% is a worst case btw |
| 21:53.40 | Stragus | Well... I disagree, but the other way is complex, so it's good enough for now |
| 21:54.07 | vasc | there's just one thing though |
| 21:54.34 | vasc | i plan to transfer the light of segments to the CPU and do the boolean weaving there as a temporary step |
| 21:54.42 | vasc | that's gonna suck until that gets rewritten |
| 21:55.17 | vasc | but this also means we can compute non-GPU accelerated intersections on the CPU and merge the results |
| 21:55.49 | vasc | s/light/list/g |
| 21:56.17 | vasc | back to tgc |
| 22:03.45 | Notify | 03BRL-CAD:brlcad * 65762 brlcad/trunk/src/libbn/mat.c: bail earlier on degenerate case |
| 23:15.50 | Notify | 03BRL-CAD Wiki:85.240.121.4 * 9150 /wiki/User:Vasco.costa/GSoC15/logs: |
| 23:16.09 | Notify | 03BRL-CAD Wiki:85.240.121.4 * 9151 /wiki/User:Vasco.costa/GSoC15/logs: |
| 23:18.19 | vasc | brlcad, if you apply any of my patches, apply them in this order: #341, #393 |
| 23:21.45 | Notify | 03BRL-CAD Wiki:85.240.121.4 * 9152 /wiki/User:Vasco.costa/GSoC15/logs: |
| 23:22.59 | Notify | 03BRL-CAD Wiki:85.240.121.4 * 9153 /wiki/User:Vasco.costa/GSoC15/logs: |
| 23:24.57 | Notify | 03BRL-CAD Wiki:Konrado DJ * 9154 /wiki/User:Konrado_DJ/GSoc2015/logs: /* 29 JULY 2015 */ |
| 23:28.11 | Notify | 03BRL-CAD Wiki:85.240.121.4 * 9155 /wiki/User:Vasco.costa/GSoC15/logs: |
| 23:32.55 | Notify | 03BRL-CAD Wiki:85.240.121.4 * 9156 /wiki/User:Vasco.costa/GSoC15/logs: |
| 23:34.27 | Notify | 03BRL-CAD Wiki:85.240.121.4 * 9157 /wiki/User:Vasco.costa/GSoC15/logs: |
| 23:35.14 | Notify | 03BRL-CAD Wiki:85.240.121.4 * 9158 /wiki/User:Vasco.costa/GSoC15/logs: |
| 23:45.34 | vasc | well the primitives are ported |
| 23:45.40 | Notify | 03BRL-CAD:brlcad * 65763 brlcad/trunk/src/libged/typein.c: fix a couple bugs including not validating that we got proper numeric args where expected and needing to allocate datums individually instead of as an array (as they must be released individually). |
| 23:45.53 | vasc | so we got SPH, EHY, ELL, ARB8, TOR, TGC |
| 23:48.02 | vasc | with that off time to consider how to implement the rendering architecture |
| 23:48.03 | vasc | so |
| 23:48.08 | vasc | time to write stuff on paper |
| 23:48.09 | Notify | 03BRL-CAD:brlcad * 65764 brlcad/trunk/src/librt/primitives/datum/datum.c: WIP, needing a better solution for off-angle planes as bn_vec_perp() is unstable. also fix 4 byte per datum overallocation (no harm, but wasted). |