v1.5.1 released

83 views
Skip to first unread message

Magnus Wrenninge

unread,
Feb 9, 2015, 8:06:07 PM2/9/15
to field...@googlegroups.com
I've just pushed a whole suite of updates to the GitHub repo. Almost all of the major changes are under-the-hood things that we have resolved recently here at Pixar. Field3D is now much more stable and fault tolerant in multi-threaded contexts when it comes to I/O.

Most notably, it is now perfectly safe to use multiple Field3DInputFile and Field3DOutputFile instances on separate threads. Field3D will now perform internal locking to avoid any race conditions. Also, the sparse read cache is now thread safe, and loading multiple SparseField instances with memory limiting enabled is supported.

Full list of changes below:

------------------------------------------------------------

Multithreading improvements
  • I/O routines for opening/closing/reading/writing are all fully thread safe. Multiple threads can read from separate files concurrently.
  • DenseField and SparseField both have numGrains() and getGrainBounds() which simplify multithreading workload balancing.
  • Improved robustness of the SparseFileManager and the lazy load/sparse cache implementation in general, especially in multithreaded contexts.

Adding coordinate system utility functions
  •   Coordinate system from basis vectors
  •   Coordinate system from bounding box
  •   Coordinate system from bounding box and voxel size

FieldCache
  • Field3D will now keep weak pointers to all loaded fields. 
  • If a field is loaded a second time, the cache will return a pointer to the already-loaded data, if it is still in-memory.

FileSequence
  • Utilities for resolving file sequences such as "/tmp/file.1-31#.f3d" into a list of filename strings

Various
  •   Added indexToCoord - inverse index-to-voxel mapping.
  •   Bug fix in FieldGroup's calculation of voxel size.
  •   Added MIPField<T>::concreteMipLevel() for accessing underlying data.
  •   makeMIP() now takes a template filter argument.
  •   MIP generation and resampling of half-precision fields now use 32 bits for calculations to avoid precision issues.
  •   MIP generation is now sparse-aware for efficiency.
  •   Updated filters in Resample.h to support arbitrary width.
  •   Added SparseField helper function - blockBounds() for computing block-space bounding boxes.

Richard Shaw

unread,
Feb 9, 2015, 10:29:07 PM2/9/15
to field...@googlegroups.com
On Mon, Feb 9, 2015 at 7:05 PM, Magnus Wrenninge <magnus.w...@gmail.com> wrote:
I've just pushed a whole suite of updates to the GitHub repo. Almost all of the major changes are under-the-hood things that we have resolved recently here at Pixar. Field3D is now much more stable and fault tolerant in multi-threaded contexts when it comes to I/O.

A couple of questions:
1. Is this update API/ABI compatible or will dependencies need to be rebuilt?
2. In browsing the github project I don't see a release tag for 1.5.1... I am looking in the right place? https://github.com/imageworks/Field3D/releases

Thanks,
Richard 

Magnus Wrenninge

unread,
Feb 10, 2015, 12:42:41 PM2/10/15
to field...@googlegroups.com
Hi Richard,

You make a good point actually, there are indeed API changes. So I think we should call this 1.6.0 after all. The changes that went out all started as bug fixes and internal improvements to 1.5.0, but in the process they did wind up requiring a few API changes. 

As for the releases page, that's a new GitHub feature that we haven't been using yet. I think the earlier release tags got auto-populated. I'll make sure to update once I fix the 1.6.0 tag.

Magnus

--
You received this message because you are subscribed to the Google Groups "Field3D dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to field3d-dev...@googlegroups.com.
To post to this group, send email to field...@googlegroups.com.
Visit this group at http://groups.google.com/group/field3d-dev.
For more options, visit https://groups.google.com/d/optout.

Richard Shaw

unread,
Feb 10, 2015, 10:18:37 PM2/10/15
to field...@googlegroups.com
I tried building the new release, 1.6.0 but ran into an issue:

Linking CXX executable create_and_write
/usr/bin/cmake -E cmake_link_script CMakeFiles/create_and_write.dir/link.txt --verbose=1
/usr/lib64/ccache/c++   -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic    -Wl,-z,relro  CMakeFiles/create_and_write.dir/apps/sample_code/create_and_write/main.cpp.o  -o create_and_write -rdynamic libField3D.so.1.6.0 -lhdf5 -lz -ldl -lm -lIex -lHalf -lIlmThread -lImath -lpthread -ldl -lz -lboost_regex -lboost_thread -lboost_program_options -lboost_system -Wl,-rpath,/home/build/rpmbuild/Field3D/BUILD/Field3D-1.6.0/build 
libField3D.so.1.6.0: undefined reference to `vtable for Field3D::v1_6::MIPFieldIO'
collect2: error: ld returned 1 exit status
make[2]: *** [create_and_write] Error 1

System is Fedora Linux 20, x86_64
gcc version 4.8.3 20140911 (Red Hat 4.8.3-7) (GCC)

Thanks,
Richard

Magnus Wrenninge

unread,
Feb 11, 2015, 1:26:43 PM2/11/15
to field...@googlegroups.com
Hi Richard,

Sorry, the CMake files didn't get included in the previous commit. It should be fixed now.

Magnus

Richard Shaw

unread,
Feb 11, 2015, 3:03:29 PM2/11/15
to field...@googlegroups.com
On Wed, Feb 11, 2015 at 12:26 PM, Magnus Wrenninge <magnus.w...@gmail.com> wrote:
Hi Richard,

Sorry, the CMake files didn't get included in the previous commit. It should be fixed now.

That got it... I added it as a patch.

Is the plan to re-tag 1.6.0 or go to 1.6.1? I just did a local build but I'll wait on that before I do official builds for Fedora. 

Thanks,
Richard

Magnus Wrenninge

unread,
Feb 11, 2015, 3:08:30 PM2/11/15
to field...@googlegroups.com
I'll tag it 1.6.1 - I just wanted to make sure things worked for you first. Does it seem to go through?

Thanks,
Magnus

--

Richard Shaw

unread,
Feb 11, 2015, 3:43:31 PM2/11/15
to field...@googlegroups.com
On Wed, Feb 11, 2015 at 2:08 PM, Magnus Wrenninge <magnus.w...@gmail.com> wrote:
I'll tag it 1.6.1 - I just wanted to make sure things worked for you first. Does it seem to go through?

Yup! No problem.

Richard 

Richard Shaw

unread,
Feb 11, 2015, 4:12:15 PM2/11/15
to field...@googlegroups.com
I also just tried Fedora rawhide (rolling release development version) which has gcc 5.0.0 and it built successfully, although there were a lot of warnings. Let me know if you want to take a look and I'll email you the build log.

Thanks,
Richard

Magnus Wrenninge

unread,
Feb 11, 2015, 4:20:46 PM2/11/15
to field...@googlegroups.com
Great! I just pushed the tag. Hopefully we're back in sync now.

Magnus

--

Joel Kronander

unread,
May 17, 2015, 8:10:51 PM5/17/15
to field...@googlegroups.com

When building using CMake, i had to add the boost system lib,

ie

change in CMakeList.txt

IF ( CMAKE_HOST_WIN32 )
# f3dinfo relies on program_options but don't include it, since
# for some reason, unlike all the other boost components, a link is
# forced via a pragma.
FIND_PACKAGE (Boost COMPONENTS  regex thread)
ELSE ()
FIND_PACKAGE (Boost COMPONENTS  regex thread program_options)
FIND_PACKAGE (MPI)
ENDIF ()

to

IF ( CMAKE_HOST_WIN32 )
# f3dinfo relies on program_options but don't include it, since
# for some reason, unlike all the other boost components, a link is
# forced via a pragma.
FIND_PACKAGE (Boost COMPONENTS system regex thread)
ELSE ()
FIND_PACKAGE (Boost COMPONENTS system regex thread program_options)
FIND_PACKAGE (MPI)
ENDIF ()






Magnus Wrenninge

unread,
May 22, 2015, 1:00:53 PM5/22/15
to field...@googlegroups.com
Thanks Joel, I'll update the CMake setup.

Magnus

Reply all
Reply to author
Forward
0 new messages