1 / 9

Tutorial:

Tutorial:. Presenter Institution. f77. f77. C. f90. C. f90. C++. Python. Babel. Python. C++. Java. Scientific Language Interoperability. Language-neutral interface descriptions Native basic scientific data types Complex numbers Multi-dimensional, multi-strided arrays

samara
Download Presentation

Tutorial:

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tutorial: Presenter Institution

  2. f77 f77 C f90 C f90 C++ Python Babel Python C++ Java Scientific Language Interoperability • Language-neutral interface descriptions • Native basic scientific data types • Complex numbers • Multi-dimensional, multi-strided arrays • Automatic wrapper generation vs. Java

  3. TSTT Implementation (any supported language) Object-Oriented Middleware Implementation Clients C Stubs C++ Stubs F77 Stubs F90 Stubs Java Stubs Python Stubs IORs Skeletons Implementations IOR = Intermediate Object Representation

  4. SIDL Descriptions  Wrappers HTML XML Babel Runtime C C++ SIDL interfacedescription Babel Compiler F77 Application F90 Java Python 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) SIDL = Scientific Interface Definition Language

  5. Start with SIDL description package SimpleMesh version 1.0 { [Fill in details here] } SimpleMesh.sidl

  6. C++ Stubs IORs libSimpleMesh.so C++Skeletons C++Implementations legacy_code.so • Implementor generates wrappers • Execute `babel --server=C++SimpleMesh.sidl` • Fill in the details to dispatch to the existing mesh library • Compile and link into a library/DLL SimpleMesh.sidl Babel Compiler

  7. Details go within splicer pairs 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) 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) }

  8. F90 Stubs IOR Headers Application invokes stub methods Babel Runtime SimpleMesh.sidl Babel Compiler Application libSimpleMesh.so • Execute `babel --client=F90SimpleMesh.sidl` • Application calls stub versions of the methods • Compile and link with generated code, library, & Runtime

  9. Application … … Stub Stub IOR IOR Skeleton Skeleton Implementation Implementation … … Field Mesh Private Data Resulting application flow

More Related