This paper presents a CGAL kernel for algorithms manipulating 3D spheres, circles. and circular arcs. The paper makes three contributions. First. the mathematics underlying two non-trivial predicates are presented. Se...
详细信息
This paper presents a CGAL kernel for algorithms manipulating 3D spheres, circles. and circular arcs. The paper makes three contributions. First. the mathematics underlying two non-trivial predicates are presented. Second, the design of the kernel concept is developed, and the connexion between the mathematics and this design is established. In particular, we show how two different frameworks can be combined: one for the general setting, and one dedicated to the case where all the objects handled lie on a reference sphere. Finally, an assessment about the efficacy of the 3D Spherical Kernel is made through the calculation of the exact arrangement of circles on a sphere. On average while computing arrangements with few degeneracies (on sample molecular models), it is shown that certifying the result incurs a modest factor of two with respect to calculations using a plain double arithmetic. (C) 2008 Elsevier B.V. All rights reserved.
We present a generic framework on a set of surfaces S in R-3 that provides their geometric and topological analysis in order to support various algorithms and applications in computational geometry. Our implementation...
详细信息
We present a generic framework on a set of surfaces S in R-3 that provides their geometric and topological analysis in order to support various algorithms and applications in computational geometry. Our implementation follows the generic programming paradigm, that is, to support a certain family Of Surfaces, we require a small set of types and some basic operations oil them, all collected in a model of the newly presented SURFACETRAITS_3 concept. The framework obtains geometric and topological information oil a non-empty, set of surfaces in two steps. First, important 0- and 1-dimensional features are projected onto the xy-plane, obtaining an arrangement As with certain properties. Second, for each of its components, a sample point is lifted back to R-3 while detecting intersections with the given Surfaces. For the projection we rely on CGAL'S Arrangement_2 package as basic tool. Anyhow, the complexity of the output is high, and thus, we particularly regard the framework as key ingredient for querying information on and constructing geometric objects from a small set of surfaces. Examples are meshing of single surfaces, the computation of space-curves defined by two surfaces, to Compute lower envelopes of Surfaces, or as a basic step to compute an efficient representation of a three-dimensional arrangement. We show that the well-known family of (semi-)algebraic Surfaces fulfills the framework's requirements. As robust implementations on these surfaces are lacking these days, we consider the framework to be all important step to fill this gap. In particular, we instantiate the framework by a fully-fledged model for special algebraic surfaces, namely quadrics. This instantiation already supports main tasks demanded from rotational robot motion planning, for example, as expected to compute a Piano Mover's instance. (c) 2009 Elsevier B.V. All rights reserved.
Large-scale parallel codes require the data to be decomposed between the set of processes active in the computation. This data decomposition implies recurring communication schemes. T he paper introduces generic templ...
详细信息
Large-scale parallel codes require the data to be decomposed between the set of processes active in the computation. This data decomposition implies recurring communication schemes. T he paper introduces generic template classes in C++ for describing the data decomposition. The aim is to store the data in arbitrary existent efficient sequential data structures. Each entry in the sequential data structure corresponds to an entry in the virtual global view of the container. Once the decomposition is setup the needed communication schemes can be created automatically and can be used to communicate values from containers of various types. Even containers with a varying number of values associated with an entry are possible. The framework abstracts the decomposition information and the communication in the client code from the eventual parallel paradigm choice. A prototype based on Message Passing Interface standard is presented. It relieves the user from specifying information that is already known at compile time.
Recursive algorithms, like quick-sort and recursive data structures, like trees, play a central role in programming. In the context of scientific computing, recursive algorithms and memory layouts are shown here to pr...
详细信息
Recursive algorithms, like quick-sort and recursive data structures, like trees, play a central role in programming. In the context of scientific computing, recursive algorithms and memory layouts are shown here to provide excellent cache and Translation Lookaside Buffer (TLB) locality independently of the platform. We show how, for the first time, generic programming and object-oriented programming allow us to abstract a multitude of dense-matrix memory layouts: from conventional rowmajor and column-major layouts over Z-and N-Morton orders to block-wise combinations of them. All are provided by a single class that is based on our new matrix abstraction. The algorithmic recursion is supported in generic fashion by classes modelling the new recursator, an analogue of the Standard Template Library iterator. Although this concept supports recursion in general, we focus again on matrix operations. Results are presented for matrix multiplication, on both conventional and tiled representations using both homogeneous and heterogeneous matrix representations. Reaching about 60% peak performance in portable C++ code establishes competitive performance without explicit prefetching and other platform-specific tuning. Comparisons with the manufacturers' libraries show superior locality. These new techniques are embedded in the Matrix Template Library, Version 4 (MTL4).
Pipelining is a well understood and often used implementation technique for increasing the performance of a hardware system. We develop several SystemC/C++ modeling techniques that allow us to quickly model, simulate,...
详细信息
Pipelining is a well understood and often used implementation technique for increasing the performance of a hardware system. We develop several SystemC/C++ modeling techniques that allow us to quickly model, simulate, and evaluate pipelines. We employ a small domain specific language (DSL) based on resource usage patterns that automates the drudgery of boilerplate code needed to configure connectivity in simulation models. The DSL is embedded directly in the host modeling language SystemC/C++. Additionally we develop several techniques for parameterizing a pipeline's behavior based on policies of function, communication, and timing (performance modeling).
Techniques for library-centric application design have already proven to be very useful in the past. The current gain in computer performance is shifted towards the utilisation of multi-core processors which extends t...
详细信息
Techniques for library-centric application design have already proven to be very useful in the past. The current gain in computer performance is shifted towards the utilisation of multi-core processors which extends the importance of this type of application design in the field of scientific computing, which also poses new difficulties. A parallel generic scientific simulation environment has been developed to ease this transition from single-core to multi-core systems without additional development activity.
This paper proposes a novel static slicing technique for object-oriented programs which are generic in nature. Many algorithms have been proposed so far for object-oriented programs. There are also few algorithms whic...
详细信息
ISBN:
(纸本)9780769536545
This paper proposes a novel static slicing technique for object-oriented programs which are generic in nature. Many algorithms have been proposed so far for object-oriented programs. There are also few algorithms which describe slicing of inter-procedural object-oriented programs. But till date there is no algorithm proposed so far for slicing of object-oriented programs which are generic in nature. In this paper we describe an algorithm for slicing of inter-procedural generic program written in C++. But this technique can be applied to any programs which are generic in nature and written in any other languages like Ada, Eiffel, and J2SE etc.
A bidirectional transformation consists of a function get that takes a source (document or value) to a view and a function put that takes an updated view and the original source back to an updated source, governed by ...
详细信息
ISBN:
(纸本)9781605583792
A bidirectional transformation consists of a function get that takes a source (document or value) to a view and a function put that takes an updated view and the original source back to an updated source, governed by certain consistency conditions relating the two functions. Both the database and programming language communities have studied techniques that essentially allow a user to specify only one of g et and put and have the other inferred automatically. All approaches so far to this bidirectionalization task have been syntactic in nature, either proposing a domain-specific language with limited expressiveness but built-in (and composable) backward components, or restricting get to a simple syntactic form from which some algorithm can synthesize an appropriate definition for p ut. Here we present a semantic approach instead. The idea is to take a general-purpose language, Haskell, and write a higher-order function that takes (polymorphic) g et-functions as arguments and returns appropriate put-functions. All this on the level of semantic values, without being willing, or even able, to inspect the definition of get, and thus liberated from syntactic restraints. Our solution is inspired by relational parametricity and uses free theorems for proving the consistency conditions. It works beautifully.
Data-type generic programming can be used to traverse and manipulate specific parts of large heterogeneously-typed tree structures, without the need for tedious boilerplate. generic programming is often approached fro...
详细信息
ISBN:
(纸本)9781605585086
Data-type generic programming can be used to traverse and manipulate specific parts of large heterogeneously-typed tree structures, without the need for tedious boilerplate. generic programming is often approached from a theoretical perspective, where the emphasis lies on the power of the representation rather than on efficiency. We describe use cases for a generic system derived from our work on a nanopass compiler, where efficiency is a real concern, and detail a new generics approach (Alloy) that we have developed in Haskell to allow our compiler passes to traverse the abstract syntax tree quickly. We benchmark our approach against several other Haskell generics approaches and statistically analyse the results, finding that Alloy is fastest on heterogeneously-typed trees.
We present a generic framework on a set of surfaces S in R-3 that provides their geometric and topological analysis in order to support various algorithms and applications in computational geometry. Our implementation...
详细信息
ISBN:
(纸本)9781605581064
We present a generic framework on a set of surfaces S in R-3 that provides their geometric and topological analysis in order to support various algorithms and applications in computational geometry. Our implementation follows the generic programming paradigm, that is, to support a certain family Of Surfaces, we require a small set of types and some basic operations oil them, all collected in a model of the newly presented SURFACETRAITS_3 concept. The framework obtains geometric and topological information oil a non-empty, set of surfaces in two steps. First, important 0- and 1-dimensional features are projected onto the xy-plane, obtaining an arrangement As with certain properties. Second, for each of its components, a sample point is lifted back to R-3 while detecting intersections with the given Surfaces. For the projection we rely on CGAL'S Arrangement_2 package as basic tool. Anyhow, the complexity of the output is high, and thus, we particularly regard the framework as key ingredient for querying information on and constructing geometric objects from a small set of surfaces. Examples are meshing of single surfaces, the computation of space-curves defined by two surfaces, to Compute lower envelopes of Surfaces, or as a basic step to compute an efficient representation of a three-dimensional arrangement. We show that the well-known family of (semi-)algebraic Surfaces fulfills the framework's requirements. As robust implementations on these surfaces are lacking these days, we consider the framework to be all important step to fill this gap. In particular, we instantiate the framework by a fully-fledged model for special algebraic surfaces, namely quadrics. This instantiation already supports main tasks demanded from rotational robot motion planning, for example, as expected to compute a Piano Mover's instance. (c) 2009 Elsevier B.V. All rights reserved.
暂无评论