As guided by feedback both internal and external, continual improvement of Alembic's performance remains an ongoing goal of the project. And, over time, it’s become clear that the dependence upon HDF5 (as specific to Alembic) is a significant hurdle to further performance.
Specifically:
1) HDF5 is thread-safe but not thread efficient. As client tools increasingly rely upon concurrent access for reading scene data, this matters much more. (See details here: http://www.hdfgroup.org/hdf5-quest.html#tsafe)
2) While Alembic atop HDF5 provides very efficient storage of large datasets, the structural overhead of many small objects and properties is less efficient.
Fortunately, Alembic's API design has an abstraction layer atop the underlying data format (on disk or otherwise). We initially chose HDF5 as the container format based on its history of successful use within ILM/Imageworks but we designed it to be swapped out if the case arose in the future.
With a few years of experience with Alembic now, it’s clear we need a back-end data format that meets the following requirements:
1) A simple API to easily and efficiently express the higher-level Alembic APIs without change to client code.
2) Minimal library dependencies
3) Data sharing for Alembic's de-duplication features
4) Input/output abstraction (for potentially reading from non-file sources)
5) Thread-efficient reading
6) Low overhead for small data cases
We’ve looked extensively and haven’t found anything freely available that meets our requirements without further trade-offs. So, we have prototyped a new library (Ogawa) and integrated it with Alembic for testing. If you’re curious, you can see the work in progress here:
https://code.google.com/r/millerlucas-dev/source/browse?name=ogawa
As this is a prototype version, we will be spending the next few months gathering and vetting suggestions from the community and honing the implementation to certify it for production use. We are excited by its prospects as -- even at this early stage -- we're seeing these significant improvements in alignment with our goals for Alembic’s future:
1) File sizes are on average 5-15% smaller. Scenes with many small objects should see even greater reductions.
2) Single-threaded reads average around 4x faster
3) Multi-threaded reads can improve by 25x (relative to the same operations in the existing HDF5 back-end) on 8 core systems.
We’re pretty enthusiastic about it.
Of course, we’ll maintain backwards compatibility. Backwards compatibility remains another key goal of the Alembic project and as such, the ability to read and write Alembic data with the existing HDF5 back-end will continue to be supported for the foreseeable future. Only very minor changes to client code are required to support reading the new format transparently along with the old. (This relates only to the instantiation of the archive itself and should be confined to a line or two of code.)
--
You received this message because you are subscribed to the Google Groups "alembic-discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to alembic-discuss...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
We’ve looked extensively and haven’t found anything freely available that meets our requirements without further trade-offs. So, we have prototyped a new library (Ogawa) and integrated it with Alembic for testing. If you’re curious, you can see the work in progress here:
https://code.google.com/r/millerlucas-dev/source/browse?name=ogawa
--
--
A command line converter is already included with the prototype. For more details see:
https://code.google.com/r/millerlucas-dev/source/browse?name=ogawa#hg%2Fexamples%2Fbin%2FAbcConvert
A command line converter is already included with the prototype. For more details see:
https://code.google.com/r/millerlucas-dev/source/browse?name=ogawa#hg%2Fexamples%2Fbin%2FAbcConvert
On May 9, 2013 12:04 AM, "Ivan Busquets" <ivanbu...@gmail.com> wrote:
That's fantastic news. Really exciting.Are there plans to add a command-line converter to help test performance vs older archives?Thanks,Ivan
On Wed, May 8, 2013 at 10:43 PM, Steven Caron <car...@gmail.com> wrote:
ah, that makes sense. well alembic is still pretty new, maybe it won't be long before we can shed hdf5 entirely.s
On Wednesday, May 8, 2013 10:05:30 PM UTC-7, Steve LaVietes wrote:It's possible to build without HDF5 but you sacrifice the ability to read older archives.
--
You received this message because you are subscribed to the Google Groups "alembic-discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to alembic-discussion+unsub...@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "alembic-discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to alembic-discussion+unsub...@googlegroups.com.
As guided by feedback both internal and external, continual improvement of Alembic's performance remains an ongoing goal of the project. And, over time, it�s become clear that the dependence upon HDF5 (as specific to Alembic) is a significant hurdle to further performance.
Specifically:
1) HDF5 is thread-safe but not thread efficient. As client tools increasingly rely upon concurrent access for reading scene data, this matters much more. (See details here: http://www.hdfgroup.org/hdf5-quest.html#tsafe)
2) While Alembic atop HDF5 provides very efficient storage of large datasets, the structural overhead of many small objects and properties is less efficient.
Fortunately, Alembic's API design has an abstraction layer atop the underlying data format (on disk or otherwise). We initially chose HDF5 as the container format based on its history of successful use within ILM/Imageworks but we designed it to be swapped out if the case arose in the future.
With a few years of experience with Alembic now, it�s clear we need a back-end data format that meets the following requirements:
1) A simple API to easily and efficiently express the higher-level Alembic APIs without change to client code.
2) Minimal library dependencies
3) Data sharing for Alembic's de-duplication features
4) Input/output abstraction (for potentially reading from non-file sources)
5) Thread-efficient reading
6) Low overhead for small data cases
We�ve looked extensively and haven�t found anything freely available that meets our requirements without further trade-offs. So, we have prototyped a new library (Ogawa) and integrated it with Alembic for testing. If you�re curious, you can see the work in progress here:
https://code.google.com/r/millerlucas-dev/source/browse?name=ogawa
As this is a prototype version, we will be spending the next few months gathering and vetting suggestions from the community and honing the implementation to certify it for production use. We are excited by its prospects as -- even at this early stage -- we're seeing these significant improvements in alignment with our goals for Alembic�s future:
1) File sizes are on average 5-15% smaller. Scenes with many small objects should see even greater reductions.
2) Single-threaded reads average around 4x faster
3) Multi-threaded reads can improve by 25x (relative to the same operations in the existing HDF5 back-end) on 8 core systems.
We�re pretty enthusiastic about it.
Of course, we�ll maintain backwards compatibility. Backwards compatibility remains another key goal of the Alembic project and as such, the ability to read and write Alembic data with the existing HDF5 back-end will continue to be supported for the foreseeable future. Only very minor changes to client code are required to support reading the new format transparently along with the old. (This relates only to the instantiation of the archive itself and should be confined to a line or two of code.)
We look forward to your feedback and any questions you may have.
Steve LaVietes
--
You received this message because you are subscribed to the Google Groups "alembic-discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to alembic-discuss...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
�
�
--
--
<cluster.png>
Guys as more figures are coming in, it's getting more and more exciting! :)
A suggestion, if it's not already in the pipe:�Is it possible to store a UUID/Hash/MD5 by standard in ABCs when using Ogawa?
That would be even more awesome. Basically it would resolve once and for all the ABC update issues, we are having, Michel mentioned weeks ago in his topic.
Cheers,
On Tuesday, May 14, 2013 6:09:10 PM UTC+2, Alex Suter wrote:
Great news. That's in line with the gains we are seeing as well.�
� � � �-- Alex�
Sent from Mailbox for iPhone
--
You received this message because you are subscribed to the Google Groups "alembic-discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to alembic-discuss...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
�
�
Hi Sam,
What exactly would be in the hash ? Is the hash of a parent expected to recursively cover all the hashes of the children ?
barnaby.
On 05/14/2013 02:49 PM, Sam Assadian wrote:
Guys as more figures are coming in, it's getting more and more exciting! :)
A suggestion, if it's not already in the pipe: Is it possible to store a UUID/Hash/MD5 by standard in ABCs when using Ogawa?
That would be even more awesome. Basically it would resolve once and for all the ABC update issues, we are having, Michel mentioned weeks ago in his topic.
Cheers,
On Tuesday, May 14, 2013 6:09:10 PM UTC+2, Alex Suter wrote:
Great news. That's in line with the gains we are seeing as well.
-- Alex—
Sent from Mailbox for iPhone
--
You received this message because you are subscribed to the Google Groups "alembic-discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to alembic-discuss...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
Hi Barnaby,
The previous discussion that Sam was hinting at from Michel is here:
Lucas
On Tue, May 14, 2013 at 3:08 PM, Barnaby Robson <bro...@ilm.com> wrote:
Hi Sam,
What exactly would be in the hash ? Is the hash of a parent expected to recursively cover all the hashes of the children ?
barnaby.
On 05/14/2013 02:49 PM, Sam Assadian wrote:
Guys as more figures are coming in, it's getting more and more exciting! :)
A suggestion, if it's not already in the pipe:�Is it possible to store a UUID/Hash/MD5 by standard in ABCs when using Ogawa?
That would be even more awesome. Basically it would resolve once and for all the ABC update issues, we are having, Michel mentioned weeks ago in his topic.
Cheers,
On Tuesday, May 14, 2013 6:09:10 PM UTC+2, Alex Suter wrote:
Great news. That's in line with the gains we are seeing as well.�
� � � �-- Alex
�
Sent from Mailbox for iPhone
--
You received this message because you are subscribed to the Google Groups "alembic-discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to alembic-discuss...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
�
�
--
You received this message because you are subscribed to the Google Groups "alembic-discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to alembic-discuss...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
�
�
--
You received this message because you are subscribed to the Google Groups "alembic-discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to alembic-discuss...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
�
�
--
As guided by feedback both internal and external, continual improvement of Alembic's performance remains an ongoing goal of the project. And, over time, it’s become clear that the dependence upon HDF5 (as specific to Alembic) is a significant hurdle to further performance.
Specifically:
1) HDF5 is thread-safe but not thread efficient. As client tools increasingly rely upon concurrent access for reading scene data, this matters much more. (See details here: http://www.hdfgroup.org/hdf5-quest.html#tsafe)
2) While Alembic atop HDF5 provides very efficient storage of large datasets, the structural overhead of many small objects and properties is less efficient.
Fortunately, Alembic's API design has an abstraction layer atop the underlying data format (on disk or otherwise). We initially chose HDF5 as the container format based on its history of successful use within ILM/Imageworks but we designed it to be swapped out if the case arose in the future.
With a few years of experience with Alembic now, it’s clear we need a back-end data format that meets the following requirements:
1) A simple API to easily and efficiently express the higher-level Alembic APIs without change to client code.
2) Minimal library dependencies
3) Data sharing for Alembic's de-duplication features
4) Input/output abstraction (for potentially reading from non-file sources)
5) Thread-efficient reading
6) Low overhead for small data cases
We’ve looked extensively and haven’t found anything freely available that meets our requirements without further trade-offs. So, we have prototyped a new library (Ogawa) and integrated it with Alembic for testing. If you’re curious, you can see the work in progress here:
https://code.google.com/r/millerlucas-dev/source/browse?name=ogawa
As this is a prototype version, we will be spending the next few months gathering and vetting suggestions from the community and honing the implementation to certify it for production use. We are excited by its prospects as -- even at this early stage -- we're seeing these significant improvements in alignment with our goals for Alembic’s future:
1) File sizes are on average 5-15% smaller. Scenes with many small objects should see even greater reductions.
2) Single-threaded reads average around 4x faster
3) Multi-threaded reads can improve by 25x (relative to the same operations in the existing HDF5 back-end) on 8 core systems.
We’re pretty enthusiastic about it.
Of course, we’ll maintain backwards compatibility. Backwards compatibility remains another key goal of the Alembic project and as such, the ability to read and write Alembic data with the existing HDF5 back-end will continue to be supported for the foreseeable future. Only very minor changes to client code are required to support reading the new format transparently along with the old. (This relates only to the instantiation of the archive itself and should be confined to a line or two of code.)
We look forward to your feedback and any questions you may have.
Steve LaVietes