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