Download presentation
Presentation is loading. Please wait.
1
TerascaleSimulation Tools and Technologies Tutorial: Presenter Institution
2
2 C C++ f77 f90 Python Java vs. Java C C++ f77 f90 Python Babel Scientific Language Interoperability Language-neutral interface descriptions Native basic scientific data types –Complex numbers –Multi-dimensional, multi-strided arrays Automatic wrapper generation
3
3 IOR = Intermediate Object Representation Object-Oriented Middleware Python Stubs Skeletons Implementations IORs TSTT Implementation (any supported language) C Stubs C++ Stubs F77 Stubs F90 Stubs Java Stubs Implementation Clients
4
4 SIDL interface description Babel Compiler C++ F77 F90 Python C XML Java Application HTML SIDL = Scientific Interface Definition Language Babel Runtime SIDL Descriptions Wrappers Supported on Linux, AIX, and Solaris 2.7, works on OSX; C (ANSI C), C++ (GCC), F77 (g77, Sun f77), F90 (Intel, Lahey, GNU, Absoft), Java (1.4)
5
5 package SimpleMesh version 1.0 { [Fill in details here] } package SimpleMesh version 1.0 { [Fill in details here] } Start with SIDL description SimpleMesh.sidl
6
6 1.Execute `babel --server=C++ SimpleMesh.sidl` 2.Fill in the details to dispatch to the existing mesh library 3.Compile and link into a library/DLL SimpleMesh. sidl Babel Compiler C++ Skeletons C++ Implementations IORs C++ StubslibSimpleMesh. so legacy_code.so Implementor generates wrappers
7
7 type SimpleMesh::Class_impl::method() throw () { // DO-NOT-DELETE splicer.begin(SimpleMesh.Class.method) /* Fill in dispatch here */ // DO-NOT-DELETE splicer.end(SimpleMesh.Class.method) } type SimpleMesh::Class_impl::method() throw () { // DO-NOT-DELETE splicer.begin(SimpleMesh.Class.method) /* Fill in dispatch here */ // DO-NOT-DELETE splicer.end(SimpleMesh.Class.method) } namespace SimpleMesh { class Class_impl { private: // DO-NOT-DELETE splicer.begin(SimpleMesh.Class._impl) /* Fill in dispatch here */ // DO-NOT-DELETE splicer.end(SimpleMesh.Class._impl) namespace SimpleMesh { class Class_impl { private: // DO-NOT-DELETE splicer.begin(SimpleMesh.Class._impl) /* Fill in dispatch here */ // DO-NOT-DELETE splicer.end(SimpleMesh.Class._impl) Details go within splicer pairs
8
8 SimpleMesh. sidl Babel Compiler IOR Headers F90 Stubs libSimpleMesh. so Babel Runtime Application 1.Execute `babel --client=F90 SimpleMesh.sidl` 2.Application calls stub versions of the methods 3.Compile and link with generated code, library, & Runtime Application invokes stub methods
9
9 Application Implementation Skeleton IOR Stub Private Data Mesh Field Implementation Skeleton IOR Stub … … … … Resulting application flow
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.