Hi everyone,

I haven't tried the C solution yet, but I have gotten everything to work in three different ways:

1) The standard solution, described by David Mertens:

$PDL::undefval = double->badvalue;
...;
my $pdl = pdl($ref);
$pdl->badflag(1);

2) Chris Marshall's modification of the nan solution:

$PDL::undefval = 'nan';
...;
my $pdl = pdl($ref)->setnantobad->sever;

3) Not allowing the process to run multiple threads in parallel (threads as in "use theads", not as in PDL threading).

I hadn't expected objects-crossing-threads issues, since piddles were only used in the threads they were created in, but in hindsight, maybe my original pdl(0)->setbadat(0) was optimized to a constant piddle at compile time? If so, the executing threads were effectively using a "thread 0" object, with typically wacky results. (Though that may not explain why the nan approach failed without the ->sever.)

Thank you all for your time, effort, help, and thoughtful responses. Enjoy the holidays!

-- Erich

P.S.  My perldl -V output is:

perlDL shell v1.354
 PDL comes with ABSOLUTELY NO WARRANTY. For details, see the file
 'COPYING' in the PDL distribution. This is free software and you
 are welcome to redistribute it under certain conditions, see
 the same file for details.

Summary of my PDL configuration

VERSION: PDL v2.4.9 (supports bad values)

$%PDL::Config = {
                  'BADVAL_PER_PDL' => '0',
                  'WITH_PROJ' => '1',
                  'FFTW_TYPE' => 'double',
                  'FFTW_LIBS' => [
                                   '/lib',
                                   '/usr/lib',
                                   '/usr/local/lib'
                                 ],
                  'WITH_FFTW' => '0',
                  'GSL_LIBS' => undef,
                  'WITH_IO_BROWSER' => '1',
                  'PROJ_INC' => undef,
                  'WHERE_PLPLOT_INCLUDE' => undef,
                  'HTML_DOCS' => '1',
                  'SKIP_KNOWN_PROBLEMS' => '0',
                  'WHERE_PLPLOT_LIBS' => undef,
                  'WITH_3D' => '0',
                  'FFTW_INC' => [
                                  '/usr/include/',
                                  '/usr/local/include'
                                ],
                  'WITH_POSIX_THREADS' => '1',
                  'POGL_VERSION' => '0.63',
                  'HIDE_TRYLINK' => '1',
                  'WITH_HDF' => '1',
                  'HDF_INC' => undef,
                  'POGL_WINDOW_TYPE' => 'glut',
                  'WITH_BADVAL' => '1',
                  'WITH_GD' => '1',
                  'FITS_LEGACY' => '1',
                  'WITH_SLATEC' => '1',
                  'BADVAL_USENAN' => '0',
                  'WITH_DEVEL_REPL' => '1',
                  'TEMPDIR' => '/tmp',
                  'PROJ_LIBS' => undef,
                  'USE_POGL' => '0',
                  'GD_LIBS' => undef,
                  'GSL_INC' => undef,
                  'GD_INC' => undef,
                  'WITH_GSL' => '1',
                  'OPTIMIZE' => undef,
                  'HDF_LIBS' => undef,
                  'MALLOCDBG' => {},
                  'WITH_MINUIT' => '1',
                  'WITH_PLPLOT' => '0',
                  'MINUIT_LIB' => undef
                };
Summary of my perl5 (revision 5 version 14 subversion 3) configuration:

  Platform:
    osname=linux, osvers=2.6.32-279.14.1.el6.x86_64, 
archname=x86_64-linux-thread-multi
    uname='linux buildvm-23.phx2.fedoraproject.org 2.6.32-279.14.1.el6.x86_64 
#1 smp mon oct 15 13:44:51 edt 2012 x86_64 x86_64 x86_64 gnulinux '
    config_args='-des -Doptimize=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 
-fexceptions -fstack-protector --param=ssp-buffer-size=4  -m64 -mtune=generic 
-Dccdlflags=-Wl,--enable-new-dtags -DDEBUGGING=-g -Dversion=5.14.3 
-Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Red Hat, 
Inc. -Dprefix=/usr -Dvendorprefix=/usr -Dsiteprefix=/usr/local 
-Dsitelib=/usr/local/share/perl5 -Dsitearch=/usr/local/lib64/perl5 
-Dprivlib=/usr/share/perl5 -Dvendorlib=/usr/share/perl5/vendor_perl 
-Darchlib=/usr/lib64/perl5 -Dvendorarch=/usr/lib64/perl5/vendor_perl 
-Darchname=x86_64-linux-thread-multi -Dlibpth=/usr/local/lib64 /lib64 
/usr/lib64 -Duseshrplib -Dusethreads -Duseithreads -Dusedtrace=/usr/bin/dtrace 
-Duselargefiles -Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog 
-Dman3ext=3pm -Duseperlio -Dinstallusrbinperl=n -Ubincompat5005 -Uversiononly 
-Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto 
-Ud_sethostent_r_proto -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto 
-Ud_endservent_r_proto -Ud_setservent_r_proto -Dscriptdir=/usr/bin'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=define, use64bitall=define, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe 
-fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE 
-D_FILE_OFFSET_BITS=64',
    optimize='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions 
-fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe 
-fstack-protector -I/usr/local/include'
    ccversion='', gccversion='4.6.3 20120306 (Red Hat 4.6.3-2)', gccosandvers=''
    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', 
lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='gcc', ldflags =' -fstack-protector'
    libpth=/usr/local/lib64 /lib64 /usr/lib64
    libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc 
-lgdbm_compat
    perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
    libc=, so=so, useshrplib=true, libperl=libperl.so
    gnulibc_version='2.14.90'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, 
ccdlflags='-Wl,--enable-new-dtags -Wl,-rpath,/usr/lib64/perl5/CORE'
    cccdlflags='-fPIC', lddlflags='-shared -O2 -g -pipe -Wall 
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector 
--param=ssp-buffer-size=4 -m64 -mtune=generic'
_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

Reply via email to