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 |