[yt-users] Volume Rendering and Memory usage

Matthew Turk matthewturk at gmail.com
Wed Feb 2 09:42:12 PST 2011


Jeff, you are absolutely right.  Maybe a better solution would be:

for g in pf.h.grids:
   if na.any(na.isnan.na.log10(grid["Density"]))): raise RuntimeError

That should be a more true-to-life method.

-Matt

On Wed, Feb 2, 2011 at 12:40 PM, j s oishi <jsoishi at gmail.com> wrote:
> Hi Matt,
>
> Could it not also be from a negative value that has had its log() taken?
>
> j
>
>
>
>
>
> On Wed, Feb 2, 2011 at 9:38 AM, Matthew Turk <matthewturk at gmail.com> wrote:
>> Hi Andrew,
>>
>> Okay, I have seen this before.  I think it is related to a bad data
>> value that it's trying to traverse.  In the past this has been caused
>> by NaNs, usually from a zero value that has been logged, as I believe
>> other values should be handled correctly.  Can you try this code for
>> me?
>>
>> for g in pf.h.grids:
>>    if na.any(grid["Density"] == 0): raise RuntimeError
>>
>> and see if it proceeds to completion?  I will see if I can think of a
>> good way to handle NaNs; obviously a segfault is a pretty poor
>> strategy.
>>
>> -Matt
>>
>> On Wed, Feb 2, 2011 at 12:32 PM, Andrew Myers <atmyers at berkeley.edu> wrote:
>>> Hi Matt,
>>>
>>> Thanks for the help. This is the outcome of the "bt" command in gdb:
>>>
>>> (gdb) bt
>>> #0  __pyx_f_2yt_9utilities_9amr_utils_FIT_get_value (__pyx_v_self=0x87ab9c0,
>>> __pyx_v_dt=0.00024472523295100413, __pyx_v_dvs=0x50e9d670,
>>> __pyx_v_rgba=0x7fffd8a94f60,
>>>     __pyx_v_grad=<value optimized out>) at yt/utilities/amr_utils.c:13705
>>> #1  __pyx_f_2yt_9utilities_9amr_utils_21TransferFunctionProxy_eval_transfer
>>> (__pyx_v_self=0x87ab9c0, __pyx_v_dt=0.00024472523295100413,
>>> __pyx_v_dvs=0x50e9d670,
>>>     __pyx_v_rgba=0x7fffd8a94f60, __pyx_v_grad=<value optimized out>) at
>>> yt/utilities/amr_utils.c:14285
>>> #2  0x00002b5e0a62c464 in
>>> __pyx_f_2yt_9utilities_9amr_utils_15PartitionedGrid_sample_values
>>> (__pyx_v_self=0x50e9d610, __pyx_v_v_pos=<value optimized out>,
>>>     __pyx_v_v_dir=<value optimized out>, __pyx_v_enter_t=23.346866210722702,
>>> __pyx_v_exit_t=<value optimized out>, __pyx_v_ci=<value optimized out>,
>>>     __pyx_v_rgba=0x7fffd8a94f60, __pyx_v_tf=0x87ab9c0) at
>>> yt/utilities/amr_utils.c:17719
>>> #3  0x00002b5e0a62ce16 in
>>> __pyx_f_2yt_9utilities_9amr_utils_15PartitionedGrid_integrate_ray
>>> (__pyx_v_self=0x50e9d610, __pyx_v_v_pos=0x7fffd8a94fd0,
>>>     __pyx_v_v_dir=0x45457d0, __pyx_v_rgba=0x7fffd8a94f60,
>>> __pyx_v_tf=0x87ab9c0) at yt/utilities/amr_utils.c:17386
>>> #4  0x00002b5e0a624876 in
>>> __pyx_pf_2yt_9utilities_9amr_utils_15PartitionedGrid_2cast_plane
>>> (__pyx_v_self=0x50e9d610, __pyx_args=<value optimized out>,
>>>     __pyx_kwds=<value optimized out>) at yt/utilities/amr_utils.c:16199
>>> #5  0x0000000000495124 in call_function (f=0x5a7ce490, throwflag=<value
>>> optimized out>) at Python/ceval.c:3706
>>> #6  PyEval_EvalFrameEx (f=0x5a7ce490, throwflag=<value optimized out>) at
>>> Python/ceval.c:2389
>>> #7  0x00000000004943ff in call_function (f=0x87aa260, throwflag=<value
>>> optimized out>) at Python/ceval.c:3792
>>> #8  PyEval_EvalFrameEx (f=0x87aa260, throwflag=<value optimized out>) at
>>> Python/ceval.c:2389
>>> #9  0x0000000000495d6d in PyEval_EvalCodeEx (co=0x24286c0, globals=<value
>>> optimized out>, locals=<value optimized out>, args=0xb62c38, argcount=2,
>>> kws=0xb62c48,
>>>     kwcount=0, defs=0x242a2a8, defcount=1, closure=0x0) at
>>> Python/ceval.c:2968
>>> #10 0x0000000000493c79 in call_function (f=0xb62ac0, throwflag=<value
>>> optimized out>) at Python/ceval.c:3802
>>> #11 PyEval_EvalFrameEx (f=0xb62ac0, throwflag=<value optimized out>) at
>>> Python/ceval.c:2389
>>> #12 0x0000000000495d6d in PyEval_EvalCodeEx (co=0x2b5e01aed288,
>>> globals=<value optimized out>, locals=<value optimized out>, args=0x0,
>>> argcount=0, kws=0x0, kwcount=0,
>>>     defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:2968
>>> #13 0x0000000000495db2 in PyEval_EvalCode (co=0x87ab9c0, globals=0x50e9d670,
>>> locals=0x72f1270) at Python/ceval.c:522
>>> #14 0x00000000004b7ee1 in run_mod (fp=0xb54ed0, filename=0x7fffd8a965a4
>>> "vr.py", start=<value optimized out>, globals=0xb03190, locals=0xb03190,
>>> closeit=1,
>>>     flags=0x7fffd8a958d0) at Python/pythonrun.c:1335
>>> #15 PyRun_FileExFlags (fp=0xb54ed0, filename=0x7fffd8a965a4 "vr.py",
>>> start=<value optimized out>, globals=0xb03190, locals=0xb03190, closeit=1,
>>> flags=0x7fffd8a958d0)
>>>     at Python/pythonrun.c:1321
>>> #16 0x00000000004b8198 in PyRun_SimpleFileExFlags (fp=<value optimized out>,
>>> filename=0x7fffd8a965a4 "vr.py", closeit=1, flags=0x7fffd8a958d0) at
>>> Python/pythonrun.c:931
>>> #17 0x0000000000413e4f in Py_Main (argc=<value optimized out>,
>>> argv=0x7fffd8a959f8) at Modules/main.c:599
>>> #18 0x00002b5e0259a994 in __libc_start_main () from /lib64/libc.so.6
>>> #19 0x00000000004130b9 in _start ()
>>>
>>> Thanks,
>>> Andrew
>>>
>>>
>>> On Wed, Feb 2, 2011 at 5:25 AM, Matthew Turk <matthewturk at gmail.com> wrote:
>>>>
>>>> Hi Andrew,
>>>>
>>>> That's an odd bug!  Do you think you could get a backtrace from the
>>>> segfault?  You might do this by setting your core dump ulimit to
>>>> unlimited:
>>>>
>>>> [in base]
>>>>
>>>> ulimit -c unlimited
>>>>
>>>> [in csh]
>>>>
>>>> limit coredumpsize unlimited
>>>>
>>>> and then running again.  When the core dump gets spit out,
>>>>
>>>> gdb python2.6 -c that_core_file
>>>> bt
>>>>
>>>> should tell us where in the code it died.  Sam Skillman should have a
>>>> better idea about any possible memory issues, but the segfault to me
>>>> feels like maybe there's a roundoff that's putting it outside a grid
>>>> data array space or something.
>>>>
>>>> Sorry for the trouble,
>>>>
>>>> Matt
>>>>
>>>> On Tue, Feb 1, 2011 at 11:13 PM, Andrew Myers <atmyers at berkeley.edu>
>>>> wrote:
>>>> > Hello yt users,
>>>> >
>>>> > I'm trying to volume render an Orion simulation with about 6,000 grids
>>>> > and
>>>> > 100 million cells, and I think I'm running out of memory. I don't know
>>>> > if
>>>> > this is large compared to other simulations people have volume rendered
>>>> > before, but if I set the width of my field of view to be 0.02 pc (20
>>>> > times
>>>> > smaller than the entire domain), the following code works fine. If I set
>>>> > it
>>>> > to 0.04 pc or anything larger, the code segfaults, which I assume means
>>>> > I'm
>>>> > running out of memory. This happens no matter how many cores I run on -
>>>> > running in parallel seems to be speed up the calculation, but not
>>>> > increase
>>>> > the size of the domain I can render. Am I doing something wrong? Or do I
>>>> > just need to find a machine with more memory to do this on? The one I'm
>>>> > using now has 3 gigs per core, which strikes me as pretty solid. I'm
>>>> > using
>>>> > the trunk version of yt-2.0. Here's the script for reference:
>>>> >
>>>> > from yt.mods import *
>>>> >
>>>> > pf = load("plt01120")
>>>> >
>>>> > dd = pf.h.all_data()
>>>> > mi, ma = na.log10(dd.quantities["Extrema"]("Density")[0])
>>>> > mi -= 0.1 ; ma += 0.1 # To allow a bit of room at the
>>>> > edges
>>>> >
>>>> > tf = ColorTransferFunction((mi, ma))
>>>> > tf.add_layers(8, w=0.01)
>>>> > c = na.array([0.0,0.0,0.0])
>>>> > L = na.array([1.0, 1.0, 1.0])
>>>> > W = 6.17e+16 # 0.02
>>>> > pc
>>>> >
>>>> > N = 512
>>>> >
>>>> > cam = Camera(c, L, W, (N,N), tf, pf=pf)
>>>> > fn = "%s_image.png" % pf
>>>> >
>>>> > cam.snapshot(fn)
>>>> >
>>>> > Thanks,
>>>> > Andrew Myers
>>>> >
>>>> >
>>>> >
>>>> > _______________________________________________
>>>> > yt-users mailing list
>>>> > yt-users at lists.spacepope.org
>>>> > http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>>> >
>>>> >
>>>> _______________________________________________
>>>> yt-users mailing list
>>>> yt-users at lists.spacepope.org
>>>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>>
>>>
>>> _______________________________________________
>>> yt-users mailing list
>>> yt-users at lists.spacepope.org
>>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>>
>>>
>> _______________________________________________
>> yt-users mailing list
>> yt-users at lists.spacepope.org
>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>



More information about the yt-users mailing list