Research Seminar Robert van Engelen Computer Science & CSIT Florida State University
Research, Nov 4, Restructuring compiler analysis and transformation Compilation techniques for embedded systems Web and Grid services technologies Bioinformatics and life sciences Atmospheric and oceanographic sciences Research Projects
Research, Nov 4, Current Funding Support Improving Symbolic Analysis of Restructuring Compilers DOE Early Career PI Program (Compilers & Algorithms for High-Performance Computing, Networking, and Data Management) Automatic Validation of Code Improving Transformations and Related Applications (with Dr. Whalley) Collaborative Research in Compilers (with Dr. Whalley)
Research, Nov 4, Research Assistants Chris Baker (for MS) collab. with Dr. Gallivan Compiler technology & numerical algorithms Johnnie Birch (for MS & PhD) Compiler analysis techniques Burt Walsh (for PhD) Compiler & embedded systems technology Yixin Shou (for PhD) Compiler technology Open position (for PhD) Web and grid services technologies
Research, Nov 4, Web and Grid Services Web and Grid services are remote applications, e.g. on the Web, that provide various data, document, and compute resources to client applications Web/Grid service technology is a big step forwards in distributed computing on the Internet Bridges platform and language interop gaps
Research, Nov 4, Web/Grid Service Protocols Web/Grid services technologies utilize the SOAP and WSDL protocols SOAP (Simple Object Access Protocol) is a light-weight protocol based on XML as the marshalling format for request and response messages, typically with HTTP WSDL is an XML-based Web/Grid services description language
Research, Nov 4, WSDL 1. A Web Service registers its existence in a registry 2. The Web Service publishes its WSDL in the registry 3. SOAP remote procedure calling by clients developed from this WSDL
Research, Nov 4, gSOAP Web Services SOAP/XML language binding for C & C++ SOAP/XML capabilities build into the C and C++ language Uses compiler technology Based on RPC compiler No need to write any wrapper code Generates SOAP/XML parsing routines (no DOM or SAX parser required)
Research, Nov 4, gSOAP Web Services gSOAP is open source (SourceForge project) (C/C++, Java) Platform independent (now with automake/conf) Integrated TCP/IP, HTTP, DIME, SOAP, and XML stacks Designed for high-performance throughput
Research, Nov 4, gSOAP Features SOAP 1.1 and 1.2 compliant WSDL 1.1 import and export Stand-alone servers (HTTP 1.0 and partially 1.1) Supports keep-alive and chunked transfers CGI, Fast-CGI, Apache_mod, IIS DIME attachments Supports pure C or C/C++ application mix Multi-threaded Web services, MT safe Extensible Plug-ins, callbacks, and user-defined (de)serializers
Research, Nov 4, gSOAP Users in Industry Adobe Systems (eg. GoLive Web site development software) IBM Alphaworks Xerox CoreNetworks Powerllel Siemens Ericsson Globus toolkit (DOE, Argonne National Labs) Harness toolkit (DOE) …
Research, Nov 4, Native C & C++ Application Code to Serve Requests (RPC Parameter Marshalling is Fully Automatic) libgsoap.a gSOAP Runtime Environment (Memory & I/O Management) Web Service Application Implementing a Web Service Application myService.h Specification of Remote Procedures and Parameter Types gSOAP RPC Compiler myService.wsdl soapService.c soapC.c RPC Skeleton Routines and XML Parsers/Generators Publish WSDL
Research, Nov 4, Native C & C++ Application Codes with SOAP RPC Calls (RPC Calls and Parameter Marshalling are Automatic) Client Application libgsoap.a gSOAP Runtime Environment (Memory & I/O Management) Implementing a Client Application someService.wsdl gSOAP WSDL importer WSDL Publication soapClient.c soapC.c RPC Stub Routines and XML Parsers/Generators gSOAP RPC Compiler someService.h Specification of Remote Procedures and Parameter Types
Research, Nov 4, SOAP RPC Marshalling struct BG { int val; struct BG *left; struct BG *right; }; int remoteMethod(struct BG input, struct BG *output);
Research, Nov 4, SOAP RPC Demarshalling
Research, Nov 4, Application to Life Sciences Determine the “Tree of Life” from sequenced genome data Serialize and deserialize phylogenetic trees in XML Massive parallel computations Cluster of workstations SOAP/XML
Research, Nov 4, Results 1)Interoperability Testing 2)Legacy C Code Web Service Integration 3)Scalability and Performance
Research, Nov 4, Interoperability Testing WhiteMesa.org “interop lab” Suite of test cases designed for real-time interoperability testing Interop with: Apache Axis,.NET, Delphi,…
Research, Nov 4, Legacy C Code Integration: Linear System Solver Service LU decomposition from “Numerical Recipes in C”: ludcmp(double **a, int n, int *indx, double *d); ludcmp(double **a, int n, int *indx, double *d); Service routine (array size n stored in structs for vectors and matrices) ludcmp /**** ludcmp request ****/ ( struct mat *a, /* input: matrix */ struct ludcmpResponse /**** ludcmp response ****/ { struct mat *a; /* output: matrix (decomposed) */ struct ivec *indx; /* output: reordering vector */ double *d; /* output: arg for determinant */ } *result ); Struct declarations: struct vec /**** vector ****/ { double *__ptr; /* pointer to array of double */ int __size; }; /* run-time array size */ struct mat /**** matrix ****/ { struct vec *__ptr; /* pointer to array of vectors */ int __size; }; /* run-time array size */
Research, Nov 4, Linear System Solver Service Linear system solver service (LSSS) code (CGI-based): main() { soap_serve(soap_new()); /* process request */ } Example LSSS client application code: main() { struct soap soap; /* runtime environment */ struct mat a; /* input matrix */ struct ludcmpResponse result; /* result output */ … soap_init(&soap); /* init runtime */ if (soap_call_ns__ludcmp(&soap, “URL”, “”, &a, &result)) soap_print_fault(&soap, stderr); … … = result.a.__ptr[i]->__ptr[j]; /* index a[i,j] */ }
Research, Nov 4, Scalability and Performance 1)Scalability and overhead of communication vs. computation LU-based double fp. matrix inversion 2)Performance (send 32bit int matrix) Full SOAP XML-encoded int32 matrix SOAP Base64-encoded int32 matrix CGI-based SOAP Web Service Stand-alone SOAP Web Service Java RMI
Research, Nov 4, Communication Overhead: Matrix Inversion Stand-alone linear system solver service Full double fp. Matrix representation in SOAP XML Total time of client request and server response (100BaseT, Dual PIII 550MHz, Red Hat Linux)
Research, Nov 4, Full XML Versus Base64 int32 Matrix Representations Total time of client request and server response (100BaseT, Dual PIII 550MHz, Red Hat Linux) SOAP XML- encoded 32bit int matrix SOAP Base64- encoded 32bit int matrix
Research, Nov 4, XML vs. Base64 vs. Java RMI with Stand-Alone Service Total time of client request and server response (100BaseT, Dual PIII 550MHz, Red Hat Linux) SOAP XML- encoded 32bit int matrix SOAP Base64- encoded 32bit int matrix Java RMI (1.2.2)
Research, Nov 4, Questions?