Presentation is loading. Please wait.

Presentation is loading. Please wait.

TerascaleSimulation Tools and Technologies Tutorial: Presenter Institution.

Similar presentations


Presentation on theme: "TerascaleSimulation Tools and Technologies Tutorial: Presenter Institution."— Presentation transcript:

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


Download ppt "TerascaleSimulation Tools and Technologies Tutorial: Presenter Institution."

Similar presentations


Ads by Google