CiToCPT()

The engine.
Post Reply
orzech
Posts: 51
Joined: Wed Aug 04, 2010 11:40 pm

CiToCPT()

Post by orzech »

Hi again,

I'd love to delve into static_cast<DSL_ciDefinition *>(nodeDef)->CiToCpt() because this method throws an interop expection/freezes when I use SMILE in my .NET project. This happens only when a Noisy-MAX node has a big number of parents (say >= 25). I know that SMILE is not open source but is it possible to investigate this problem? At first I thought it can be a problem with my own code but everything works perfectly until I reach a certain parents limit. :? it would be great if I could see the source code of this method. Maybe I could provide some help.

Thanks in advance!
shooltz[BayesFusion]
Site Admin
Posts: 1417
Joined: Mon Nov 26, 2007 5:51 pm

Re: CiToCPT()

Post by shooltz[BayesFusion] »

This happens only when a Noisy-MAX node has a big number of parents (say >= 25).
CPT for 25 parents will need at least (2^25)*2*8 = 2^29 contiguous bytes (assuming binary nodes). It's quite likely that your application doesn't have 512 megabytes address space available in one chunk, even if physical memory is there.
orzech
Posts: 51
Joined: Wed Aug 04, 2010 11:40 pm

Re: CiToCPT()

Post by orzech »

shooltz wrote:It's quite likely that your application doesn't have 512 megabytes address space available in one chunk, even if physical memory is there.
That sounds like a serious problem. :/ I don't fell like complaining but it would be great if SMILE optimized internal CPT storage of Noisy-ORs. I guess that the problem isn't related to .NET wrapper since the wrapper itself uses unmanaged code anyway.

Is there anything I can to about it? If that's the cause it's simply impossible to deal with such memory-absorbing nodes using SMILE/GeNIe. The only solution is on-fly parent divorcing but what I want to get is just an 'untrackable network' for further optimizations. :)

Thanks
orzech
Posts: 51
Joined: Wed Aug 04, 2010 11:40 pm

Re: CiToCPT()

Post by orzech »

Ok, fortunately the problem IS related to the wrapper itself (actually both .NET and Java). I can fix this if you like but for more details please consult Adam. :)
Post Reply