MoI discussion forum
MoI discussion forum

Full Version: Nodebundle for playing with nodes

Show messages:  1-12  …  573-592  593-612  613-632  633-652  653-672  673-692  693-712  …  1853-1859

Thread Split: Some posts in this thread have been moved here

From: Karsten (KMRQUS)
19 Oct 2017   [#633] In reply to [#632]
Hello Brian,

I saw this pop up also. Go to task manager and kill the process. I got always pop ups at mediafire, but never such crap like in the last days.

p.s.: Under linux you will get 15€ for a bet portal;-)
From: James (JFH)
21 Oct 2017   [#634]
Hi All,

UPDATE: Revised version can be found here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=7777.649

I have attempted to recreate a form as per youtube vid:
https://www.youtube.com/watch?v=kiKG-vkTzfE
Not emulating the procedure, just the end result.



WARNING: Due to the sheer complexity of the form (number of lines/surfaces),
running the .nod file will take a long time to render to screen
(approx. 40 secs on my laptop), so be patient.
Of course, for denser meshes, it will be even longer.



Have a great weekend
James
From: mkdm
22 Oct 2017   [#635] In reply to [#634]
Hi James!

Thanks a lot for this sharing!

What a complex and beautiful node ! A lot of stuff useful for practicing.

On my PC i7-7700K it takes exactly 30 secs to generate the output.

Ciao!
From: Mike (MGG942)
22 Oct 2017   [#636] In reply to [#634]
Great stuff. Bit hard to tell - is this a moebius strip?

I'll have to update my machine - 44.5 seconds. Though the processor is an i7.
Perhaps a better graphics card - currently an AMD Radeon HD 7800
From: James (JFH)
22 Oct 2017   [#637] In reply to [#636]
UPDATED: mobius2.nod attached

(Further simplified; previous version still contained extraneous nodes
related to retopologizing the surface in prep for mFlow)


Hi Mike,

<< is this a moebius strip?>>

Yes, try this .nod file:
same circuitry, but without the variable fenestration.
(with next to no delay to generate output )

James
From: mkdm
22 Oct 2017   [#638] In reply to [#636]
Hi Mike!

@You : "...I'll have to update my machine - 44.5 seconds. Though the processor is an i7. Perhaps a better graphics card - currently an AMD Radeon HD 7800"

Well, I'm not Michael but for what I know about how Moi deals with calculation I think that it actually doesn't use almost anything of GPU power (unfortunately)
except display and render meshes.

So I think you will get no advantage upgrading your GPU.

Consider that I currently own a Gtx 1080 Ti.

Ok, Vega cards and also some previous generation "gaming" Amd GPUs are more powerful regarding FP64 and FP16,
but with Gtx 1080 Ti we are still talking about something like 11 TFlops in FP32 with 11Gb or superfast video memory.

Talking about the CPU not all i7 are the same.

I currently have the most powerful 4 cores/8 threads cpu currently available, the i7-7700K, but anyway it has only 4 physical cores
and I know that a CPU with more cores like Threadripper or other Intel CPUs are much more powerful than my 7700K.

So, if you are thinking about upgrading, at least talking about Moi, I think you should switch to a new CPU with more cores.

but you should ask to Michael if Moi can leverage on more cores and if the gain is "linear".
I mean, for example, 40 secs to execute that nod file with a 4 cores CPU, so...20 secs with 8 cores ?

I hope i made myself clear enough :)

Ciao!
From: Michael Gibson
22 Oct 2017   [#639] In reply to [#638]
re: multiple cores - MoI makes use of multiple CPU cores for part of the viewport graphics display and when generating meshes for export to a polygon format. Other areas like a node calculation will run on a single core. It takes special work to use multiple cores, it involves breaking things down into individual isolated task units which can then be scheduled across threads. That's very different than "normal" code.

- Michael
From: Mike (MGG942)
22 Oct 2017   [#640] In reply to [#637]
Thanks, James.
I'm a bit obsessed with Moebius strips so I shall enjoy studying this simpler nod.
Mike.
From: Mike (MGG942)
22 Oct 2017   [#641] In reply to [#638]
Thanks Marco and Michael.

My i7 is a humble 3770 @ 3.40 GHz.

Good enough for a while yet.

Mike.
From: James (JFH)
22 Oct 2017   [#642] In reply to [#640]
Hi Mike,

<<I'm a bit obsessed with Moebius strips so I shall enjoy studying this simpler nod.>>

I have uploaded simpler mobius2.nod file tp previous post:
http://moi3d.com/forum/index.php?webtag=MOI&msg=7777.637

If the profile shape is even sided & the number of twists is odd (or vice versa )
the resultant form will be single-sided solid. Which is to say it could be
unrolled into a continuous looped strip.

I encourage you to indulge your obsession,
James
From: mkdm
23 Oct 2017   [#643] In reply to [#639]
Hi Michael.

Thanks for confirming my words.

@You : "...Other areas like a node calculation will run on a single core. It takes special work to use multiple cores, it involves breaking things down into individual isolated task units which can then be scheduled across threads. That's very different than "normal" code..."

It' true, and unfortunately this is still one of the main "Achilles heel" of almost all 3D cad/nurbs modeler.
I mean, the lacks of multicore capabilities for almost all their features.

And this is really a big "hole" because actually if you really want to speed up things in one of these software, including Moi or Rhino,
maybe the one and only way to go is to buy a very expensive CPU with a high IPC and fast and big internal cache.

And actually, for what I know, only very expensive CPU like the XEON line have this characteristics.

All other CPU, including new AMD Threadripper or even all i9 from Intel, although they can run at a higher clock speed,
they cannot reach the IPC value and the overall computing power of a XEON.

So, unfortunately, today the main bottle neck is not the hardware but the SOFTWARE. Almost ALL software!

The main problem is that is really very expensive, especially for a little company or a one person company, to afford the investment that
is necessary to build and maintain the development of a multi core application.

So, actually most of the money we spend to buy new CPU with lots of cores is almost totally wasteful.

Fortunately all these consideration doesn't apply to GPU computing, but here, again, the "Achilles heel" is that only a little portion of calculation
can be demanded to GPU. Only specific types of tasks.

Maybe in the next years we will see a new generation of code compiler that will provide a much robust and wider range of multi core capabilities :)


Have a nice day Michael.

Ciao!
From: Michael Gibson
23 Oct 2017   [#644] In reply to [#643]
Hi Marco, just to clarify - as I mentioned above MoI does make use of multiple CPU cores for the viewport display and for mesh format export. The display is something that is in constant use and so I'm not sure why you'd consider that to be totally wasteful... ?

But because it's difficult to implement it makes the most sense for me to focus multi core use on a few key areas that deliver a high amount of value, such as the display. The next focus area for it will probably be for generating display meshes which will then help speed up file loading for example. It's another area that gets heavy use across many different commands and use cases and so any benefit there is of high value.

Also another thing that has been a limiting factor is doing things on multiple cores can consume more memory since some operations may need to make fairly large allocations and having multiple large allocations simultaneously "in flight" could more easily exhaust 32-bit address space. With the 64-bit version I shouldn't have to worry about that as much.

- Michael
From: mkdm
23 Oct 2017   [#645] In reply to [#644]
Hi Michael.

Thanks a lot for clarifying.

@You : "...the display is something that is in constant use and so I'm not sure why you'd consider that to be totally wasteful... ?..."

Well, I said "totally wasteful" because I have considered the actual situation of CAD software in general. Not only about Moi.
At least the CAD software that are in the "consumer" market, not the "high-end".

I explain.

Ok, it's good to know that Moi deals with displaying meshes in a "multicore" fashion. Perfect!!

But, I was referring also to ALL other kind of operations. All other CPU bound operations.

For example, running each command, running each node in NE, doing any CPU bound calculation.

I'm not referring here to the part of the code that is dedicated to display and render the meshes, but to the part of the code where the calculation are carried out.

When a "Loft" or a "Network" or a "Fillet" command for example, or anything else, takes 30 secs on a given multicore CPU,
if the 90% of the time is relative to the mathematical calculation and are CPU bound, and only 10% relates to final render of the resulting mesh,
then it means that even if you have a multicore CPU, the 90% of the time is spent on a single core and only 10% can leverage on the multi core.

This is what I wanted to say when I said "totally wasteful".

I don't think I'm wrong if I think so.

Anyway, this is totally not referred specifically to Moi, but ALL software in general, so I didn't want to be critical with regard to Moi or your developing job :)

I hope I made myself clear.

Ciao!

Marco (mkdm)
From: Mike (MGG942)
23 Oct 2017   [#646] In reply to [#642]
Thanks, James.

I'd already started to dig down in your original mobius.nod so this will help.

My late mother started me on this obsession by carving this in wood: https://www.thingiverse.com/thing:2239083

Not bad for someone who took up carving at 70!

Mike.
From: Michael Gibson
23 Oct 2017   [#647] In reply to [#645]
Hi Marco, so the problem is that as I wrote earlier it's far more difficult to write multi-core code than single core code. Along with that difficulty comes many many many more chances for bugs. And not just regular bugs, multi-threading bugs are particularly bad since they are related to timing conditions and can be very difficult to reproduce.

So you might not be aware of the "bundle deal" that you're asking for - along with full time use of multiple cores for every single kind of operation there would also come an overall general lack of stability.

Some algorithms also inherently use a sequential chain of dependent operations and are just not feasible to break up into separate isolated task units which have no intertwined connections.

So there are some good reasons why all software doesn't just automatically use all cores for every operation that it's trying to do. Some things like ray tracing for example tend to lend themselves more naturally to it though because they happen to have more isolation.

- Michael
From: mkdm
23 Oct 2017   [#648] In reply to [#647]
Hi Michael.

@You : "...Hi Marco, so the problem is that as I wrote earlier it's far more difficult to write multi-core code than single core code..."

Ok. I really didn't want to start a "philosophical" debate on "why" multi core operation are really a hard thing to treat in the computer science in general.

Anyway, clearly, I agree with you and with your clarification although I already knew these things.

Thanks anyway.
It's always a pleasure for me to talk to you about software developing :)

It's true (unfortunately) that the intrinsic structure of many operation is not easily compatible with a multi core environment and it's really hard to brake their "atomic" structure.

Fortunately there are some kind of operations that, even in a "consumer" software, can be easily crunched by the modern GPU in a "super multi core" fashioned way.

Just to close this interesting topic with a "developing" curiosity...

I don't know if you already know this, but some times ago the guys at "Solid Iris", (the author of TheaRender now aquired by Altair)
were able to create a very efficient UNBIASED render algorithm that runs superfast on both CPU and GPU simultaneously.
This is one of the very rare cases where you can buy a software that will use ALL the computing power of your PC and in this case
for example really worth to buy a superfast multicore CPU and a powerful GPU and you will not waste not even a "penny" :)

I have TheaRender and it's a pleasure to see how it crunches data simultaneously with my i7-7700K and the Gtx 1080 Ti at the maximum speed.

Just a final side note....some times ago I was studying a really interesting programming language called "Erlang", a language that is especially designed
for developing scalable systems. Anyway I think it's not very suitable for developing "desktop" CG software. The unique software that I know that uses Erlang is Wings3D.

Have a nice day and thanks a lot for giving me the chance to talk about these things.

Ciao!

Marco (mkdm)
From: James (JFH)
24 Oct 2017   [#649] In reply to [#634]
Hi All,

It seems that I was mistaken about the reason for long generation time for my last .nod file.

As it turns out the culprit was excessive number of boolean operations.
By instead using mLoft2 node it was possible to dramatically reduce waiting time.
This substantially more complex form draws to screen in just a few seconds.



James

Attachments:
OM#2.nod

Image Attachments:
OM#2.jpg 


From: Karsten (KMRQUS)
24 Oct 2017   [#650] In reply to [#649]
James,

Respect!
Greate Job!

Karsten
From: Frenchy Pilou (PILOU)
24 Oct 2017   [#651]
This structure has it's mesh truly intersected ? (no edges ("tubes") intersected)
From: James (JFH)
24 Oct 2017   [#652] In reply to [#650]
Karsten,

It hardly needs to be said, but it was your mLoft2 node that resolved it.

Are you working on anything...node-wise?

I don't want to sound like I'm never satisfied, but I was hoping for
a couple of new nodes after to you posted the following:

<<Yep! It seems that we are missing a Network node;-)
And rebuild curve would also help for a complete toolchain!>>

And of course you work on form-finding is beyond my wildest dreams
<<these are the things that drive me>>

So back to you: Respect!
:) James

Show messages:  1-12  …  573-592  593-612  613-632  633-652  653-672  673-692  693-712  …  1853-1859