Charities chosen for donation

This week at Spatial's 3D Insiders' Summit we gave custom poker chips to attendees. We asked that everyone place their chips in tubes corresponding with the charities to which they would like Spatial to donate. The options were the American Cancer Society, American Red Cross, and Donate Life America

Spatial poker chipYou chose the following allocations for Spatial to donate $1500:

  • 39% to American Cancer Society
  • 34% to American Red Cross
  • 27% Donate Life America 

Thank you for participating, and for being a part of the Spatial Community!

A Leap of Faith

By jeff

In earlier posts I’ve written a lot about the various approaches to multiprocessing and the potential benefits. What I haven’t talked much about is the risk and commitment one must accept when embracing these technologies. The efforts go well beyond the initial investigation and implementation phases, to ongoing testing and maintenance. It is a continual obligation to assure correctness throughout the life-cycle of a multithreaded product.

What is the risk?  In a nutshell I would say non-deterministic behavior, which can exhibit itself either subtly - as a slightly different result from an operation - or drastically as in an application crash - to just about anything in between. Whether caused by operations being performed in different order or by obscure race-conditions, this behavior is unacceptable.

There is little more frustrating than trying to reproduce a critical customer issue that occurs randomly and only when multithreading is enabled. This is also a double whammy in that it not only takes a lot of effort to report such issues, but also to diagnose and correct them. Fortunately there are ways to significantly reduce the potential for these sorts of issues with a modicum of commitment.

What is the commitment? It is a gradual increase in checks and balances that ultimately lead to a high level of confidence. This ranges from increased awareness and understanding in the development organization to a rigorous testing infrastructure. Investments made here will certainly pay off in the long run.

Spatial has accepted the risks associated with making ACIS thread-safe and has firmly committed to assuring correctness.  Although this was a difficult decision, with an ongoing burden, we knew it was necessary to allow our customers to take advantage of the multi-core revolution. We wanted to make sure that ACIS wasn’t the bottleneck.

To understand what it took for us to fully support our decision, consider the major areas we focused on:

Spreading the knowledge

In my experience, good developers are willing to tackle just about anything; from porting code to AIX, to writing unit tests, to authoring documentation. The same holds true for multiprocessing. Given the opportunity, I bet most developers would welcome the opportunity to learn about developing thread-safe code.  We took this a step further and put a group of developers in a room and let them learn how to add multiprocessing to ACIS functionality. The result of this exercise is our multithreaded entity-point-distance functionality, which scales near linearly to the number of available processors.

Developing test suites

A good test is worth a thousand … somethings? The truth is that we rely on our tests, so it behooves us to invest in good ones. We’ve not only developed a fair number of tests to make sure things work correctly, but also to make sure the results remain identical, with and without multithreading.

Employing dedicated hardware

Having machines with varying configurations is an important aspect of commercial testing environments. In the multiprocessing case, it is paramount. For example, dual core machines may never exhibit a problem that routinely occurs on 8 or 16 core machines.  Spatial has made investments in systems that contain anywhere from two to 48 cores. Additionally, most of our developers have at least eight cores in their primary systems.

Developing tools

Trust is a good thing, but apparently proof is better. Developing in-house tools to enforce coding guidelines is a common practice. For instance, we’ve developed a tool that routinely checks our code base for newly added global and static variables. After all, these are the root of the problem for thread-safety. The tool is another safety net to help us address issues efficiently.

Utilizing commercial tools

In my opinion, a commercial grade race detector is an absolute necessity when developing multithreaded code. I’ve been especially vocal about this to the folks at Microsoft. However, Intel beat them to the punch with their Parallel Studio toolset. Specifically, Parallel Inspector is worth its weight in platinum. I use it regularly and we are now in the process of integrating it into our automated testing system to help discover data races.

Our commitment to multiprocessing has involved cross-team projects to spread knowledge, purchasing dedicated multi-core hardware, developing specialized test suites, developing in-house tools to analyze code, and making commercial tools such as race-detectors and performance analyzers available to our development staff.  It may sound like a lot, but it has become a part of our DNA.

I think it’s fair to say that most rewards involve taking risks and making commitments. Improving your applications performance by factors that go well beyond what is possible with even the best serial code is well worth the investment.  What’s keeping you from taking the leap?

Tags:

In my last post I mentioned C3D Toolkit, our JavaScript-based demo application, and said I’d discuss it more in another post.  Well, here it is :)

Those of you who are ACIS customers are probably familiar with acis3dt.exe – our Scheme-based demo application (which I’ll call A3DT).  For those of you who aren’t, it’s an interactive application, written in the mid-90s, that lets you view and manipulate ACIS models by typing script commands (Scheme expressions).  The view window provides mouse-driven picking and view manipulation, but anything you can do with the mouse can also be done through a Scheme expression.  There is also a helper application which can be used to edit scripts and send them to A3DT (either entirely or line-by-line) for execution, or scripts can be run from the command line in “batch” mode (for testing).

A3DT has been VERY useful over the years for ACIS, in many ways:

  • Most of our tests are written in scheme
  • Customers submit bugs as scheme scripts
  • Customers are encouraged to prototype their workflows in scheme, then examine the C++ behind the script (the extensions are shipped as source code) and use that to guide their application development.
  • Scheme is the primary demo tool for ACIS – our Technical Account Managers (TAMs) often find themselves writing scripts “on the fly” to answer specific customer questions about ACIS’ capabilities.
  • When developers want to “play with” ACIS (e.g. create 100,000 blocks to test performance) they do it in scheme.

And now, let’s fast-forward to when we began working on componentizing CGM.  In CGM we didn’t have such a scripting engine – instead we had an in-house unit testing engine that could run unit test executables.  If you think about it, this made perfect sense.  CGM was not developed as a stand-alone product; instead it was part of a GUI-based feature modeling application.  In other words, CATIA filled most of the roles for CGM that A3DT fills for ACIS. 

For CGM component, however, this was not sufficient.  We first noticed this when writing tests – we found ourselves trying to write unit test executables for tests that were really acceptance tests.  This was extremely expensive in developer time – being able to see the models you’re creating and do graphical picks on them is extremely important when writing tests of even mildly complicated workflows (e.g. create a block then fillet one of the edges).  A more technical way to think of this is that the overhead due to violations of Once and Only Once involved in setting up the input scenarios (which I’ve discussed in the context of design-by-contract) is prohibitively expensive. 

A more important problem is that unit tests don’t use the code the way that our customers do: in an application.  This is the heart of App Driven Development: you should try to use your own product in the way your customers will.

At the same time, our TAMs were used to having a demo application available for use in presenting our products to customers. 

To address these problems, we developed the C3D Toolkit application.  We chose JavaScript rather than Scheme as the scripting language, and we used a more modern application architecture and GUI, but at its heart C3D fills the same role as A3DT – an interactive GUI application that lets you play around with the modeler, while at the same time being able to capture complex workflows or demos in an executable script.

C3D Toolkit

One of the things that surprised me (but probably shouldn’t have) in all this is how rarely people think about scripting interfaces in terms of supplying a command-line interface to applications.  In our experience with A3DT (and now C3D), the primary utility is in the ability to sit in front of the application and interactively figure out, line-by-line, what you want to do, while capturing what you’ve figured out in a script.  In contrast, it seems like most people think of the utility of scripting in terms of being able to write scripts that will be processed in “batch” mode; in other words it’s very similar to programming, except you don’t have to recompile the executable when you change (or extend) the program.  I imagine that a lot of this is driven by the browser-based application market; in such applications the scripting language isn’t the actual interface that’s presented to the user; it’s simply an intermediate programming language that can be run on the browser.  I think ignoring the potential of scripting as an interactive interface is a mistake – there are a lot of benefits to having a scripting “hook” into your application.

Tags:

The challenges of a major software release are not unique to Spatial. And like other organizations, the launch process looks different to various departments in the organization. There are those in Marketing who view each release event as part of a beautiful, butterfly-like progression. On the other end of the spectrum, you have factions within development and testing who see things as more like the manufacturing of really tasty sausage. Across all of Spatial and our partners, however, we are very happy to announce the general availability of 3D ACIS Modeler R23. The R23 release combines improvements to address specific customer requests, general 3D market needs, and improvements that further our strategic roadmap goals.

Nearly all application developers will benefit from significant performance improvements in both 3D ACIS Modeler and 3D InterOp. As part of Spatial’s continuing multi-core strategy, 3D ACIS Modeler includes support for multi-threaded faceting. To simplify implementation for the user, thread management is handled completely within the modeler.  Restoring of SAB models, a function used by most ACIS applications, brings dramatic speed improvements of up to 40%. Developers can combine various performance improvements in 3D ACIS Modeler, as well as in 3D InterOp, for even more sizeable performance gains.

Driven by the ongoing priority for advancements to core algorithms, 3D ACIS Modeler extends Boolean and Stitching capabilities. 3D ACIS Modeler includes enhancements to several of the Fuzzy Boolean operations. These types of operations are especially useful in applications which use an approximation of a piece of geometry in a Boolean operation. ACIS is now better able to handle near-coincidence between surfaces that previously would have resulted in sliver faces, performance problems, or even failure. 

Comparison of the Result of a Fuzzy Boolean Subtract Operation in R22 and R23

Cellular topology allows developers to attach attributes, such as material properties, to volumetric cells. New improvements now allow these attributes to migrate through Boolean and Glue operations. Enhancements to the Glue operation provide non-regularized unite capabilities. This is especially useful in flows where manifold solid bodies are joined along coincident faces, providing a big gain in performance compared to using the standard unite operator.

Seeded feature detection is also available in 3D ACIS Modeler R23. This new capability offers significant benefits to direct-modeling applications and other workflows that operate on logical groups of faces. Feature detection functionality helps in the identification of protrusion and depression features as well as blends. Developers have the flexibility to specify whether or not the blends at the boundary of a depression or protrusion feature are to be included as part of the feature.

 

3D ACIS Modeler also includes new APIs for the extrusion of simple planar faces with the elimination of unnecessary error checking and other overhead. This new API is up to 90% faster and offers significant benefit to industries such as EDA, CAE, and AEC. In these industries, a lot of unnecessary effort goes into the extrusion of something simple like a 2D rectangle which may be used for an electrical component.

For a complete list of improvements see the “R23 Release Notes for 3D ACIS Modeler”. Interested in what’s new in 3D InterOp? Take a look at the “R23 Release Notes for 3D InterOp“. There’s an impressive number of improvements and new features, including a new component option which extends 3D InterOp access to include the native graphical representation of the original CAD model, including graphical PMI, for all 3D InterOp supported formats.

Finally, you can learn much more about 3D ACIS Modeler, as well as the complete portfolio of Spatial components, at the 2012 3D Insiders’ Summit held September 25-26 in Blackhawk Colorado. Summit attendees enjoy the unique opportunity to hear directly from Spatial’s management team about Spatial’s vision and strategy, and get the latest and detailed information on all of Spatial’s products from our software developers and product managers.

Tags:
 

 

3D Insiders' Summit, September 25-26, 2012, Black Hawk, Colorado

Learn More
View Agenda
Register
Ameristar Hotel/Casino

Twitter Facebook LinkedIn YouTube RSS