| 01:02.14 | Notify | 03BRL-CAD:starseeker * 65632 brlcad/trunk/src/libbrep/shape_recognition_cylinder.cpp: helps to get the format string right... |
| 01:02.41 | starseeker | vasc: what warnings? |
| 01:17.40 | Notify | 03BRL-CAD:starseeker * 65633 brlcad/trunk/src/librt/CMakeLists.txt: small program to characterize a brep model and determine what percentage of its objects might be csg conversion candidates. methodology is very crude... |
| 01:28.23 | Notify | 03BRL-CAD:starseeker * 65634 brlcad/trunk/src/libbrep/shape_recognition.cpp: Something not quite right here - NIST2 and NIST4 are suddenly failing because of this test... |
| 01:49.20 | Notify | 03BRL-CAD:starseeker * 65635 (brlcad/trunk/src/libtclcad/CMakeLists.txt brlcad/trunk/src/libtclcad/tclcad.c): Move the functions pushed into libtclcad from the lower level libs into their own file - need to look at renaming them, may need other reworking. |
| 01:52.14 | Notify | 03BRL-CAD:starseeker * 65636 brlcad/trunk/src/librt/tree.c: Shouldn't need string here - needs more testing. |
| 02:48.45 | Gurwinder | brlcad: Ping |
| 02:51.13 | vasc | CMake Warning (dev) at misc/CMake/TCL_PKGINDEX.cmake:45 (get_target_property): |
| 02:51.13 | vasc | <PROTECTED> |
| 02:51.13 | vasc | <PROTECTED> |
| 02:51.13 | vasc | <PROTECTED> |
| 02:51.13 | vasc | <PROTECTED> |
| 02:51.14 | vasc | <PROTECTED> |
| 02:51.16 | vasc | <PROTECTED> |
| 02:51.18 | vasc | Call Stack (most recent call first): |
| 02:51.20 | vasc | <PROTECTED> |
| 02:51.22 | vasc | This warning is for project developers. Use -Wno-dev to suppress it. |
| 02:51.24 | vasc | CMake Warning (dev) at misc/CMake/TCL_PKGINDEX.cmake:45 (get_target_property): |
| 02:51.26 | vasc | <PROTECTED> |
| 02:51.28 | vasc | <PROTECTED> |
| 02:51.30 | vasc | <PROTECTED> |
| 02:51.32 | vasc | <PROTECTED> |
| 02:51.34 | vasc | <PROTECTED> |
| 02:51.36 | vasc | <PROTECTED> |
| 02:51.38 | vasc | and more like 5 pages of that |
| 03:08.47 | starseeker | ah |
| 03:09.00 | starseeker | what version of CMake are you using? |
| 03:10.16 | starseeker | vasc: those can be safely ignored - they're a developer message letting us know we need to rework those bits of code to use a new system |
| 03:10.36 | starseeker | first we need to require CMake > 3.0, which we'll only do after the 7.26.0 release |
| 03:12.37 | vasc | cmake version 3.0.2 |
| 03:23.41 | Notify | 03BRL-CAD:starseeker * 65637 (brlcad/trunk/src/other/PoissonRecon/CMakeLists.txt brlcad/trunk/src/other/URToolkit/CMakeLists.txt and 12 others): Put policy settings back in for 3.0.2 |
| 03:23.47 | starseeker | vasc: give that a shot |
| 03:30.44 | vasc | just svn up and then i run cmake? or something else? |
| 03:31.00 | starseeker | you got it |
| 03:31.27 | vasc | i'm running cmake-gui .. -DBRLCAD_BUNDLED_LIBS=ON |
| 03:31.48 | starseeker | OK, that should work |
| 03:31.51 | vasc | same thing happened |
| 03:31.59 | vasc | mind you it does generate the makefiles |
| 03:32.03 | starseeker | try clearing the cache |
| 03:32.04 | vasc | its just it spews those warnings |
| 03:32.09 | vasc | ok, where is that? |
| 03:32.23 | starseeker | in the gui I believe it's under the file menu |
| 03:32.26 | vasc | hm |
| 03:32.50 | starseeker | yeah, those warnings aren't showstoppers |
| 03:33.44 | vasc | did file->delete cache |
| 03:34.01 | vasc | but same warnings. except now it's spending time detecting stuff in the middle of the warnings |
| 03:34.12 | starseeker | usually we try to keep up with new cmake policies, but 0026 is a challenge |
| 03:34.24 | starseeker | vasc: you've updated to 65637? |
| 03:34.48 | vasc | At revision 65637. |
| 03:34.51 | vasc | yep |
| 03:34.53 | starseeker | huh |
| 03:35.02 | starseeker | I'll have to try 3.0.2 |
| 03:35.18 | vasc | yeah it's the one i use. it came with ubuntu |
| 03:35.57 | starseeker | nods |
| 04:11.24 | Notify | 03BRL-CAD:starseeker * 65638 brlcad/trunk/CMakeLists.txt: Back up policy simplification - not working as expected |
| 04:34.17 | *** join/#brlcad ejno (~ejno@unaffiliated/kazaik) | |
| 06:48.25 | Gurwinder | brlcad: Are you free now? |
| 06:55.27 | *** join/#brlcad Izakey (~Isaac@41.205.22.55) | |
| 07:02.35 | Gurwinder | Izakey: Hello |
| 07:27.43 | *** join/#brlcad dracarys983 (dracarys98@nat/iiit/x-abfthvuqksrwdlmz) | |
| 08:01.31 | *** join/#brlcad dracarys983 (dracarys98@nat/iiit/x-fflhynkiaimbhwgt) | |
| 08:51.33 | *** join/#brlcad teepee-- (bc5c2134@gateway/web/freenode/ip.188.92.33.52) | |
| 09:02.39 | *** join/#brlcad kintel (~kintel@unaffiliated/kintel) | |
| 10:08.49 | *** join/#brlcad kintel (~kintel@unaffiliated/kintel) | |
| 10:11.26 | *** join/#brlcad kintel (~kintel@unaffiliated/kintel) | |
| 11:28.45 | *** join/#brlcad kintel_ (~kintel@unaffiliated/kintel) | |
| 13:42.34 | Notify | 03BRL-CAD:starseeker * 65639 (brlcad/trunk/src/libanalyze/raydiff.c brlcad/trunk/src/libged/shape_recognition.cpp): Add a basic valid/not-valid check using raytracing for the csg conversion - need to figure out why parallel tree building isn't working in libanalyze... |
| 13:48.23 | Notify | 03BRL-CAD:starseeker * 65640 (brlcad/branches/embree/AUTHORS brlcad/branches/embree/CHANGES and 117 others): Update to r65639 |
| 13:54.28 | Notify | 03BRL-CAD:starseeker * 65641 (brlcad/branches/embree/CMakeLists.txt brlcad/branches/embree/db/CMakeLists.txt and 2 others): Add a flag to allow disabling building of STEP pieces |
| 14:03.57 | *** join/#brlcad Izakey (~Izakey@41.205.22.51) | |
| 14:15.47 | *** join/#brlcad milinda (~milinda@124.43.80.119) | |
| 14:25.34 | Notify | 03BRL-CAD Wiki:Sean * 9004 /wiki/Google_Summer_of_Code/2015: remove the template and student that didn't pass midterm evaluation |
| 14:27.58 | brlcad | notes that this year's gsocers are apparently the worst (generally speaking) at IRC to date... :( |
| 14:28.10 | brlcad | so many drive-by disconnects |
| 14:49.44 | Notify | 03BRL-CAD:carlmoore * 65642 brlcad/trunk/include/rt/geom.h: remove a trailing whitespace character I overlooked yesterday |
| 14:50.45 | Izakey | Hi brlcad |
| 15:00.28 | brlcad | hi Izakey |
| 15:02.25 | Izakey | Have an issue https://paste.kde.org/pab6nw3ai with building BRL-CAD, Any help ? |
| 15:03.29 | Izakey | Think someone needs to advise students on importance of IRC |
| 15:08.13 | *** join/#brlcad sofat (~androirc@223.225.216.34) | |
| 15:08.24 | brlcad | sofat: hang around, we can talk in a bit :) |
| 15:08.38 | sofat | Ok |
| 15:08.55 | Izakey | waves at sofat |
| 15:15.37 | sofat | So tell me any updates for website |
| 15:32.34 | Notify | 03BRL-CAD Wiki:Deekaysharma * 9005 /wiki/User:Deekaysharma/logs: |
| 15:36.04 | Notify | 03BRL-CAD:starseeker * 65643 brlcad/trunk/src/libanalyze/raydiff.c: Need resource initialization before calling rt_gettrees. Something odd here - the original NIST2 brep takes much longer to prep with rt_gettrees than with rt_gettree alone... |
| 15:51.14 | sofat | brlcad, so we will talk now ? |
| 15:52.58 | Izakey | sofat Please use IRC more during development. Open source development is more about communication than code :) |
| 15:53.38 | sofat | Okay |
| 15:54.28 | Izakey | Code comes and goes sofat but community lives on longer |
| 15:54.42 | Izakey | hope you get it sofat |
| 15:55.31 | sofat | Yes got it |
| 15:57.41 | sofat | So what is my mistake ?? |
| 15:57.57 | sofat | I am doing anything wrong ?? |
| 15:58.28 | Notify | 03BRL-CAD:starseeker * 65644 (brlcad/trunk/src/libged/brep.c brlcad/trunk/src/libged/ged_private.h brlcad/trunk/src/libged/shape_recognition.cpp): Add a way to proceed with and without verification - should probably make this a user settable value (maybe both the multiplier and an absolute tolerance?) |
| 15:58.50 | Izakey | No sofat , Just asking you to be on and use IRC more during development :) |
| 15:59.46 | brlcad | sofat: now that you have a .bz account, you should learn how to use screen+irssi |
| 16:00.04 | brlcad | so you don't have to keep detaching from IRC |
| 16:00.11 | brlcad | it less you remain connected 24-7 |
| 16:01.26 | sofat | Ok |
| 16:01.27 | brlcad | simple tutorial: open a terminal, log in to your account, run 'screen', run 'irssi' and join freenode, then close your terminal window, then log back into .bz, and run 'screen -x yourusername' |
| 16:01.37 | Notify | 03BRL-CAD:starseeker * 65645 brlcad/trunk/src/libged/shape_recognition.cpp: Definitely need something other than an arbitrary constant multiplier here... for some objects this isn't enough, for others it's major overkill. |
| 16:02.13 | sofat | Ok |
| 16:02.20 | sofat | Thanks |
| 16:02.39 | *** join/#brlcad milinda (~milinda@112.134.125.254) | |
| 16:02.50 | Izakey | <PROTECTED> |
| 16:02.51 | sofat | I will try this . |
| 16:04.19 | sofat | This is for me ? |
| 16:09.34 | sofat | Izakey, this link for me ? |
| 16:10.23 | brlcad | sofat: the link is for everyone, it's a build failure |
| 16:10.57 | brlcad | if you don't have a suggestion, then you could answer and say that -- if you do, you might be able to help |
| 16:11.05 | Izakey | Thanks brlcad |
| 16:11.46 | sofat | Ok |
| 16:13.17 | sofat | brlcad, you checked my website i have done language work so you want any changes ? |
| 16:13.47 | brlcad | sofat: yeah.. it's in the right direction |
| 16:14.12 | sofat | Ok now this part is done |
| 16:14.14 | brlcad | but few changes -- include both the name and flag |
| 16:14.23 | sofat | Ok |
| 16:14.29 | sofat | I will do |
| 16:14.42 | Izakey | What's the link to the website ? |
| 16:14.52 | brlcad | the google-drop-down you had was better, just needed flags --- that's why I sent you those links |
| 16:16.10 | sofat | Where is drop down there is only flags |
| 16:17.30 | brlcad | I know |
| 16:17.41 | brlcad | that's no good |
| 16:18.05 | brlcad | sofat: Izakey asked you a question... |
| 16:19.17 | brlcad | it looks like it's not responding right now |
| 16:19.27 | brlcad | he'll probably ping-timeout |
| 16:19.41 | sofat | There is many flags so i use show hide effect in juery |
| 16:19.52 | sofat | Jquery |
| 16:20.14 | brlcad | I know, its a huge wall of flags -- nobody knows what all those flags are |
| 16:21.41 | *** join/#brlcad gurwinder (75dcabb9@gateway/web/freenode/ip.117.220.171.185) | |
| 16:22.21 | Izakey | Hi gurwinder |
| 16:22.29 | gurwinder | brlcad: sorry I have to leave IRC because thats my time to go on physical training |
| 16:22.30 | sofat | So you want to show all flag without drop down i am right ?? |
| 16:22.44 | gurwinder | Izakey: Hi |
| 16:23.27 | Izakey | gurwinder, That's all right. Make sure however, that you be on iRC when working on your GSoC project :) |
| 16:24.06 | gurwinder | Ok, I will keep that in mind :) |
| 16:24.30 | Izakey | brlcad, when running cmake, I get some warnings |
| 16:24.57 | brlcad | gurwinder: just because *you* go somewhere does not mean that your IRC client must disconnect |
| 16:25.20 | brlcad | Izakey: yes, I know -- starseeker made some changes that are noisy |
| 16:25.28 | Izakey | Warings like : This warning is for project developers. Use -Wno-dev to suppress it. |
| 16:25.51 | brlcad | those are safe to ignore (you can add -Wno-dev to cmake line) |
| 16:26.02 | brlcad | sofat: no, that is not right |
| 16:26.04 | gurwinder | brlcad: I disconnect by thinking that if I didn't reply it put bad impression |
| 16:26.22 | sofat | Ok |
| 16:26.23 | brlcad | sofat: a) show language name WITH all flags |
| 16:26.54 | gurwinder | brlcad: I will keep that in mind in future |
| 16:26.58 | brlcad | sofat: b) use the links I gave you for customizing the google-translate drop-down |
| 16:27.17 | brlcad | sofat: c) use the better icons I gave you links for |
| 16:27.51 | brlcad | gurwinder: I don't understand -- if you didn't reply to what? |
| 16:28.00 | brlcad | you mean if I answer and then you don't reply to my answer? |
| 16:28.58 | sofat | Ok i will do this as soon as possible |
| 16:29.05 | gurwinder | brlcad: yes if I didn't reply to your answer |
| 16:29.18 | brlcad | and why would you not answer? :) |
| 16:31.31 | Izakey | feels frustrated about this build issue |
| 16:31.45 | gurwinder | brlcad: haha confusing you? I am telling that if I am online on IRC and if I am outside like I was today and disconnected my IRC |
| 16:32.33 | gurwinder | And you put a message for me and I was not able to reply to you that make bad impression |
| 16:32.48 | brlcad | gurwinder: you're not confusing me, I'm trying to get you to understand how to use IRC appropriately... |
| 16:33.12 | brlcad | you clearly can't reply if you fully disconnect from IRC |
| 16:33.17 | brlcad | and that's my point |
| 16:33.23 | brlcad | don't disconnect your IRC client |
| 16:33.33 | gurwinder | brlcad: Oh ok got it |
| 16:33.37 | brlcad | for that, you probably need a better IRC client, the web interface is only meant to be temporary |
| 16:33.51 | brlcad | if you're afraid of missing my repsonse when you get back, then you're using IRC wrong |
| 16:34.05 | brlcad | and/or need to learn how to use "/last -hilight" |
| 16:34.57 | brlcad | IRC is not meant to require your full attention all the time, that's why when I write gurwinder that it is highlighted to you differently (at least most real IRC clients do this well) |
| 16:35.11 | brlcad | you can also set up triggers to watch for that will cause additional hilighting |
| 16:35.56 | brlcad | like if you want to know when anyone says anything about "web", you can set that up as a highlight and revisit discussions when you get back to IRC |
| 16:36.13 | brlcad | most that use IRC productively remain connected 24/7 |
| 16:36.59 | archivist | and they dont use flaky wifi connections |
| 16:37.02 | Stragus | Most IRC clients also log everything so you can check if you have missed anything, or what was discussed days ago |
| 16:37.58 | brlcad | exactly |
| 16:38.30 | gurwinder | brlcad: Thats great. I will improve myself. Thanks for good suggestion. :) |
| 16:38.48 | Izakey | They log discussions when you tell them to - not by default |
| 16:38.50 | brlcad | gurwinder: FYI, i'll be sending an announcement out later, but being connected to IRC while working on GSoC is going to be required for the second half of GSoC |
| 16:39.27 | brlcad | Izakey: they log internall.. not all write it out to a file for you without you telling them |
| 16:39.52 | gurwinder | brlcad: Ok, I will remain connected when I'm on work for GSoC. |
| 16:40.13 | brlcad | meta-p and meta-n (esc key == meta) with take you forward and backward through your backlog |
| 16:40.26 | brlcad | gurwinder: that's a minimum requirement, everyone should be connected 24/7 |
| 16:40.41 | brlcad | we're collectively failing on communication this year in a big way |
| 16:40.42 | gurwinder | brlcad: need to discuss about next work |
| 16:41.04 | brlcad | and I blame myself for not establishing the importance of IRC earlier on during evaluations and selections |
| 16:41.31 | brlcad | gurwinder: sure, lets discuss |
| 16:41.50 | brlcad | Izakey: did blowing out the build dir and re-running cmake not work? |
| 16:42.10 | brlcad | Izakey: post the full transcript (from rm-rf through cmake to error) |
| 16:42.28 | Izakey | Yes it didn't. Google isn't either |
| 16:42.43 | gurwinder | brlcad: I have discussion with Izakey and I came to decision that I will go with g-pov export project |
| 16:43.12 | gurwinder | and after doing that I will do linuxcnc. Is it right? |
| 16:43.16 | *** join/#brlcad ih8sum3r (~ih8sum3r@122.173.51.91) | |
| 16:43.33 | brlcad | gurwinder: no right (partially) ;) |
| 16:44.17 | brlcad | gurwinder: I spoke about things with the linuxcnc folks and we've decided to let this opportunity pass |
| 16:44.35 | brlcad | so you can just focus on your original proposal, continue to work on the povray exporter |
| 16:44.47 | brlcad | no more cross-project collaboration |
| 16:45.50 | brlcad | gurwinder: that said, I'd still like to hear more from you on what happened, why it didn't work out |
| 16:46.14 | gurwinder | brlcad: ok, that sentence give me releif :P |
| 16:46.17 | brlcad | first, thank you for your efforts, for trying to accommodate a project, switch your plan, invest effort and energy |
| 16:46.42 | brlcad | we really did want a collaboration this year, and it was a big undertaking that was not planned well in advance |
| 16:47.26 | brlcad | I still think you would be qualified given what you've demonstrated with the povray work and your ability writing C code, so I'm left wondering what the problem(s) were |
| 16:47.51 | brlcad | what were the biggest challenges? |
| 16:48.33 | gurwinder | why it didn't work out? I think you are talking about linuxcnc right? |
| 16:49.00 | gurwinder | challenges? for povray or linuxcnc? |
| 16:49.58 | brlcad | blinks |
| 16:50.06 | brlcad | we're talking about linuxcnc |
| 16:50.21 | brlcad | why a project was not easy to establish |
| 16:50.39 | gurwinder | brlcad: ok, |
| 16:50.53 | gurwinder | first, according to me |
| 16:51.21 | Izakey | brlcad, Konrado told me it there was no access to documentation about a machine |
| 16:51.23 | brlcad | you've arguably been productive and are experienced with C and they have potential C projects, so I'm left wondering why finding a project was seemingly so difficult |
| 16:51.47 | gurwinder | its a project which requires knowledge and also some experiance of how to work with cnc machine |
| 16:52.11 | gurwinder | brlcad: No the part on which I was working is on python |
| 16:53.32 | gurwinder | I have tried to get in C code but I'm not able. So I decided to work on help page |
| 16:54.21 | brlcad | why not able? |
| 16:54.32 | gurwinder | which was well appriciated by developers. So I have done some work on help pages. Write help pages for stepconf |
| 16:54.38 | Izakey | brlcad, pastebin and kde Paste are down. |
| 16:54.49 | brlcad | ~pastebin |
| 16:54.49 | infobot | A "pastebin" is a web-based service where you should paste anything over 3 lines so you don't flood the channel. Here are links to a few: http://www.pastebin.com, http://pastebin.ca, http://channels.debian.net/paste, http://paste.lisp.org, http://bin.cakephp.org/; or install pastebinit with yum or aptitude. |
| 16:55.02 | brlcad | just not pastebin.com |
| 16:55.33 | Izakey | here is link to doc https://docs.google.com/document/d/1y6nxJr2zOsWgywcea8oX_VYn95KyxRr-02Zatq4nysU/edit?usp=sharing |
| 16:55.39 | ih8sum3r | Hey brlcad, I'm trying to install meteor on freeBSD 10.1. Due to no direct support I have used meteor bundle to install it. Right now I'm facing this error http://brlcad.org/wiki/File:Meteor_freeBSD_libm.so.6_error.png and following this tutorial http://grigio.org/meteorjs_freebsd_11_current/. I explored for the solution, and found that installing compact6x from ports may help. I did but it didn't worked out. Do you have any idea what is this? |
| 16:55.42 | brlcad | gurwinder: this isn't an evaluation of your work with them, I want to understand why it was difficult |
| 16:56.27 | gurwinder | brlcad: I was not able because it need to know how cnc machines are working. |
| 16:56.28 | brlcad | ih8sum3r: ditto comments to you too about needing to be on IRC more, discussing more .. not disconnecting from IRC |
| 16:56.52 | brlcad | ih8sum3r: just because your body steps away from the computer doesn't mean you need to disconnect from IRC ;) |
| 16:57.13 | brlcad | i'll be sending out a note later about this to everyone, so just a heads up that being on IRC is going to be enforced more in this second half |
| 16:57.39 | brlcad | gurwinder: I'm specifically remembering the tapping proposal idea .. it didn't really require any knowledge of the machine |
| 16:57.46 | Izakey | brlcad, There you go http://pastebin.ca/3062161. |
| 16:57.49 | brlcad | gurwinder: so what was the issue there? |
| 16:57.51 | *** join/#brlcad vasc (~vasc@bl13-100-5.dsl.telepac.pt) | |
| 16:58.25 | brlcad | ditto to vasc, heads up that being more available on IRC is an announcement that is going to get sent out to everyone |
| 16:59.06 | ih8sum3r | brlcad: Okay will take care of it :) |
| 17:00.21 | gurwinder | brlcad: But I found that it requires because thats the way to work properly and understand what the code does. |
| 17:03.08 | sofat | brlcad, if i use hover effect means when mouse over the flag and then language name highlight it is ok or not ? |
| 17:03.40 | brlcad | ih8sum3r: libm.so.6 is installed in compats |
| 17:04.12 | brlcad | you have to find where (presumably in npm) and how it's linking libm |
| 17:04.55 | brlcad | and either relink it so it uses the correct /lib/libm.so.5 or the /usr/compat/linux/lib/libm.so.6 |
| 17:05.21 | brlcad | gurwinder: how is it required? |
| 17:05.39 | brlcad | sofat: hovering is not good |
| 17:05.54 | brlcad | hovering leads to searching, and searching is bad |
| 17:06.03 | brlcad | (blindly searching) |
| 17:06.32 | brlcad | ih8sum3r: are you able to run npm? |
| 17:06.33 | sofat | Ok so i need list view which contain flag and name |
| 17:07.14 | brlcad | sofat: I gave you 6 links yesterday that showed how to do it (including 2 links to good flag resources) |
| 17:07.16 | ih8sum3r | brlcad: I checked in compats and found libm.so only. Let me check one more time. Yes I'm able to run npm but with sudo power. |
| 17:07.57 | *** join/#brlcad milinda (~milinda@112.134.0.219) | |
| 17:08.15 | brlcad | sofat: don't forget to learn screen+irssi |
| 17:08.35 | brlcad | sofat: seriously, try and learn it now not later .. it's affecting your productivity |
| 17:10.57 | gurwinder | brlcad: As i have discussed with community on it. They gave me some task for bigners. I afraid that C coding part is harder for bigneer as I didn't know much about linuxcnc |
| 17:12.01 | gurwinder | So I started linuxcnc from easy tasks. |
| 17:13.34 | brlcad | what makes it hard? |
| 17:15.11 | ih8sum3r | brlcad: I have encounter with a strange error, that I'm not able to checkout in my branch it remains in master always. In master I think meteor 0.8 version is present and mine is upgraded to the latest i.e 1.0.2 :-/ |
| 17:16.41 | Notify | 03BRL-CAD:ejno * 65646 brlcad/trunk/src/libgcv/conv/fastgen4/fastgen4_write.cpp: write CCONE1 records |
| 17:17.21 | brlcad | ih8sum3r: I don't understand what you're saying there -- if you have a git clone, then you should be able to checkout |
| 17:17.58 | brlcad | also the relevance of the versions of meteor is not apparent |
| 17:18.29 | brlcad | given there is no official port, you could try to get either version to work (and probably face different challenges) |
| 17:19.02 | brlcad | ih8sum3r: do you have a .bz account? |
| 17:19.24 | ih8sum3r | Yes I have. |
| 17:20.16 | brlcad | gurwinder: what makes it hard? |
| 17:21.26 | gurwinder | brlcad: Sorry, yes I'm trying to write I easy language so that I you can understand what I'm trying to say |
| 17:21.30 | brlcad | ih8sum3r: please explain? |
| 17:21.51 | ih8sum3r | Okay give me a moment. |
| 17:22.49 | gurwinder | brlcad: harder for me to understand the whole code then know how it works and then put myself on proper working. |
| 17:23.18 | brlcad | ih8sum3r: if you need something installed via sudo npm , you just have to ask |
| 17:24.30 | brlcad | gurwinder: yes, but why? I talked with the linuxcnc guys and they said they talked with you a lot and gave you specific guidance (much more than usual) |
| 17:24.48 | ih8sum3r | okay sure I will. Please give me a few minutes I'll explain you step by step, and which command I'm facing the error |
| 17:24.55 | brlcad | so why do you think it was it hard to understand the whole code? |
| 17:25.55 | brlcad | I can't see having access to a CNC machine really helping here... it frankly just makes things much more complicated as that'd be one more distraction to learn that wouldn't help you write code |
| 17:26.16 | brlcad | is their documentation lacking in some particular way? |
| 17:28.27 | gurwinder | brlcad: yes its true that they helped me very much. But if I frankly answer you then, I didn't want to start from that point which put me in troble in future in GSoC. So I have discussed with them |
| 17:28.36 | gurwinder | one of them is Chris Morley |
| 17:28.59 | Notify | 03BRL-CAD:ejno * 65647 brlcad/trunk/src/libgcv/conv/fastgen4/fastgen4_write.cpp: write a CCONE2 if the CCONE1 internal radii are zero |
| 17:30.02 | gurwinder | he told me to start from basics and then go for C or further deeper. |
| 17:30.40 | brlcad | it would not have put you in trouble in future gsoc |
| 17:30.49 | brlcad | so maybe there was also a communications issue |
| 17:31.38 | brlcad | the objective from the beginning was to work towards a small goal .. you would have only been in trouble if you didn't work or made zero progress |
| 17:34.30 | gurwinder | brlcad: Yes I have done and show progress from first day to them. |
| 17:34.45 | vasc | ok. i was already trying to be here more often. |
| 17:34.48 | gurwinder | I have added help pages make help button workable |
| 17:35.04 | brlcad | vasc: that's good, you can't be here too much ;) |
| 17:35.38 | brlcad | but there's been lots of communication issues this summer of code, more than any other, so some changes have to be made |
| 17:35.56 | vasc | being on different timezones doesn't help. |
| 17:36.03 | brlcad | gurwinder: again, i'm not really interested in what you actually did |
| 17:36.21 | brlcad | vasc: on IRC, that really is minimized if IRC is used properly |
| 17:36.38 | brlcad | which is part of the problem (IRC is not being used properly by nearly everyone) |
| 17:37.21 | brlcad | gurwinder: to clarfiy, I appreciate what you did -- but I really want to understand what made it difficult |
| 17:38.10 | brlcad | e.g., lack of example, lack of docs, lack of discussion, language issues navigating code, code complexity without support from their mentors, etc... |
| 17:38.22 | *** join/#brlcad milinda (~milinda@112.134.0.168) | |
| 17:38.48 | brlcad | I'm guessing, only you (and linuxcnc folks to a lesser extent) can really say why it was difficult |
| 17:39.08 | brlcad | maybe you just don't have enough programming experience to feel confident with their code base? |
| 17:39.12 | gurwinder | brlcad: yes lack of eaxmple, code complexity |
| 17:39.36 | ih8sum3r | Summary : |
| 17:39.38 | ih8sum3r | 1) Firstly, I ran this command : meteor build <my_app> This command will create a bundle of meteor app |
| 17:39.40 | brlcad | the tapping problem is a prime example -- that seemed very straightforward and simple to me |
| 17:39.41 | vasc | even if you know c reading someone else's code can be really daunting at first |
| 17:39.47 | gurwinder | and yes I didn't have that much experiance with code |
| 17:39.51 | vasc | especially if the codebase is big |
| 17:40.06 | ih8sum3r | 2). Then moved this bundle to virtual-machine (i.e in freeBSD). I encounter error while moving tar file so I pushed it to github and then clone and then untar it. |
| 17:40.07 | vasc | you have to abstract out of the big issues and focus on a small part of the code |
| 17:40.11 | vasc | or its just too daunting |
| 17:40.17 | brlcad | gurwinder: but you also didn't have much experience with brl-cad and was able to make progress with g-pov .. so what is the difference? |
| 17:40.26 | vasc | which tools are you using? are you using an IDE? |
| 17:41.09 | vasc | i was using vim but i switched to netbeans coz its a lot more practical to navigate the code |
| 17:41.30 | brlcad | our code is considerably more complex and bigger than theirs, and he didn't seem to have a problem making progress with brl-cad |
| 17:41.38 | brlcad | which leaves me wondering why it was difficult with linuxcnc |
| 17:42.34 | brlcad | ih8sum3r: you're running freebsd in a VM, why not on .bz? |
| 17:43.03 | gurwinder | brlcad: I was working on BRL-CAD from a year almost and thats enough time for me to understand how to work on it. |
| 17:43.47 | ih8sum3r | I haven't ever used freeBSD before so I gave a first try on VM. I'll move it right now to .bz :) |
| 17:44.09 | gurwinder | In Linuxcnc its another one for me with new coding so I don't want that I take too much time for it to do that C coding work. |
| 17:44.44 | gurwinder | Maybe others can found it easy :) |
| 17:44.50 | vasc | linuxcnc seems kinda like low level |
| 17:46.03 | vasc | ioctls and stuff |
| 17:46.04 | brlcad | gurwinder: okay, so you had a difference in exploration levels |
| 17:46.09 | vasc | i guess its a hardware control library |
| 17:46.13 | brlcad | and we did have a succinct comparable examples you could follow |
| 17:46.52 | brlcad | gurwinder: I'm also hearing that "you didn't want to do a project with them", I think |
| 17:46.56 | brlcad | is that true? |
| 17:47.42 | brlcad | otherwise "taking too much time for it to do that C coding work" makes no sense to me .. it's simply a 1-month project |
| 17:48.50 | gurwinder | brlcad: I didn't told them directly but I wonder when I told them like this :P |
| 17:49.16 | gurwinder | brlcad: but in the end I decided to complete g-pov export |
| 17:49.21 | vasc | lack of motivation? hm |
| 17:49.26 | brlcad | "I wonder when I told them like this" <-- do not understand |
| 17:49.33 | gurwinder | and then move further |
| 17:50.36 | gurwinder | Sorry I have taken alots of time of you to tell this ;) |
| 17:50.40 | brlcad | aaaand we come full circle back to irrelevant point |
| 17:51.05 | brlcad | yeah, we're still not getting to the heart of what made it difficult exactly |
| 17:51.36 | brlcad | other than what can be inferred like lacking motivation |
| 17:53.06 | brlcad | gurwinder: let me summarize and you tell me if anything is inaccurate since it doesn't sound like you understand what I'm trying to discuss with you |
| 17:54.25 | brlcad | I reached out to you (and others) to consider a linuxcnc project, you reluctantly agreed and began looking at their code and talking with their people |
| 17:54.42 | brlcad | a project however was not established |
| 17:54.57 | brlcad | the main reasons it was not established seem to be a combination of factors including: |
| 17:55.48 | brlcad | 1) deviating from your original proposal worried you that it would affect your gsoc evaluation |
| 17:56.34 | brlcad | 2) the linuxcnc codebase is complex with low-level calls, limited documentation, and seeminly limited examples to work with |
| 17:57.41 | brlcad | 3) you have no experience with linuxcnc and limited programming experience for learning their code base on the fly |
| 17:58.06 | *** join/#brlcad milinda (~milinda@124.43.115.180) | |
| 17:58.15 | brlcad | 4) there was a perception that you needed access to CNC hardware in order to be successful or productive |
| 17:58.30 | vasc | what did they make him do for the project anyway? |
| 17:58.42 | gurwinder | brlcad: correct |
| 17:58.43 | vasc | if you don't mind the question |
| 17:59.08 | brlcad | 5) you were not really motivated/interested in working on linuxcnc, especially the more daunting it seemed (it's fine to admit this) |
| 17:59.23 | vasc | well |
| 17:59.32 | brlcad | vasc: they didn't make him do anything |
| 17:59.33 | vasc | if he isn't motivated it would be nice to know exactly way |
| 17:59.37 | vasc | why |
| 17:59.46 | brlcad | we were trying to come up with a half-project proposal |
| 18:00.12 | Stragus | Working on linuxcnc sounds more fun when you know something about CNC in general |
| 18:00.22 | Izakey | brlcad, I think it looked like an optional project and optional projects aren't always taken seriously :) |
| 18:00.27 | gurwinder | brlcad: yes, all the above are true |
| 18:00.46 | vasc | it seems kinda fun to me. but is there are simulator at least? or a way to validate the output? |
| 18:00.49 | brlcad | indeed, motivation rationale would be something like 6) you did not perceive value in contributing to linuxcnc? |
| 18:01.07 | vasc | is there any |
| 18:01.10 | brlcad | Izakey: optional? |
| 18:01.38 | vasc | the thing is, was it the subject area, the library itself, the task he was going to work on, or something else? |
| 18:01.39 | Izakey | GSoC project was kinda mandatory brlcad |
| 18:01.49 | brlcad | you guys are missing some preliminary context that was discussed over e-mail with the cnc guys |
| 18:01.56 | Izakey | So LinuxCNC was looked upon as optional |
| 18:02.00 | brlcad | Izakey: this is a gsoc project |
| 18:02.34 | Izakey | may be missing something |
| 18:02.43 | brlcad | there was nothing optional about it -- he was going to stop working on project A (for BRL-CAD) after the first half and work on project B (for LinuxCNC) in the second half |
| 18:02.51 | brlcad | two half-projects, nothing optional about it |
| 18:02.55 | vasc | oh context switch |
| 18:03.01 | brlcad | reviews and evaluations separate |
| 18:03.11 | vasc | was there any connection between both tasks? |
| 18:03.25 | brlcad | the question is why a project B couldn't be devised |
| 18:03.27 | Izakey | That wasn't announced - again mentors had to be informed |
| 18:03.51 | brlcad | Izakey: eh? |
| 18:04.06 | ih8sum3r | brlcad: Following npm needs sudo to install : npm install fibers@1.0.1 in my repo : public_html/OGV/bundle/programs/server/node_modules. Can you please do so. |
| 18:04.07 | brlcad | it doesn't affect anyone except the student and his mentor |
| 18:04.16 | Izakey | I was under the impression that he had to work on his BRL-CAD project throughout and optionally contribute to LinuxCNC |
| 18:04.19 | brlcad | and it was discussed with them in the loop |
| 18:05.00 | brlcad | Izakey: so that's just a misunderstanding on your part, that was made clear to gurwinder when discussions were set up initially |
| 18:05.20 | brlcad | like I said, just missing some preliminary context |
| 18:05.24 | vasc | but was there a connection between the brl-cad and linuxcnc tasks or not? |
| 18:05.27 | brlcad | didn't mean for this to turn into a big discussion |
| 18:05.34 | Izakey | Initially, it had to be written down somewhere - proposal or something |
| 18:05.45 | brlcad | just trying to understand what made it difficult and what we can change so it's not difficult next time |
| 18:06.02 | brlcad | vasc: none whatsoever |
| 18:06.04 | Izakey | Not a big issue brlcad |
| 18:06.07 | vasc | that's no good |
| 18:06.28 | Izakey | let's dive back inot what hitches were experienced by students working on LinuxCNC |
| 18:06.35 | vasc | context switch bad for productivity |
| 18:06.37 | Izakey | s/inot/into |
| 18:06.46 | vasc | like in the preparation phase |
| 18:06.54 | vasc | he probably prepared for brlcad and not for linuxcnc |
| 18:07.05 | brlcad | vasc: he wasn't doing both simultaneously |
| 18:07.07 | Izakey | I think so too vasc |
| 18:07.19 | vasc | sure |
| 18:07.24 | vasc | but the timeline for project |
| 18:07.33 | vasc | you have preparation phase then coding and then evaluation |
| 18:07.38 | vasc | you needed another preparation phase |
| 18:07.42 | brlcad | it's irrelevant, the timelines were being (re)defined |
| 18:08.02 | brlcad | yes, and lack of preparation was completely accepted |
| 18:08.02 | vasc | what was the brlcad task? |
| 18:08.11 | brlcad | and taken into consideration scoping a new "half-project" |
| 18:08.34 | gurwinder | vasc: brlcad task is g-pov export |
| 18:08.41 | brlcad | the issue was basically that a half-project could not be scoped, even after weeks of discussions |
| 18:08.47 | vasc | you did that one from what i understand |
| 18:09.03 | vasc | well |
| 18:09.06 | vasc | the thing is |
| 18:09.17 | vasc | think if you are motivated about working on linuxcnc or not |
| 18:09.28 | vasc | if you are then think of something you would like to do with it |
| 18:09.48 | brlcad | yes... and that's exactly what I'm trying to get at here |
| 18:09.50 | brlcad | was it motivation? |
| 18:09.53 | brlcad | was it complexity? |
| 18:10.13 | brlcad | what / how can we improve |
| 18:10.24 | vasc | the thing he said is relevant |
| 18:10.24 | brlcad | or even better, what/how can linuxcnc improve |
| 18:10.30 | gurwinder | brlcad: Mostly motivation towards linuxcnc. |
| 18:10.33 | vasc | how can you measure that your work is doing something or not |
| 18:10.47 | Stragus | Motivation can overcome many other difficulties. :) But if gurwinder has no experience or interest with CNC, I can see the problem |
| 18:10.53 | vasc | its hard to work without seeing improved results as you work |
| 18:11.06 | vasc | he doesn't have a cnc machine so he can't see the output |
| 18:11.10 | vasc | i think that's his problem |
| 18:11.45 | brlcad | point taken, and entirely consistent with what was said above |
| 18:11.48 | brlcad | just not the whole picture |
| 18:11.56 | Izakey | vasc += 1 |
| 18:12.38 | vasc | is there a simulator? |
| 18:12.57 | vasc | and then there's the question if a simulator provides enough motivation |
| 18:13.50 | brlcad | it's sounding like the biggest issue was a lack of interest/motivation which became compounded with lacking experience, lacking familiarity, and overall percieved complexity |
| 18:14.02 | vasc | https://www.youtube.com/watch?v=PFdNbaBq760 |
| 18:14.16 | vasc | it seems there are simulators |
| 18:14.36 | brlcad | sure, but you really didn't even need that (remember that a really tiny project is being proposed) |
| 18:15.01 | Stragus | It's still a matter of contributing to software you can't use or test |
| 18:15.02 | brlcad | the C one discussed was basically "write a function that periodically backs out the bit" |
| 18:15.37 | vasc | sure but its kinda dry |
| 18:16.00 | brlcad | Stragus: that might be a concern to you, certainly .. I can come with all sorts of potential detractors :) |
| 18:16.20 | brlcad | the point was understanding gurwinder's specific issues |
| 18:16.35 | Stragus | Fine. :) I'm absolutely terrible at writing code when there's no motivation |
| 18:16.40 | vasc | me too |
| 18:16.47 | brlcad | e.g., did *he* find it dry? in which case I can give them feedback that it sounded boring or the impact was unclear |
| 18:16.57 | brlcad | who isn't? |
| 18:17.00 | vasc | unclear yes |
| 18:17.13 | brlcad | he was initially motivated, hence weeks of discussions |
| 18:17.13 | vasc | like why do you need to do that in the first place |
| 18:17.21 | brlcad | that was discussed |
| 18:17.26 | vasc | so he probably likes the idea of working in cnc then |
| 18:17.36 | brlcad | I'm really oversimplifying because you guys are overanalyzing without context :) |
| 18:17.46 | vasc | that's what humans do |
| 18:18.05 | vasc | anyway |
| 18:18.05 | brlcad | not all of them :P |
| 18:18.14 | vasc | from what i understand you want to salvage this somehow |
| 18:18.17 | brlcad | nope |
| 18:18.34 | vasc | my advice is start from scratch |
| 18:18.44 | vasc | figure out a task he wants to do |
| 18:18.49 | vasc | somewhere |
| 18:18.52 | brlcad | this was simply a post-mortem -- learn from what happened and try to institute changes so it's better next time if the exact same entry criteria were encountered |
| 18:18.53 | Stragus | likes how 4 individuals are debating gurwinder's motives, feelings and motivations ... without any knowledge of the situation or the person involved |
| 18:19.00 | vasc | oh ok |
| 18:19.05 | vasc | :-) |
| 18:19.15 | vasc | we can ask him then |
| 18:19.20 | brlcad | was :) |
| 18:19.40 | brlcad | the six points summarized seemed to fix, yes gurwinder? |
| 18:20.18 | Stragus | trades a 't' to brlcad against a 'x' |
| 18:20.23 | brlcad | he kept responding with what he did with them, not understanding the underlying motivations (or lack thereof) underpinning his actions |
| 18:20.37 | brlcad | s/fix/fit/ ;) |
| 18:20.48 | vasc | i thought you made 5 points |
| 18:20.55 | brlcad | the six points summarized seemed to fit your situation, yes gurwinder? |
| 18:21.40 | gurwinder | brlcad:yes |
| 18:22.21 | brlcad | then we're done :) |
| 18:22.26 | brlcad | gurwinder: thanks |
| 18:22.59 | gurwinder | brlcad: Thanks to you:) |
| 18:23.49 | brlcad | heh, I don't do anything around here except make things complicated ;) |
| 18:24.44 | vasc | i read his gsoc summary page so he was supposed to work on the machine cnc setup gui or something |
| 18:24.57 | Stragus | That does sound boring |
| 18:26.50 | brlcad | from my understanding talking with them, they were having problems discussing and making technical progress on other projects -- given the level of programming experience |
| 18:27.07 | brlcad | so they kept suggesting simpler and simpler topics |
| 18:27.34 | brlcad | the drill tapping problem was actually somewhat interesting to me, and seemed doable in a couple weeks |
| 18:28.09 | brlcad | you improve the bit life and machining tolerances if you back the bit up periodically when cutting material |
| 18:28.38 | brlcad | e.g., drilling a hole, it's what humans do holding hand drills -- pull back to extract the material |
| 18:29.32 | brlcad | doing that programmatically, automatically, was pretty cool -- they had demo videos, similar code refs, and a real need/value |
| 18:30.00 | brlcad | but he couldn't seem to even understand the problem domain, perhaps a language barrier issue |
| 18:30.19 | vasc | yeah probably |
| 18:30.20 | brlcad | which I'm sure doesn nothing for motivation... |
| 18:30.51 | Stragus | What's his first language? I frequently notice subpar english around here... |
| 18:31.15 | vasc | i used to be around my dad when he was fiddling in the garage with tools when i was a kid so i get the point |
| 18:31.17 | Stragus | (though it's also a second or third language for me) |
| 18:31.40 | vasc | he's indian from the name man |
| 18:32.12 | ih8sum3r | brlcad: Ping |
| 18:33.23 | brlcad | Stragus: there are several people participating this year that have limited english skills .. at least one that actively uses google translate on everything yet is somehow still able to make progress and hold a conversation |
| 18:33.41 | Stragus | :) Cool |
| 18:33.57 | vasc | maybe he doesn't have background to allow him to relate to it |
| 18:34.12 | Stragus | Yes, I wouldn't be very interested in CNC either |
| 18:34.13 | Izakey | An article should be written about that and published to ospo blog |
| 18:34.18 | vasc | i'm interested |
| 18:34.25 | brlcad | ~ask |
| 18:34.25 | infobot | Questions in the channel should be specific, informative, complete, concise, and on-topic. Don't ask if you can ask a question first. Don't ask if a person is there; just ask what you intended to ask them. Better questions more frequently yield better answers. We are all here voluntarily or against our will. |
| 18:34.55 | brlcad | Stragus: so have you noticed your code getting ripped apart? :) |
| 18:35.01 | vasc | i'm portuguese so english isn't my first language either |
| 18:35.09 | brlcad | wouldn't know it |
| 18:35.13 | Stragus | Which one? The ball pivoting deserved it |
| 18:35.28 | Stragus | I have always promoted a better approach and was pretty much ignored |
| 18:35.41 | brlcad | no, ball pivoting was outright yanked because .. patented! ugh |
| 18:36.13 | brlcad | well it's completely unusable now that particuarly legality came to light |
| 18:36.54 | Stragus | Yes, I heard. Maybe someone will now actually listen to my ideas for a viable approach |
| 18:36.55 | brlcad | the incremental decimation code |
| 18:37.18 | Stragus | Okay, why did you want to rip it apart? :) I think it's solid code |
| 18:37.21 | brlcad | it's hooked in and working |
| 18:37.24 | Stragus | Cool |
| 18:37.32 | brlcad | oh nothing too tragic |
| 18:37.40 | brlcad | a lot of dead code elimination |
| 18:37.59 | brlcad | and ton of changed needed to make it portabile |
| 18:38.10 | Stragus | Ah yes, removal of #if switches and experimental code everywhere |
| 18:38.17 | brlcad | pretty much only worked on like one platform out of the box (linux) |
| 18:38.24 | Stragus | Oh uh... |
| 18:38.26 | Stragus | hides! |
| 18:38.59 | brlcad | much of the asm that could be made portable is getting ripped / tested for portable C |
| 18:39.05 | Stragus | Besides portability issues, I really like the algorithms and performance, the best mesh decimation code I'm aware of |
| 18:39.16 | Stragus | Ah yes, mmatomic.h |
| 18:39.29 | brlcad | I think that's all gone now, or near to it |
| 18:39.46 | brlcad | threading model is getting converted |
| 18:40.11 | Stragus | mmthread.h was a thin wrapper so you would change the inner guts as desired |
| 18:40.27 | brlcad | I think he told me you used a thread interruption model just so you could peek at their status (% complete) |
| 18:40.50 | Stragus | It wasn't interrupting anything, just using atomics |
| 18:41.20 | brlcad | mm, that's not the story I heard, but I haven't looked at the code myself |
| 18:41.36 | brlcad | pausing threads |
| 18:41.56 | brlcad | or at least code-wise, you had calls in there that could do that given some condition/request |
| 18:42.14 | brlcad | anyways, that's all gotten / getting changed |
| 18:42.23 | brlcad | it is working and mostly working well |
| 18:42.27 | brlcad | gotten it to crash a few times |
| 18:42.39 | brlcad | (before all the changes) |
| 18:43.00 | Stragus | Looking at the code now. The only global barrier is there just to make sure all threads have started so that I can poke at their data |
| 18:43.09 | Stragus | If you remove that barrier check, you can have a race condition |
| 18:43.45 | Stragus | It's certainly not interrupting anything |
| 18:43.49 | brlcad | nods, sounds like what's being changed to a different threading setup |
| 18:44.28 | brlcad | could have misunderstood on my part, it was a brief discussion |
| 18:44.41 | brlcad | but there have been tons of commits |
| 18:44.50 | Stragus | I'll have to look it up |
| 18:44.52 | brlcad | making good progress turning it into a feature |
| 18:44.56 | Stragus | Cool |
| 18:45.12 | brlcad | way better than our old naive tolerance-based method |
| 18:45.58 | brlcad | did you ever profile how much gain your atomics provided on the algo? |
| 18:46.22 | Stragus | Hum yes. I remember it was significant |
| 18:46.32 | Stragus | Can't quite remember what "significant" meant back then |
| 18:46.35 | brlcad | heh, what's significant to you |
| 18:46.59 | brlcad | for decimation, it's got to be pretty huge to make a difference |
| 18:47.08 | Stragus | I think that on machines with many cores (like 64), it was big |
| 18:47.10 | brlcad | 11s vs 20s is not interesting |
| 18:47.17 | brlcad | 11s vs 200s is interesting ;) |
| 18:47.21 | Stragus | Without atomics, it stopped scaling |
| 18:48.11 | brlcad | 0.2s vs 5s is not "very" interesting, but 0.2s vs 50s is .. |
| 18:48.17 | *** join/#brlcad deepak (~deepak@122.173.51.91) | |
| 18:48.29 | brlcad | basically does it make small models no longer interactive if asm is ripped out |
| 18:48.45 | brlcad | or is this like a sub-order-of-magnitude tweaking |
| 18:48.50 | Stragus | It's a matter of scalability with the count of cores |
| 18:48.57 | Stragus | Remove atomics on a single core, who cares |
| 18:49.12 | Stragus | Remove atomics on 64 cores, and it may be 10x slower (can't remember what it was) |
| 18:49.25 | brlcad | we'll have to test that |
| 18:49.37 | Stragus | This is an algorithm based on lock-free multithreaded hash tables |
| 18:49.40 | brlcad | though that still might not matter then |
| 18:50.28 | Stragus | I see the MD_CONFIG_ATOMIC_SUPPORT switch, to use spin locks instead of atomics everywhere |
| 18:50.43 | brlcad | it'll depend on context, 10x slower than what baseline will matter |
| 18:51.00 | brlcad | yeah, he saw that |
| 18:51.54 | Stragus | Why would you want to remove atomics? Portability? |
| 18:52.05 | brlcad | basically we have to characterize the performance gain with the maintenance cost .. portable asm is pretty much non-existent, so it's generally really costly to make pervasively cross-platform -- the gain has to be huge |
| 18:52.07 | Stragus | At least make them optional, that's the whole point of MD_CONFIG_ATOMIC_SUPPORT |
| 18:52.44 | Stragus | When I write platform-specific code, I always code a portable fallback path, like that switch |
| 18:52.45 | brlcad | it's got a cost whether it's enabled or not |
| 18:52.59 | brlcad | we take that into consideration |
| 18:53.09 | Izakey | brlcad, I'd apprecaite it if you look at the paste and suggest some ideas ;) |
| 18:53.14 | Stragus | All right. But the algorithm was really designed to be lock-free through atomics |
| 18:53.27 | brlcad | Stragus: like I said .. "ripped" |
| 18:53.29 | brlcad | :) |
| 18:54.36 | vasc | i think there are gnu c extensions for some of that |
| 18:54.38 | Notify | 03BRL-CAD:lbutler * 65648 brlcad/branches/embree/src/ert/ert.cxx: We are shooting our first embree ray on BRLCAD geometry |
| 18:54.40 | brlcad | I'm half-kidding, we'll just have to see what the performance looks like |
| 18:55.17 | Stragus | Darn, so you guys tore out all the elegance of the algorithms used for "ease of maintenance" :p |
| 18:56.08 | brlcad | vasc: and on intel compiler, embarcadero compiler, ibm compiler, llvm, msvc? .. we historically value extreme portability very highly, more than most. :) |
| 18:56.08 | Stragus | Pthread spin locks are still just an int32_t, but don't go replacing them with mutexes taking 80 bytes, memory usage will be catastrophic |
| 18:56.32 | brlcad | Stragus: not yet, still baselining performance -- or at least it's mid-tearing |
| 18:56.44 | vasc | ah platform compatibility is overrated. only x86 and arm matter. rest is irrelevant. |
| 18:57.11 | brlcad | there's a reason brl-cad has survived longer than I have :) |
| 18:57.34 | brlcad | over the past three decades I could have said that same statement for at least three different architectures |
| 18:57.59 | brlcad | and they inevitably died |
| 18:58.02 | vasc | well x86 is nearly as old as i am |
| 18:58.12 | brlcad | i frankly doubt x86 would have survived without microsoft |
| 18:58.31 | Stragus | I would rather add support for new archs in mmatomic.h than obliterate performance |
| 18:59.27 | brlcad | Stragus: there's no way you would perform all the long-term maintenance involved in supporting and maintaining portability -- it's just not what you do (no motivation, heh) |
| 18:59.28 | Stragus | And when C gets native atomics, mmatomic.h could just wrap then with a tiny performance impact |
| 18:59.52 | brlcad | especially all the build system management and support for platforms as changes come about |
| 19:00.23 | Stragus | (C atomics would have issues with spin locks with the special "NOP" encoding meant to switch to the other thread in hyperthreading processors, and other very small such issues) |
| 19:01.21 | vasc | so you can't use stdatomic? |
| 19:02.15 | brlcad | if the atomics get ripped out and it's only double-digit-% slower through 32 cores, it won't really have any discernable impact on the feature (which really is what this is all about) |
| 19:02.25 | Stragus | It's C code, and C11 is supposed to support native atomics. Not that BRL-CAD would demand C11 before 2025 anyway :p |
| 19:03.07 | brlcad | pfft, maybe 2020 |
| 19:03.36 | Stragus | I suppose you also throw out all traces of SSE? |
| 19:03.48 | brlcad | don't know |
| 19:04.11 | brlcad | we have other SSE code, so that bit doesn't add much to maintenance complexity |
| 19:04.19 | brlcad | there are already build system checks and it's easy to toggle off |
| 19:04.30 | brlcad | and hasn't demonstrated much of a maintenance cost over time |
| 19:04.33 | Stragus | Okay. |
| 19:04.37 | brlcad | the code duplication is annoying |
| 19:04.44 | brlcad | s/code/logic/ |
| 19:04.48 | vasc | imo sse is a waste. |
| 19:04.58 | Izakey | brlcad, did Vladbogo finish the Qt project |
| 19:05.08 | brlcad | Izakey: define finish |
| 19:05.17 | Izakey | ? |
| 19:05.19 | vasc | intel obsoletes and supersedes those instructions sets so quickly why bother... |
| 19:05.26 | Stragus | A "waste"? A free 3x performance boost? |
| 19:05.35 | vasc | well its like a said |
| 19:05.37 | brlcad | Izakey: what do you mean by "finish the Qt project"? |
| 19:05.49 | Stragus | It may become "obsolete" but it still runs, even if there's the fancy new AVX |
| 19:05.49 | vasc | that's why i went in to opencl anyway |
| 19:06.13 | brlcad | there were two Qt efforts, related by distinct and specific in focus |
| 19:06.15 | vasc | you get the performance and you can ignore the flavor du jour vector instruction |
| 19:06.19 | brlcad | s/by/but/ |
| 19:06.40 | Stragus | vasc, that only works for very simple and trivial parallelization |
| 19:06.50 | Izakey | Is BRL-CAD ready to fully transition to Archer instead of dabbling between mged and archer brlcad ? |
| 19:07.10 | vasc | it's good enough for what i've been using it for |
| 19:07.24 | vasc | its a lot more complicated than sse in a lot of ways |
| 19:07.48 | vasc | opencl is c with vector extensions basically |
| 19:07.54 | Stragus | Try to get OpenCL to output phminposuw instructions :p |
| 19:08.08 | brlcad | Stragus: I claim most problems can be implemented with simple and trivial parallelization terms, and it's actually a VERY GOOD THING to do them that way |
| 19:08.26 | Stragus | Or even movmskps |
| 19:08.27 | brlcad | easier for other devs to understand the logic, easier to maintain, easier to debug ... |
| 19:08.50 | vasc | there are libraries that can do that on arbitraly length vectors |
| 19:09.13 | Stragus | brlcad, if you don't mind lower performance, yes |
| 19:09.20 | vasc | well |
| 19:09.31 | vasc | i expect the compiler to optimize that and if it doesn't i don't care anyway |
| 19:09.49 | Stragus | Right. I care about performance a lot more than this |
| 19:09.54 | vasc | is it that much more efficient than using multiple ops? |
| 19:09.59 | Stragus | Oh yes |
| 19:10.40 | vasc | or this could be a CISC vs RISC like issue |
| 19:14.20 | brlcad | Stragus: indeed, that is the issue -- performance is secondary to maintainability when involving more than one dev, which is inevitable |
| 19:14.23 | brlcad | (the author eventually moves on, gets bored, doesn't have time/motivation, dies) |
| 19:15.13 | brlcad | you don't care if it's maintainable because you're willing to maintain it now (for your limited environment) and when you're not willing, you just won't care |
| 19:15.43 | Stragus | That's why there's an #if to handle all these non-supported platforms/compilers/whatever |
| 19:15.50 | vasc | i'm more concerned of trying to compile it in 5-10 years and finding it doesn't work anymore |
| 19:16.00 | Stragus | It will work, it will fall back on the slow #else path |
| 19:16.05 | brlcad | Stragus: that still doesn't extrapolate to maintenance |
| 19:16.11 | brlcad | the code will eventually change |
| 19:16.24 | Stragus | Then fix both branches of the #if ;) |
| 19:16.26 | brlcad | and now I have N versions that have to be updated that have cost*N (really more) |
| 19:17.00 | brlcad | there's plenty of history on that bitrot pattern being long-term unsustainable |
| 19:17.25 | Stragus | You can also cut away the #if when it has become irrelevant |
| 19:17.40 | brlcad | which is the point that it works and is fast enough ;) |
| 19:17.45 | vasc | the problem sometimes is that one of the sides of the #if doesn't get tested |
| 19:17.53 | vasc | and eventually goes stale and doesn't work |
| 19:17.58 | vasc | but is still there |
| 19:18.10 | vasc | and no one wants to take it out |
| 19:18.37 | vasc | and you don't refactor it coz you can't because it would break the #if that no one uses and doesn't work anyway |
| 19:18.49 | vasc | shit like that |
| 19:19.01 | Stragus | You can always that disable that #define permanently if it becomes unsupported |
| 19:20.35 | Stragus | Eh well. :) I understand your points, but a programmer is also an artist, and to see an elengant and efficient piece of code made inferior for... poor reasons (from my point of view) is rather sad |
| 19:21.06 | Stragus | elegant* |
| 19:21.22 | brlcad | except even the time to debug the failed build when it eventually became unsupported, having to evaluate the cost to inspect/analyze that old code (which by that point it would be), has a signficant cost in itself, especially for secondary authors |
| 19:22.15 | brlcad | at that point, it's just old broken code in a large ecosystem of code, one small feature out of thousands |
| 19:22.17 | Stragus | I guess the code should document clearly when some switches can be safely disabled, whenever desired or have become irrelevant |
| 19:23.03 | brlcad | heh, that's like planting a timebomb |
| 19:25.02 | Stragus | hides his CUDA code from brlcad, where some PTX assembly somewhere is relying on the undocumented behavior of a specific generation of CUDA hardware |
| 19:25.04 | brlcad | if I simply scale performance two orders of magnitude (approximately 12 years), these performance adjustments and architecture linkages will be pretty much irrelevant, it's almost a given |
| 19:25.53 | Stragus | 3x faster is always 3x faster, it doesn't become irrelevant |
| 19:26.04 | Stragus | You can just handle more data |
| 19:27.35 | brlcad | sure it does, because of new architecture pipeline that provided a new set of instructions or made a whole method of "coherent" calculation obsolete |
| 19:28.07 | Stragus | Fine, these new instructions (let's call them AVX!) are now 6 times faster. But the old stuff is still 3x faster than plain C |
| 19:28.43 | ih8sum3r | brlcad: Following npm needs sudo to install : npm install fibers@1.0.1 in my repo : public_html/OGV/bundle/programs/server/node_modules. |
| 19:28.52 | brlcad | or a new compiler that takes the 0.9x code and makes it 5x faster .. or a plenty of other imaginable scenarios 12 years from now that will make the *code* irrelevant |
| 19:29.26 | brlcad | ih8sum3r: on it |
| 19:29.49 | ih8sum3r | okay |
| 19:30.10 | Stragus | brlcad, that's a possible scenario, and that's why we should always keep a plain C portable version of the code |
| 19:30.25 | Stragus | hugs the preprocessor |
| 19:30.35 | brlcad | at the end of the day, it will still be far more important to a user that the little feature in their app that takes a mesh and simplifies it for them is robust and easy to use, regardless of it taking 1s vs 5s |
| 19:30.58 | Stragus | With the meshes Lee was managing, it was a matter of minutes |
| 19:31.04 | brlcad | more than likely, an entirely different decimation algorithm will get coded up that has fantastical properties and it all becomes moot |
| 19:31.10 | Stragus | Hence the optimized multithreaded lock-free algorithms |
| 19:31.43 | brlcad | if it's during export, nobody cares |
| 19:32.10 | brlcad | they care only LONG after it's tightly integrated into their pipeline of activities and is repeated (usually for months, years) |
| 19:32.23 | brlcad | a one-off export that takes minutes, literally .. nobody cares |
| 19:32.36 | brlcad | they care when it doesn't work! |
| 19:33.01 | brlcad | different value system from devs |
| 19:33.06 | Stragus | Right. In Lee's code, it was to convert CSG meshes to triangles after raytracing, so performance mattered |
| 19:33.13 | Stragus | You don't want to wait 10 minutes to open a file |
| 19:34.06 | brlcad | except that was also for an analysis purpose which I would have argued that I don't want decimation until I can prove it has no analytic impact :P |
| 19:34.26 | brlcad | performance for the sake of performance without scientific justification |
| 19:34.51 | brlcad | extraordinary claims require extraordinary proof, which he did not do |
| 19:35.14 | brlcad | heck, he didn't do any |
| 19:36.06 | Stragus | I believe good mesh decimation was "okay" there, but ball pivoting was catastrophic |
| 19:36.22 | Stragus | An algorithm not guaranteed to generate watertight meshes... for analysis... |
| 19:36.53 | Stragus | wrote the code but isn't responsible for that |
| 19:37.15 | brlcad | no way that "okay" was anything more than visually inspected |
| 19:37.33 | brlcad | which is not in any way scientific for the given problem domain :) |
| 19:38.06 | Stragus | Point accepted :) |
| 19:38.14 | ih8sum3r | brlcad: I have read following quote on official meteor docs "(The current release of Meteor [1.1.0.2] has been tested with Node 0.10.36.)". Will this cause any kind of conflict, as our node version is 0.12.6? |
| 19:38.32 | brlcad | geometrically, I did extensive studies that helped to understand that tessellation+decimation as currently implemented is a guaranteed mass loss because of the techniques being used |
| 19:38.42 | brlcad | and that mass loss is highly biased towards small components |
| 19:38.56 | Stragus | brlcad, ah yes, that's interesting |
| 19:39.03 | brlcad | so if you have small important components losing mass, that could be dramatically influencing analytic results |
| 19:39.31 | brlcad | does it matter? nobody has studied this but it geometrically and numerically is signficiant |
| 19:39.38 | Stragus | nods |
| 19:40.52 | brlcad | on some "real" models, I was seeing about 3-5% mass loss overall iirc |
| 19:41.17 | Stragus | Weird. I was guessing 1-2%, but that's still pretty high |
| 19:41.18 | brlcad | (again biased towards the small curvy components like .. fuel lines) |
| 19:42.05 | brlcad | that was amortized, the distribution was huge with some (really small) components seeing a 50% mass loss |
| 19:42.36 | Stragus | Weird. The fuel line was becoming a 3 sided prism or what? |
| 19:43.04 | brlcad | is speaking abstractly for understanding purposes |
| 19:43.33 | Stragus | Right. I just don't think my mesh decimation would do that, unless the original point clouds wasn't dense enough |
| 19:43.49 | brlcad | loss of detail/resolution, aggregate interior edges chop of mass quickly on small objects (especially curvy and thin ones) |
| 19:44.04 | brlcad | s/chop of/chop off/ |
| 19:44.37 | Notify | 03BRL-CAD:brlcad * 65649 brlcad/trunk/src/librt/primitives/datum/datum.c: update copyright to inception, even though it was derived from the template. |
| 19:44.49 | vasc | keeps trying to understand this piece of code but it seems to be fairly dense. |
| 19:45.04 | vasc | ah what the hell i'll just program as i was a robot and to hell with understanding it |
| 19:45.32 | brlcad | heh |
| 19:45.42 | brlcad | beep boop, what code? |
| 19:46.01 | vasc | its the scenegraph traversal |
| 19:46.11 | brlcad | if you're on the weaver, you might want to check out the .. oh okay :) |
| 19:46.21 | vasc | no thankfully i'm not working on that yet |
| 19:46.31 | vasc | this is the "simple" bit |
| 19:46.59 | brlcad | I frankly think you should just focus on traversal, plan for that being it |
| 19:47.15 | brlcad | dispatch and evaluate in bundles from the front |
| 19:47.25 | brlcad | let the weaver and intersections happen serially |
| 19:47.28 | vasc | i'm still trying to do it without the bundles at first |
| 19:47.30 | brlcad | (they can be next) |
| 19:47.35 | vasc | well |
| 19:49.22 | vasc | this code is so neat and lasagnified that i'm having trouble simplifying some things without rewriting it all |
| 19:50.06 | brlcad | mm. lasagna |
| 19:50.11 | brlcad | so hungry |
| 19:50.42 | vasc | its nicely multilayered and abstracted |
| 19:50.50 | vasc | shame is the abstraction isn't the one i actually want to use |
| 19:51.17 | vasc | something like that |
| 19:51.25 | Stragus | At least he said lasagnified and not spaghettified, so he's not poking my raytracing scene graph code :p |
| 19:51.28 | brlcad | I think that's the first nice thing you've said about it :) |
| 19:52.05 | vasc | that's the pasta theory of software |
| 19:52.27 | vasc | there's spaghetti code, lasagna code, and ravioli code. |
| 19:53.00 | Stragus | My spaghetti code is actually fettucini code, due to thick SSE/AVX parallelism |
| 19:53.03 | brlcad | gives in and goes to get some food |
| 19:56.16 | vasc | oh man... |
| 19:56.41 | vasc | now i get it. a cutter is kinda like an iterator |
| 19:57.06 | vasc | hm no |
| 19:58.25 | vasc | man is this for storing the whole traversal tree? jesus |
| 19:59.25 | Stragus | hands vasc some tasty spinash, horse meat and mushroom sauce to go with that lasagna |
| 20:01.45 | brlcad | only the finest thorobreds |
| 20:01.54 | vasc | oh this is a nice and generic structure that allows you do use grids inside kd-trees and shit like that |
| 20:02.10 | vasc | the question is: is this actually useful or not. i would guess probably not. |
| 20:02.40 | vasc | it probably sounded like a good idea at the time. |
| 20:02.47 | vasc | reminds me of my first ray tracer... |
| 20:06.07 | vasc | c++ dumbs coders. really. |
| 20:06.09 | Notify | 03BRL-CAD:brlcad * 65650 brlcad/trunk/src/librt/primitives/datum/datum.c: document what's going on here better with the buffer size padding, so simple changes to datum data don't end up leaving pockets of dead objects throughout the .g file. also fix a bug in the size where we weren't allocating space for the decode size bytes. |
| 20:06.15 | vasc | it blunts the mind. |
| 20:06.47 | vasc | you start wanting to generalize everything even when you aren't supposed to. |
| 20:06.50 | Stragus | We need a new flexible portable interface to encapsulate the interface around our intermediary interfaces! |
| 20:06.55 | Stragus | Indeed. |
| 20:06.59 | Stragus | cuddles C |
| 20:08.30 | vasc | don't remember me of that. i used to write java server code when i was in the private sector. |
| 20:09.00 | Stragus | I once had to debug OpenSceneGraph, so I run it in my home-made memory debugger, and it was making like 130000 malloc() calls to render a cube |
| 20:09.22 | Stragus | so I ran* it |
| 20:10.49 | vasc | now the question is how can i simplify this without a whole rewrite |
| 20:12.05 | vasc | java is the worst regarding that. especially the j2ee stuff. |
| 20:12.12 | vasc | java itself is an ok language. |
| 20:12.28 | vasc | the problem is what people do with it, and what's considered to be "best practices" |
| 20:13.17 | Stragus | I tried to learn Java once, and they lost me with that "one class per file" non-sense |
| 20:14.00 | vasc | you use too many abstractions and layers to program; so to improve productivity the IDEs GENERATE reams and reams of useless interface code at the press of a button |
| 20:14.46 | vasc | when you can put more than one class per file i think |
| 20:14.56 | vasc | but when you compile it it generates separate .class files |
| 20:15.16 | Stragus | Ahaha |
| 20:15.23 | Stragus | That's definitely not for me |
| 20:15.29 | vasc | so it's considered "best practice" to put one class per source file |
| 20:15.31 | Stragus | Even C++ is too high-level for my taste |
| 20:16.23 | vasc | c++ is convoluted that's the problem. |
| 20:16.32 | vasc | in that regard its even worse than java |
| 20:18.30 | Stragus | The cultures around the languages are also terrible, everyone feels a need to encapsulate everything |
| 20:19.10 | Stragus | They they want to use SSE/AVX with their "vertex" class, and wonder why they have to scrap everything |
| 20:19.16 | Stragus | Then* they want... |
| 20:19.24 | vasc | yes. in that regard i think modula-2 was better. |
| 20:20.03 | Stragus | Wikipedia'ing, never heard of it |
| 20:20.21 | vasc | its ancient and dead |
| 20:20.27 | vasc | its pascal with library support more or less |
| 20:20.31 | Stragus | Oh, eheh |
| 20:20.48 | Stragus | I'm very fond of C, I have looked around and I always come back to it |
| 20:21.49 | Stragus | Or lower level; I have written a x86/amd64 opcode emitter to produce custom-optimized assembly at runtime, and other such stuff that brlcad will absolutely never want to touch... ;) |
| 20:21.58 | vasc | its kinda like if you added namespaces to c. but those namespaces are better than usual. |
| 20:23.10 | vasc | i think most people who want to do that kind of thing now in a portable way use llvm to do it |
| 20:23.43 | Stragus | Yes probably |
| 20:24.02 | vasc | i did a compiler once as a course project |
| 20:24.07 | Stragus | Cool |
| 20:24.15 | vasc | it was a pascal like language |
| 20:24.30 | vasc | and i did everything optimizations and x86 asm output etc |
| 20:24.38 | vasc | besides the parsing and so on |
| 20:24.42 | vasc | which i also did |
| 20:24.57 | Stragus | Very neat. I also wrote a low-level C for my opcode emitter |
| 20:25.20 | Stragus | It was designed to be lower level than C, with extra keywords to communicate more information to the compiler for better optimization |
| 20:25.23 | vasc | so it did parsing, tree generation, convert the tree to ssa form, optimize the ssa, then output x86 |
| 20:25.50 | Stragus | Except I didn't put that much work on it, so GCC pretty much beats it anyway |
| 20:26.12 | vasc | well its a lot of work to do your own compiler |
| 20:26.23 | Stragus | Indeed |
| 20:26.57 | vasc | mine ended up doing a lot of redundant moves and things like that because i didn't do register allocation properly |
| 20:27.26 | vasc | sometimes the asm output looked kinda pathetic |
| 20:28.39 | Stragus | Register allocation is complex. My low-level C also had keywords to specify the probabilities of branches, for the compiler to take better decisions |
| 20:29.28 | Stragus | In the end, I opted for a brute force approach, it would try stuff for minutes until it converged to the lowest "cost" of variable allocation |
| 20:30.32 | vasc | what i did was i did some post optimizations to the actual assembly generated to remove redundant moves and things like that |
| 20:30.40 | vasc | it kinda looked ok except when it didn't |
| 20:31.07 | Stragus | Eheh |
| 20:33.34 | vasc | i also did things like instead of doing a mov eax, 0 i would do a xor eax, eax and things like that |
| 20:34.02 | Stragus | Sure, that's trivial |
| 20:34.24 | vasc | yeah the complicated optimizations were the ssa ones |
| 20:34.36 | vasc | like common sub-expression elimination and dead-code removal |
| 20:34.47 | Stragus | I liked the idea of reshuffling the code through pure brute force, converging towards the least cost solution |
| 20:35.34 | Stragus | The "cost" was meant to be machine-dependent, with knowledge of the pipelines, instruction latency, and so on |
| 20:35.52 | vasc | yeah i didn't do anything like that |
| 20:35.57 | Stragus | I want my compiler to spend a hour optimizing my code to get that last 10% :) |
| 20:36.15 | vasc | that's more complicated. gcc has hardware knowledge to do it |
| 20:37.21 | Stragus | I had coded the information for my own chip back then, Nocona |
| 20:37.47 | vasc | oh |
| 20:37.54 | vasc | you did your own cpu? |
| 20:38.20 | vasc | simulator or fgpa or what? |
| 20:38.38 | Stragus | Of course not, I meant I entered all the pipeline, delay and instruction latency information for the Nocona chip |
| 20:38.43 | Stragus | Intel Xeon Nocona |
| 20:38.45 | vasc | oh |
| 20:38.49 | vasc | right it seemed familiar |
| 20:39.40 | vasc | cona is a slang word here actually |
| 20:39.59 | Stragus | Which language? |
| 20:40.03 | vasc | portuguese |
| 20:40.30 | vasc | there was this software suite, i think was from borland, it was called kona |
| 20:40.30 | Stragus | Right, there's a similar slang word in spanish |
| 20:40.31 | vasc | man |
| 20:40.38 | Stragus | Hum :) |
| 20:40.41 | vasc | i bet they didn't sell a lot in portuguese speaking countries |
| 20:41.16 | vasc | anyway |
| 20:41.30 | vasc | see its a problem to choose a good product name for an international audience |
| 20:41.54 | Stragus | Some companies just rename the product |
| 20:42.02 | vasc | yeah |
| 20:42.24 | vasc | i do know intel and amd basically stuck with using those bogus latin sounding names |
| 20:42.32 | vasc | to prevent that |
| 20:42.41 | vasc | like athlon, pentium, itanium |
| 20:42.58 | Stragus | Here in Quebec, Canada, there's a strong "nationalist" culture, protective of the french language |
| 20:43.16 | Stragus | Some companies or products get renamed in french just here, and nowhere else in the world, not even in France |
| 20:43.20 | vasc | i used to watch french cartoons when i was a kid |
| 20:43.21 | Stragus | (In France, english names are "cool") |
| 20:44.52 | vasc | sometimes people can get really protective of their national identity |
| 20:45.12 | vasc | especially if they feel its threatened somehow |
| 20:46.05 | Stragus | Well yes, it's a long history, with the federal Canadian government trying to assimilate Quebec's french culture for many decades |
| 20:46.20 | vasc | i mean portugal was ruled by foreigners like 4 times in its history. 2x by spanish, 1x by french, 1x by english. last time was like 200 years ago and we still remember it. |
| 20:46.32 | Stragus | Right |
| 20:46.33 | vasc | the english were invited, kind of so |
| 20:46.39 | vasc | that one wasn't an invasion |
| 20:47.12 | vasc | and now its the germans |
| 20:47.15 | vasc | ahem |
| 20:47.35 | Stragus | That's... a complex topic :) |
| 20:54.08 | vasc | the more i look at it the more i feel like rewriting it |
| 20:54.36 | Stragus | What's the code? |
| 20:54.48 | vasc | its just the traversal |
| 20:54.51 | vasc | rt_shootray |
| 20:55.02 | vasc | the abstraction it uses is getting in the way of doing this like i want |
| 20:55.09 | vasc | abstraction(s) |
| 20:56.48 | vasc | i'll just #if 0 a huge chunk out and reimplement it |
| 20:57.15 | Stragus | I have no authority to advise on the direction of BRL-CAD's source, but my opinion is that all this must be rewritten |
| 20:57.28 | vasc | yeah it needs to eventually |
| 20:57.33 | vasc | or it won't run fast in OpenCL |
| 20:57.52 | Stragus | Or with SSE/AVX/CUDA or any modern and future parallel hardware |
| 20:58.00 | vasc | my problem is i'm going to have to make the code a lot different and i didn't want to |
| 20:58.28 | Notify | 03BRL-CAD:lbutler * 65651 (brlcad/branches/embree/src/ert/ert.cxx brlcad/branches/embree/src/librt/shoot.c): starting to build partitions on embree constructed segs |
| 20:58.47 | vasc | i wanted to be able to put these little pieces of opencl here and there and eventually do everything in the rendering part in opencl |
| 20:59.08 | vasc | without losing functionality |
| 20:59.29 | vasc | but i need to simplify some things in the beginning or i'll never finish it :) |
| 20:59.33 | Stragus | That code is terribly NOT designed for OpenCL |
| 20:59.39 | vasc | yes |
| 20:59.44 | Notify | 03BRL-CAD:lbutler * 65652 brlcad/branches/embree/src/librt/shoot.c: backing out changes to shoot.c that were readability |
| 20:59.44 | vasc | it's bad in several ways |
| 21:00.11 | vasc | the worst issue is too much dynamic memory allocation |
| 21:00.13 | Stragus | I have written a lot of CUDA, same hardware, and that is terrible |
| 21:00.41 | Stragus | That's probably the worst, of many terrible issues |
| 21:00.50 | vasc | yeah its like i said it made sense at the time i guess |
| 21:01.02 | Stragus | On 1985 machines, yeah |
| 21:01.11 | vasc | people sometimes forget |
| 21:01.17 | vasc | back then the memory wall wasn't as much of an issue |
| 21:01.34 | Stragus | Memory was fast, computations were slow |
| 21:01.35 | vasc | so all this memory allocation and accesses and shit made sense |
| 21:01.38 | vasc | but now it doesn't |
| 21:02.05 | Stragus | Modern hardware has very strict requirements for memory coherency access if you want good performance |
| 21:02.09 | Stragus | And *especially* GPUs |
| 21:02.40 | Stragus | You really need to rewrite everything for OpenCL |
| 21:02.44 | vasc | yes |
| 21:02.50 | vasc | but i need to work in steps |
| 21:03.03 | Stragus | Support just one primitive type |
| 21:03.06 | vasc | i want to at least understand minimally what i'm replacing |
| 21:03.31 | vasc | yeah that will be done later |
| 21:03.33 | vasc | well |
| 21:03.40 | vasc | i already did the intersection routines for a couple of them |
| 21:03.55 | vasc | now i was trying to do the traversal |
| 21:04.10 | Stragus | And you are stuck at the hit/segment buffering I would assume |
| 21:04.12 | vasc | all of this is suboptimal as i'm calling the kernels way too often and they don't do enough work |
| 21:04.30 | vasc | i'm just trying to simplify the existing code |
| 21:04.33 | Stragus | Woah woah... how so? A single kernel should trace the whole ray |
| 21:04.40 | vasc | into clean ANSI C that can actually be ported |
| 21:04.48 | vasc | yeah |
| 21:04.53 | vasc | but it doesn't yet. |
| 21:05.14 | vasc | i'm just trying to clean the layers of lasagna right now |
| 21:05.19 | Stragus | Are you allowed to change the "interface"? |
| 21:05.21 | vasc | to the bone |
| 21:05.36 | vasc | welll |
| 21:05.57 | Stragus | My CUDA raytracer obviously supports multi-hit traversal, but it returns each hit to a CUDA inlined "callback", letting the user whatever he wants with that hit (buffering, immediate processing, etc.) |
| 21:06.12 | vasc | that makes sense |
| 21:06.14 | Stragus | Which is a lot more convenient on GPU hardware than trying to dynamically accumulate a bunch of hits, which may not even be required! |
| 21:06.27 | vasc | yeah this one is a bit messed up |
| 21:06.32 | Stragus | But obviously, librt/shoot.c wasn't designed that way at all |
| 21:06.36 | vasc | yep |
| 21:06.43 | vasc | that was my second step after this |
| 21:06.51 | vasc | trying to change that |
| 21:07.03 | vasc | the callback is a good idea |
| 21:07.13 | Stragus | The inlined callback is also extremely efficient, results are processed immediately |
| 21:07.40 | Stragus | The user can output pixels on an OpenGL texture right there if he wants, no temporary storage of anything in global memory |
| 21:07.53 | vasc | i'm just trying to implement a grid acceleration structure in ANSI C and then i'll port it to OpenCL |
| 21:08.08 | vasc | coz its simple |
| 21:08.17 | Stragus | Well... I wouldn't recommend a grid |
| 21:08.20 | vasc | i know |
| 21:08.22 | vasc | but its a start |
| 21:08.28 | vasc | the structure itself isn't the big deal |
| 21:08.44 | vasc | its just so we'll have something |
| 21:08.46 | Stragus | It's not an ambitious start, but okay |
| 21:08.52 | vasc | yeah i know |
| 21:09.25 | vasc | i'm already building it |
| 21:09.29 | vasc | i'm just not traversing it |
| 21:09.40 | vasc | so it isn't being used yet |
| 21:09.50 | vasc | i could implement a bvh |
| 21:09.57 | vasc | but the main problems aren't things like this |
| 21:10.05 | vasc | it will be the multi-hit processing and the rendering loop |
| 21:10.13 | vasc | i wanna focus on that and not the accel structure |
| 21:10.14 | Stragus | I agree that scene traversal isn't that critical for CSG geometry |
| 21:10.34 | Stragus | You have few objects and they are very complex, completely the other way from triangle raytracing (which I what I did) |
| 21:10.35 | vasc | it should be if the model is complex enough |
| 21:10.49 | vasc | yeah i know |
| 21:10.51 | vasc | well |
| 21:11.02 | vasc | like we say rome wasn't built in a day |
| 21:11.28 | Stragus | I also expect that a grid will make your OpenCL wrap coherency break up, when it shouldn't have to |
| 21:11.36 | vasc | hm? |
| 21:11.46 | Stragus | Well, or whatever a CUDA "wrap" is called in OpenCL talk |
| 21:12.01 | vasc | i think i understand |
| 21:12.08 | vasc | you mean the traversal won't be memory coherent |
| 21:12.23 | Stragus | Right, while it could be with a better acceleration structure |
| 21:12.36 | vasc | there are ways around that you know. but i'm not going to optimize that. |
| 21:12.44 | vasc | i'll give you an example. |
| 21:12.54 | vasc | chess programs don't store the board in just one orientation. |
| 21:13.28 | vasc | you you could store the grid in multiple orientation and pick the one that best matches the orientation of the ray |
| 21:13.32 | vasc | which is messed up |
| 21:13.37 | vasc | anyway |
| 21:13.41 | vasc | i'm just digressing here |
| 21:14.02 | vasc | if it becomes an issue |
| 21:14.07 | vasc | i'll just do a bvh or whatever |
| 21:14.15 | Stragus | Right, focus on the bigger problems first, the multi-hit thing |
| 21:14.15 | vasc | right now we have a lot bigger issues... |
| 21:15.00 | Stragus | likes solving all problems at once, having planned a complete solution, before writing any code |
| 21:15.23 | vasc | well that works great. |
| 21:15.40 | vasc | except when the whole problem doesn't fit into the head easily or isn't easily compreensible |
| 21:15.52 | vasc | sometimes its easier to chop things up first and then think it over |
| 21:16.13 | Stragus | I still then prefer to spend a few days on it, but you'll know what works best for you |
| 21:16.31 | vasc | i've tried that for much of the last week and went nowhere so... |
| 21:16.38 | Stragus | Got it. :D |
| 21:18.42 | vasc | it seems kind of like a waste of time, or how it could be better starting off a blank sheet but... |
| 21:18.52 | vasc | i've a similar experience before on a different codebase |
| 21:18.59 | vasc | had a |
| 21:19.37 | vasc | rewriting existing code to match existing code can be a great way of learning how the code works |
| 21:19.44 | vasc | rewriting code |
| 21:19.45 | Stragus | Sure, that works |
| 21:20.06 | vasc | i would rather not need to do it but that's how this one is |
| 21:24.31 | vasc | man this is messed up |
| 21:25.33 | vasc | seems there's some guy working on embree right? |
| 21:27.13 | vasc | last time i checked it didn't seem to do enough though... |
| 21:27.16 | Stragus | I have only noticed the commit logs here as you have |
| 21:27.20 | vasc | i actually considered basing mine on that |
| 21:30.45 | vasc | ohhh |
| 21:30.47 | vasc | snap |
| 21:31.26 | vasc | so its like |
| 21:31.34 | vasc | each cell has a list of solids i.e. objects |
| 21:31.36 | vasc | but |
| 21:31.40 | vasc | it also has a list of pieces |
| 21:31.53 | vasc | which is an indirect numeric array into the list of solids |
| 21:32.03 | vasc | which also has its own cached list of the same solids |
| 21:34.25 | vasc | or whatever |
| 21:35.58 | vasc | or is this to support complex solids which have smaller things inside like a mesh which ends in different grid cells and this way we can cache which parts of the mesh are in which cell? |
| 21:36.00 | vasc | ah well |
| 21:36.43 | Stragus | can't help with librt's internal guts |
| 21:53.43 | vasc | yeah it seems to be that |
| 21:53.51 | vasc | like 'bot' bag of triangles has pieces |
| 21:53.55 | vasc | while a sphere doesn't |
| 21:54.23 | vasc | this is an interesting optimization |
| 21:54.37 | vasc | but it makes the code more complicated |
| 21:56.08 | vasc | in fact only "bot" and "ars" use this functionality... |
| 21:56.42 | vasc | arbitrary faceted solid |
| 21:57.11 | vasc | so |
| 21:57.17 | vasc | what i thought was the general case of the code |
| 21:57.24 | vasc | is actually a corner case on used for meta-objects |
| 21:57.28 | vasc | pfeh |
| 21:57.36 | vasc | only used |
| 22:00.12 | vasc | ok now this seems more doable |
| 22:00.54 | vasc | i'll have to think if i'll implement the pieces optimization like the old rendering code does or some different way |
| 22:01.47 | Stragus | Better consider how this could be more efficient on synchroneous parallel hardware |
| 22:01.54 | vasc | well |
| 22:02.10 | vasc | the idea is if you have a bag of triangles and you're gonna put it in a grid or whatever |
| 22:02.37 | vasc | you need some way to say which triangles in the bag of triangles are in each cell of you'll end up intersecting all that are in the bot |
| 22:02.39 | vasc | again and again |
| 22:02.52 | Stragus | Certainly |
| 22:03.01 | Stragus | But that's a single-thread consideration as well |
| 22:03.05 | vasc | the way i do this in my raytracer is that i just store triangles or whatever in a flat hierarchy |
| 22:03.13 | vasc | shallow |
| 22:03.31 | vasc | so i don't encapsulate |
| 22:04.00 | vasc | now the question is which approach is better |
| 22:04.29 | vasc | if say |
| 22:04.43 | vasc | there's a routine that wants to know which object id is closest to the ray or whatever |
| 22:05.02 | vasc | you wanna be able to know the id of the bot of the triangle not some triangle id |
| 22:05.13 | vasc | i'll think that some other day |
| 22:05.19 | vasc | but yes this isn't mt related |
| 22:05.27 | Stragus | Each triangle needs an identifier of some sort |
| 22:06.26 | Stragus | By knowing to which "bot" the triangle belongs, you can find the index of that triangle by subtracting its pointer from the base pointer of the bot |
| 22:06.27 | vasc | yeah but librt doesn't store triangles it store meshes |
| 22:06.34 | Stragus | Assuming all triangles are tightly packed, which they should be |
| 22:07.06 | vasc | yeah |
| 22:08.25 | Stragus | You say librt doesn't store triangles, it stores meshes, but surely it doesn't test every triangle? |
| 22:08.49 | Stragus | There must be some kind of acceleration structure, either within a mesh or incorporated in the scene mesh... |
| 22:09.01 | Stragus | ... in the scene graph* |
| 22:09.09 | vasc | a bot is a mesh |
| 22:09.11 | vasc | basically |
| 22:09.20 | vasc | yeah |
| 22:09.24 | vasc | that it does is like this |
| 22:09.46 | vasc | the bot is a solid that has triangle pieces in it |
| 22:09.59 | vasc | and when you build the acceleration structure |
| 22:10.17 | vasc | you not only check which cells overlap each solid, you also check in which cells each piece is |
| 22:10.21 | vasc | and store that |
| 22:10.51 | Stragus | So you have a list of triangles per cell |
| 22:10.55 | vasc | yes |
| 22:11.05 | vasc | but its stored per object |
| 22:11.10 | vasc | or something |
| 22:11.38 | vasc | right now i'll just ignore the bot |
| 22:11.47 | vasc | and only support plain solids |
| 22:11.59 | vasc | but i'll need to think it over later |
| 22:12.05 | Stragus | You better plan ahead to support bots efficiently |
| 22:12.13 | vasc | yeah |
| 22:12.42 | Stragus | Don't write a bunch of code without planning the whole solution :), you don't want to have to rewrite |
| 22:12.46 | vasc | the thing is i originally thought about doing this differently than how it is |
| 22:12.57 | vasc | when i hit a mesh i just called a mesh intersection routine |
| 22:13.04 | vasc | and the mesh had its own accel structure |
| 22:13.20 | vasc | but the thing is |
| 22:13.33 | vasc | this might mess up the partitioning |
| 22:13.36 | Stragus | Why? |
| 22:13.47 | vasc | well the bot already does that |
| 22:13.59 | vasc | the bot stores the triangles in a kd-tree i think |
| 22:14.14 | vasc | so |
| 22:14.32 | vasc | i'm actually wondering what's the use in knowing which triangles are in this cell anyway |
| 22:15.24 | Stragus | Normally, you could build a better top-level acceleration structure if it includes everything, instead of more sub-acceleration-structures |
| 22:15.32 | Stragus | Doesn't make much sense with a grid though |
| 22:18.22 | vasc | src/librt/primitives/bot/tie.c |
| 22:18.43 | vasc | so the triangles mesh (bot) solid has a kd-tree inside... |
| 22:19.03 | Stragus | That kd-tree will perform better than your grid |
| 22:19.41 | vasc | yeah but its CPU ANSI C code |
| 22:21.06 | Stragus | You'll probably want code to flatten and pack these kd-tree in just a chunk of memory, no internal pointers, just offsets |
| 22:21.26 | vasc | bot support is only to be done later |
| 22:22.58 | vasc | there are a whole lot of ways to store a mesh efficiently.... |
| 22:23.17 | vasc | i don't want to hardcode something which might not be the desired one too soon |
| 22:24.14 | Stragus | In my CUDA raytracer, there are no pointers: everything (the whole graph, sectors, nodes, triangles, etc.) is stored relatively with shifted offsets |
| 22:24.46 | Stragus | It makes the whole graph just a big single chunk of memory, usable directly on both CPU and CUDA |
| 22:25.06 | Stragus | Also, offsets take a lot less memory than whole pointers (64 bits? come on) |
| 22:25.45 | Notify | 03BRL-CAD Wiki:Bhollister * 9006 /wiki/User:Bhollister/Proposal: /* Project Details */ |
| 22:25.59 | Stragus | Since everything is interleaved with shifted offsets, it's also possible to organize the internal layout to maximize caching |
| 22:26.43 | vasc | http://gamma.cs.unc.edu/RS/ |
| 22:26.46 | Stragus | It may be overkill for you, but this could be stuff worth considering |
| 22:28.10 | Stragus | also doesn't store triangle vertices in the graph |
| 22:28.58 | vasc | this is going to be more messed up since we have several primitive/solid types |
| 22:29.01 | vasc | not just triangles |
| 22:29.44 | Stragus | I know, I'm just saying this is an efficient approach, and very convenient once written (a single big chunk of memory, yay) |
| 22:30.01 | vasc | yeah |
| 22:30.13 | vasc | i once read a bvh paper by yoon that was like that |
| 22:30.21 | vasc | but i think he even stored by vertex in the bvh |
| 22:30.26 | vasc | stored the vertexes |
| 22:30.50 | Stragus | I store the triangles in the graph memory, but not the vertices (I don't use vertices) |
| 22:30.52 | vasc | in a bvh a triangle can only be in one cell |
| 22:31.34 | vasc | he compresses the bvh as well |
| 22:31.43 | vasc | with the geometry in it |
| 22:31.59 | Stragus | Haven't tried that, but it's already tightly packed with offsets taking just few bits |
| 22:32.59 | vasc | if you know the vertexes of the triangles in that cell are inside the cell bounding box |
| 22:33.21 | Stragus | That's not enough, a triangle's area can intersect a cell without the vertices being in that cell |
| 22:33.24 | vasc | you can compress the triangle vertex floats |
| 22:33.33 | vasc | not in a bvh |
| 22:33.39 | vasc | you're thinking a kd-tree |
| 22:33.42 | Stragus | Ah right, bvh sorry |
| 22:33.48 | Stragus | Not thinking kd-tree either :p |
| 22:33.55 | Stragus | I use a graph, not a hierarchy |
| 22:33.57 | vasc | well a spatial partitioning |
| 22:34.05 | vasc | a bvh is object partitioning |
| 22:34.09 | Stragus | Right. |
| 22:34.58 | Stragus | Compressing vertices is an interesting idea. I store triangle edge planes, so that wouldn't work there |
| 22:36.27 | vasc | he also compresses the bounding boxes in the bvh |
| 22:36.43 | *** join/#brlcad bhollister (~behollis@dhcp-59-221.cse.ucsc.edu) | |
| 22:37.09 | vasc | its like the bounding boxes of the leafs are inside those of the parent node and so on |
| 22:37.13 | vasc | so you don't need full precision |
| 22:37.19 | Stragus | nods |
| 22:37.51 | Notify | 03BRL-CAD Wiki:Bhollister * 9008 /wiki/MGED_CMD_nmg: |
| 22:39.03 | *** join/#brlcad ih8sum3r (~deepak@122.173.51.91) | |
| 22:44.38 | Notify | 03BRL-CAD Wiki:Konrado DJ * 9009 /wiki/User:Konrado_DJ/GSoc2015/logs: /* 15 JULY 2015 */ |
| 22:45.42 | *** join/#brlcad ih8sum3r (~deepak@122.173.51.91) | |
| 22:51.50 | Notify | 03BRL-CAD Wiki:Bhollister * 9010 /wiki/MGED_CMD_nmg: /* Argument(s) */ |
| 22:56.12 | *** join/#brlcad ih8sum3r_ (~ih8sum3r@122.173.51.91) | |
| 22:56.12 | *** part/#brlcad ih8sum3r_ (~ih8sum3r@122.173.51.91) | |
| 23:24.34 | vasc | well it compiled |
| 23:25.01 | vasc | and it seems to work. what a miracle |
| 23:25.56 | vasc | seems too good to be true. i'll comment the intersection to see if it still renders the scene or not |
| 23:27.06 | vasc | man |
| 23:27.09 | vasc | it really works |
| 23:29.13 | Stragus | Cool :) |
| 23:30.33 | vasc | it simplified the traversal code a whole lot |
| 23:30.38 | vasc | now only the weaving is complicated |
| 23:30.47 | vasc | only regression is it can't process bots |
| 23:31.10 | Notify | 03BRL-CAD Wiki:Bhollister * 9011 /wiki/MGED_CMD_nmg: /* Subcommands(s) */ |
| 23:31.33 | Notify | 03BRL-CAD Wiki:Bhollister * 9012 /wiki/MGED_CMD_nmg: |
| 23:32.51 | Notify | 03BRL-CAD Wiki:Bhollister * 9013 /wiki/MGED_CMD_nmg: /* See Also */ |
| 23:33.35 | vasc | i would like having more complex scenes to test this with though |
| 23:33.41 | vasc | my test scene has only one solid in it... |
| 23:33.43 | Notify | 03BRL-CAD Wiki:Bhollister * 9014 /wiki/MGED_CMD_nmg: /* Proposed subcommands(s) */ |
| 23:34.27 | Notify | 03BRL-CAD Wiki:Bhollister * 9015 /wiki/MGED_CMD_nmg: |
| 23:35.52 | Notify | 03BRL-CAD:starseeker * 65653 brlcad/trunk/src/libbrep/shape_recognition.cpp: This test was known to be insufficient/incorrect from the outset - it's going to take a raytracing based approach to resolve this question generally. Will have to punt and return the to-be-evaluated cases in a struct, so bu_ptbl won't cut it as a return type either. |
| 23:37.26 | Notify | 03BRL-CAD Wiki:Bhollister * 9016 /wiki/User:Bhollister/Proposal: /* Project Schedule */ |
| 23:38.34 | vasc | tomorrow i'll work on doing the grid construction on the gpu instead |
| 23:38.59 | Stragus | That doesn't sound necessary |
| 23:39.40 | Stragus | It should be a relatively fast operation, considering CSG has fewer objects than triangles meshes |
| 23:39.41 | vasc | its kewl to have |
| 23:39.53 | Stragus | Sure. But raytracing is probably more critical |
| 23:40.25 | vasc | maybe i'll reuse the grid code for the meshes |
| 23:41.18 | vasc | the major next step actually |
| 23:41.33 | vasc | is going to be doing the multi-hit code and the boolean weaving a lot simpler |
| 23:41.37 | vasc | so that it can be ported to the gpu |
| 23:41.44 | vasc | and other little things |
| 23:41.50 | vasc | like supporting multiple solid types |
| 23:41.58 | vasc | copying the solid data to the gpu |
| 23:42.00 | vasc | etc |
| 23:42.19 | vasc | then there's little nagging details... |
| 23:42.20 | vasc | like |
| 23:42.41 | vasc | what if i have a primitive type that doesn't have a gpu render code yet |
| 23:42.43 | Stragus | Multi-hit buffering? |
| 23:42.53 | vasc | do i draw nothing or split the database or what |
| 23:43.08 | vasc | you said callbacks were better right? |
| 23:43.14 | vasc | the current code uses these double linked lists |
| 23:43.19 | Stragus | Yes, but I wonder how compatible that would be with the rest of the code base |
| 23:43.23 | vasc | dynamic linked lists |
| 23:43.27 | Stragus | Yes, don't do that on the GPU |
| 23:43.37 | Stragus | You really shouldn't do that on the CPU either |
| 23:43.42 | vasc | no kidding |
| 23:44.10 | vasc | https://sourceforge.net/p/brlcad/patches/_discuss/thread/60701e92/d48f/attachment/m4.patch |
| 23:44.26 | Stragus | I expect most code calling the raytracer at the moment will expect a list of hits |
| 23:44.38 | Stragus | So either that code gets ported to GPU to process hits as they come in the inlined callback... |
| 23:44.51 | Stragus | Or ... ... or it gets really messy |
| 23:45.15 | vasc | that's why i'm not doing any opencl programming until i get a simple ansi c code in the gpu that can be easily ported |
| 23:45.22 | vasc | in the cpui |
| 23:45.40 | vasc | so |
| 23:46.13 | vasc | after i build the grid on the gpu as i planned i'll work on a callback version of multi-hit and boolean weaving |
| 23:46.34 | vasc | in ansi c |
| 23:47.01 | Notify | 03BRL-CAD:starseeker * 65654 brlcad/trunk/src/libbrep/shape_recognition.cpp: This'll be a job - has to be done in libged land (or possibly libanalyze/librt) but make some notes for now on how we'll have to go at it. |
| 23:47.16 | vasc | the code for multi-hit is a real mess |
| 23:47.55 | Stragus | It would be disastrous to try to buffer multiple hits per ray on the GPU then try to return that to CPU code |
| 23:48.09 | Stragus | Everything must go on the GPU, instant inlined processing |
| 23:49.09 | vasc | in the long run yeah |
| 23:49.30 | vasc | the current opencl implementation as it is on svn basically calls a kernel on each solid intersection |
| 23:49.32 | vasc | it's that bad |
| 23:49.39 | Stragus | What! |
| 23:49.43 | vasc | yeah |
| 23:49.52 | Stragus | o.O |
| 23:50.19 | vasc | see there's a lot of room for improvement |
| 23:50.36 | vasc | what i'm doing is i'm doing a simple ANSI C rendering pipeline |
| 23:50.39 | vasc | for everything |
| 23:50.43 | vasc | which i'll port to opencl |
| 23:50.56 | vasc | none of my work has been commited yet |
| 23:51.29 | vasc | i loaded the ktank.g file |
| 23:51.39 | vasc | but how to render this thing inside mged... |
| 23:54.00 | vasc | seems to work |
| 23:54.17 | vasc | so it can render scenes with more than one solid in it |
| 23:54.18 | vasc | great |
| 23:54.38 | Notify | 03BRL-CAD Wiki:Bhollister * 9017 /wiki/MGED_CMD_nmg: /* Example(s) */ |
| 23:56.16 | vasc | it can also render bigger scenes but it takes forever |
| 23:59.16 | Notify | 03BRL-CAD Wiki:85.246.100.5 * 9018 /wiki/User:Vasco.costa/GSoC15/logs: |
| 23:59.16 | vasc | so any suggestions on how to store the solid database in GPU RAM? |
| 23:59.16 | vasc | i have an idea but its gonna do a lot of cache misses |
| 23:59.43 | Stragus | A single big chunk of memory, all packed, no pointers, based on offsets, with nearby geometry stored close |
| 23:59.58 | Stragus | The single big chunk of memory also makes it possible to fetch the data as a texture |