What Makes a Standard?
I am constantly asked about OMG’s status as a “standards organization.” At first blush, we aren’t a standards organization; we’re not accredited by any government (although we are endorsed and recognized as consensus-based standards organizations by some government agencies, notably the United States Department of Defense), and we don’t use the ISO standards process. So what makes us a standards organization?
The answer is related to the title of this essay. What is a standard? Well, a de facto standard is a specification that is used by the majority of an industry (or perhaps just a large percentage of an industry). Many of the API’s and protocols of Microsoft Windows and Linux weren’t defined by open, international, neutral standards bodies, but the fact that they are widely used means they are de facto standards, by definition. Some of the API’s and protocols in Windows and Linux are indeed defined and maintained by accredited standards organizations; those are de jure standards.
OMG is stuck squarely between those camps; we use our rapid, international, neutral, open community-driven process involving end-users, vendors, academics & government agencies to define requirements and quickly develop a specification that is available commercially (or open-source), in the hopes that it will (with the support of a wide swath of the industry) become a de facto standard. Our relationships with international accredited standards bodies like ISO and ITU, and national standards bodies like BSI, JSA, AFNOR, Standards Australia & ANSI means that many of our standards are also recognized, accredited de jure standards. We’re the best of both worlds. What we do is rapidly achieve multilateral agreements between organizations in an open community; the results are things like best practices, use cases, success stories—and standards.
But that doesn’t define how to get to a de facto standardization. Certainly involving many players in the industry is important. Achieving market adoption however involves building the “whole product” around a specification. One needs education, training, certification, well-defined and easily found use cases, books, documentation, a corps of trained developers—the same thing you need to make your next product successful, in fact.
At OMG we believe that to be useful, a standard has to actually be used, and supported with all of those elements of a “whole product.” Vendors need to implement it, and end-users want it and see the value to their businesses. Every standard that OMG creates must have an implementation, either in open source or otherwise commercially available. But why stop there? Standards don’t generally stand alone, they’re part of a larger business ecosystem. To help nurture this business ecosystem around our standards, we support them by ensuring that there are implementations, but also through our work with training and education providers, authors of books on the subject, seminars, webinars, conferences, and certification.
Because our holistic approach to standards is widely respected across the IT industry, over the years other organisations have brought their work to OMG to go through our standardization process. Examples include BPMN (originally developed by the Business Process Management Initiative, now part of OMG) and the MDC Information Model (originally developed by the Meta Data Coalition). Today we are very excited about our forthcoming work with the High Performance Embedded Computing Software Initiative (HPEC-SI), and the possibility of adding the Vector Signal Image Processing Library (VSIPL) to OMG's standards catalogue. OMG has been doing real-time and distributed, safety-critical systems standardization for almost 20 years, so this collaboration is a good fit for both OMG and HPEC-SI. So what is VSIPL?
In 1996 DARPA invested in creating a standard API for signal processing applications to provide portability of signal processing applications across hardware platforms to preserve software investments and reduce costs while maintaining performance comparable to vendors’ proprietary signal processing libraries. This effort, a partnership of academia, government and industry, resulted in VSIPL. This was later followed by the High Performance Embedded Computing Software Initiative (HPEC-SI), another DARPA initiative, to extend VSIPL to C++ as well as providing an interface that would include parallelization as a natural part of the interface. The goal was to provide portability, performance and programmer productivity.
HPEC-SI is a partnership of industry, academic and government organizations whose goal is to foster open standards for real-time embedded computing, thereby achieving high performance, increasing programmer productivity and maintaining portability across a range of processor architectures.
The Vector Signal and Image Processing Library is a set of open standard APIs (VSIPL for C and VSIPL++ for C++) for real-time embedded computing. VSIPL and VSIPL++ contain hundreds of functions used for common signal processing kernel and other computations. These functions include basic arithmetic, trigonometric, transcendental, signal processing, linear algebra, and image processing. The VSIPL family of libraries has been implemented by multiple vendors for a range of processor architectures, including x86, PowerPC, Cell, and NVIDIA GPUs. VSIPL and VSIPL++ are designed to achieve high performance, increase programmer productivity and maintain portability across a range of processor architectures. Additionally, VSIPL++ was designed from the start to include support for parallelism.
At this time, the VSIPL and VSIPL++ specifications are starting to work their way through the OMG’s RFC process, and the HPEC-SI membership has come to OMG en masse to understand and use the OMG process to build a “whole product” around the great technical work they’ve already built. Welcome HPEC-SI!
Additional Reading
VSIPL™ stands for the Vector Signal Image Processing Library. It is an application programming interface (API) defined by an open standard developed by embedded signal and image processing hardware and software vendors, academia, application developers, and government labs. A number of hardware and software vendors have developed VSIPL products, and it is being increasingly used by developers who desire a highly efficient and portable computational middleware for signal and image processing applications.
http://www.vsipl.org/VSIPL1p3.pdf
The purpose of the Vector, Signal, and Image Processing Library (VSIPL) standard is to support portable, high performance application programs. The standard is based upon existing libraries that have evolved and matured over decades of scientific and engineering computing. A layer of abstraction is added to support portability across diverse memory and processor architectures. The primary design focus of the standard has been embedded signal processing platforms. Enhanced portability of workstation applications is a side benefit.
http://www.vsipl.org/CD/richards1.pdf
- Computation is a key API for embedded processing
- Especially vector/matrix and signal processing
- VSIPL was designed to provide a computational API that is
- Portable, without sacrificing performance
- Object-based
- Useful for signal and image processing
- Targeted at embedded systems
http://www.vsipl.org/coreliteprofile.pdf
A total of 127 required functions
http://www.vsipl.org/coreprofile.pdf
A total of 513 functions are in the VSIPL Core Profile
VSIPL++
http://drdobbs.com/cpp/192501827
VSIPL++ is a C++ API specification for high-performance signal- and image-processing applications. You can use VSIPL++ for radar applications, software-defined radios, or similar systems. VSIPL++ programs perform operations (such as signal-processing or linear algebra operations) on vectors, matrices, and tensors.
A unique feature of the VSIPL++ API is that it includes direct support for parallel applications. In this article, I show how you build a simple parallel signal-processing application with just a few lines of code. Even if you are not interested in this specific application area, you will find VSIPL++ interesting as an example of a high-performance API for parallel numerical computing.
http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1386654&tag=1
Real-time signal processing consumes the majority of the world's computing power. Increasingly, programmable parallel processors are used to address a wide variety of signal processing applications (e.g., scientific, video, wireless, medical, communication, encoding, radar, sonar, and imaging). In programmable systems, the major challenge is no longer hardware but software. Specifically, the key technical hurdle lies in allowing the user to write programs at high level, while still achieving performance and preserving the portability of the code across parallel computing hardware platforms. The Parallel Vector, Signal, and Image Processing Library (Parallel VSIPL++) addresses this hurdle by providing high-level C++ array constructs, a simple mechanism for mapping data and functions onto parallel hardware, and a community-defined portable interface. This paper presents an overview of the Parallel VSIPL++ standard as well as a deeper description of the technical foundations and expected performance of the library. Parallel VSIPL++ supports adaptive optimization at many levels. The C++ arrays are designed to support automatic hardware specialization by the compiler. The computation objects (e.g., fast Fourier transforms) are built with explicit setup and run stages to allow for runtime optimization. Parallel arrays and functions in Parallel VSIPL++ also support explicit setup and run stages, which are used to accelerate communication operations. The parallel mapping mechanism provides an external interface that allows optimal mappings to be generated offline and read into the system at runtime. Finally, the standard has been developed in collaboration with high performance embedded computing vendors and is compatible with their proprietary approaches to achieving performance.
The Sourcery VSIPL++ high-level library provides a rich set more than 240 high level C++ signal processing functions.
HPEC-SI
http://www.hpec-si.org/mission.html
The High Performance Embedded Software Initiative addresses the military need to advance the state of embedded software development tools, libraries, and methodologies to retain the nation's military technology advantage in increasingly software-based systems. The initiative involves a partnership of industry, academia, and government organizations to foster software technology insertion demonstrations, to advance the development of existing standards, and to promote a unified computation/communication embedded software standard. The goal of the initiative is software portability: to enable "write-once/run-anywhere" for applications of high performance embedded computing.
This initiative is a unique opportunity to direct future standard development so that the needs of your community are addressed. Specifically, this initiative is targeted at bridging the gap between research community and the acquisition programs. It includes three basic components to ensure that acquisition office needs are being addressed:
Demonstration: Evolving embedded standards are being benchmarked and tested in real application examples. Prime contractors are teamed with FFRDC or academic partners to use currently defined standards, evaluate their performance, and report on how well their needs are being met. These evaluations direct the other efforts in this program to refocus evolving standards so that the long-term needs will be addressed.
Development: The existing standards are being extended to address the military requirements and incorporate object-oriented practices already prototyped by the research community that provide dramatic improvements in portability and productivity while retaining optimized performance. This effort is tightly coupled with military demonstrations and provides the next generation standards with direct feedback from the military user base.
Prototype: Currently distinct computation and communication standards are being merged into a unified computation/communication standard providing full cross-platform portability with further improvements in productivity. This prototyping effort is tightly coupled with actual military case studies to ensure that optimized performance is not sacrificed.
http://drdobbs.com/cpp/192501827
The VSIPL++ API was defined by the VSIPL Forum (http://www.vsipl.org), a group of industrial and governmental partners, with sponsorship from the U.S. Department of Defense. The API design goals were "the three Ps"—productivity, performance, and portability. In other words, it should be easy to write programs, the programs should run fast, and it should be possible to move programs from one system to another.