Wir schaffen Wissen heute für morgen

Size: px
Start display at page:

Download "Wir schaffen Wissen heute für morgen"

Transcription

1 Wir schaffen Wissen heute für morgen The MEXperience, Getting to Grips with MATLAB Executable Files Jan Chrin Paul Scherrer Institut

2 Contents Motivation Context of SwissFEL Injector Test Facility ( ) also SLS C++ Channel Access Interface Feeding the MEX-file Summary: Main Points and Next Steps

3 SLS MATLAB Application Count at the Swiss Light Source (SLS) Year No. MATLAB Applications (nil!) but increasing (TIARA Project) 2000 applications at the SLS dominated by Tcl/Tk 2012 Test Infrastructure and Accelerator Research Area (TIARA) (distributed European Accelerator R&D facility)

4 SwissFEL Injector Test Facility MATLAB Application Count at the Swiss Light Source (SLS) Year No. MATLAB Applications (nil!) (TIARA Project) MATLAB Application Count at the SwissFEL Injector Test Facility Phase I: August 2010, Phase IV: February 2013, End: September 2014 Year No. MATLAB Applications 2010 (Phase I) Lots! 2012 (Phase III) >50 (1 C++/Qt and 1 Java are the exception)

5 Use of MATLAB has surged! Motivation Large dependency -> reappraisal of ca requirements for MATLAB -> more extensive interface to the presently used mca Support data types other than double and string, e.g. unsigned short (mxuint16_class) in analysis/storage of camera data used in beam profile measurements: more efficient use of memory CA-aware classes for specific operations, e.g. acquisition of machine snapshots, orbit data, (using ca synchronous groups) Compilation on a 64-bit Linux machine, comparison of injector data with OPAL, a computationally intensive 3D space-charge simulation model Stability, Robustness: improved reconnection management

6 Channel Access Interface Library C++ Channel access interface library, CAFE synchronous, asynchronous interaction (blocking, non-blocking determined by setting policies) for individual, collections/groups of channels Data passed through CA in native data type data may be presented to client in any meaningful type (true also of enumerated types) Extensive use of templates get/set operations, underlying CA classes, data conversions Connection/reconnection (memory) management Connectivity remains in a well-defined state in every eventuality! All details of a PV and its state held in a hash table (Boost Container)

7 mocha: The Channel Access MEX File The Missing Link! MATLAB Mocha MATLAB objects for channel access MEX-file CAFE Library

8 The MEX-file Ingredients MEX-file: MATLAB Executable File (compiled) Functions implemented as MEX-files can be called directly from MATLAB MEX-files can be created from C/C++ by using the mex command Source code written using the MEX API which provide functions to read/write input/output arguments from/to MATLAB, or to access global variables Mex-files include: (1) mexfunction gateway (2) #include mex.h (mx* and mex* routines) (3) mxarray (4) API (mx* and mex*) functions

9 A Basic MEX-file #include mex.h (mx* and mex* ) mx* functions used to access data inside mxarrays mex* functions perform operations back in MATLAB mexfunction Gateway: interfaces with MATLAB The mexfunction is the entry point to underlying C/C++ code and declares the four variables that interface our code to MATLAB void mexfunction (int nlhs, mxarray * plhs[], int nrhs, const mxarray * prhs[] ) { } nlhs = Number Left Hand Side, i.e. the number of outputs (expected mxarrays) plhs = Array of pointers to mxarrays for output (must be explicitly created) nrhs = Number Right Hand Side, i.e. the number of inputs prhs = Array of pointers to mxarrays for input data (should not be altered)

10 mxarray mxarray is a special structure that encapsulates MATLAB data It is the C representation of a MATLAB array All MATLAB variables, scalars, vectors, matrices, strings, cell arrays, and structures are stored as mxarrays

11 MEX-file API API functions (Two Types) mx* functions used to create and access data inside arrays Array Creation: mxcreatenumericarray, mccreatedoublematrix, mxcreatecellarray Array Access: mxgetpr, mxgetdata, mxgetcell Memory Management: mxmalloc, mxfree mex* functions mexevalstring mexcallmatlab mexprintf perform operations back in MATLAB (Execute MATLAB command in caller s workspace) (Call MATLAB function) mxis* functions to determine various states of an array; used to check input to MEX-file and ensure they are of correct type

12 The MEX Cycle Data Flow within Gateway Routine MATLAB Call to MEX-file mocha: [status]=mocha( set, handle, value) Passes variables set, handle and value to the mocha MEX-file. status is unassigned const mxarray * value; value = prhs[2] const mxarray * handle; handle= prhs[1] const mxarray * message; message= (mxarray *) prhs[0] mocha.cpp void mexfunction( int nlhs, mxarray *plhs[], int nrhs, const mxarray *prhs[]) (1) Validate input argument prhs[0]; extract data from prhs[0] using the mxget* function (2) Find matching index in The Big Switch MATLAB On return from MEX-file mocha: [status]=mocha( set, handle, value) plhs[0] is assigned to status (3) Use mxget* functions to extract remaining input arguments, prhs[1](handle), prhs[2](value) (4) Validate data, e.g. mxgetnoelements(prhs[2]) (5) Use mxcreate* functions to create the MATLAB array for the output argument, plhs[0] (status) (6) Call cafe->set function passing the data input and output data pointers as function parameters mxarray * status; status = prls[0]

13 mexfunction( ) within the Gateway routine try { cafe->set(handle, value); } catch (CAFEException &catchaspill) { } Exceptions not caught!

14 What happened to my Exception? try { cafe->set(handle, value); } catch (CAFEException &catchaspill) { } Exceptions not caught! Behaviour caused by version linker script mexfunction.map Solutions: Link against a static version of the library Don t use exceptions, rather status return codes Create a wrapper library which does not conform to mexfunction.map /* Source of MEX-file which calls the wrapper shared library. Previous content of the mexfunction moved to the wrapper library; now call the function in the wrapper library instead. */ #include "macchinetta.h" extern void _main(); void mexfunction(int nlhs,mxarray *plhs[],int nrhs, const mxarray *prhs[]) { macchinettafunction(nlhs,plhs,nrhs,prhs); }

15 mocha syntax Feed Mex-file with further ca functionality, by follow the same pattern: First checks to make sure that the function was called correctly: correct number of inputs, verify that the input is the right format, e.g. scalar, Create the mxarrays to assign to output parameters handle = mocha ( open, pvname ); [val, status] = mocha( get, handle); datastruct = mocha( getstruct, handle); [val, status, isstatusok] = mocha( getgroup, grouphandle); ctrlstruct = mocha( getctrlstruct, handle); status = mocha( set, handle, data); status = mocha( monitor, handle, action ); status = mocha( close, handle); mocha( close);

16 Synchronous Groups and MATLAB Classes classdef cafeorbit < handle properties (SetAccess = private) groupname=''; ghandle=0; s=0; bpmnames=''; nbpm=0; x=0; y=0; I=0; xyvalid=0; IValid=0; xstatus=1; ystatus=1; IStatus=1; xyvalidstatus=1; IValidStatus =1; isvalidok=true; isstatusok=true; end %define en event called cafeerrorreport events cafeerrorreport end SLSOrbit=cafeOrbit() methods function mcorbit = cafeorbit(); mcorbit.groupname='gdbpm'; mcorbit.ghandle = mocha('opengroup','gdbpm'); [mcorbit.bpmnames, mcorbit.s] = mocha('getstaticdata','cdbpm','master.xml'); [mcorbit.x, mcorbit.y, mcorbit.i, mcorbit.xyvalid, mcorbit.ivalid,... mcorbit.xstatus, mcorbit.ystatus, mcorbit.istatus, mcorbit.xyvalidstatus,... mcorbit.ivalidstatus, mcorbit.isvalidok, mcorbit.isstatusok] = mocha('getorbit',mcorbit.ghandle); mcorbit.nbpm = length(mcorbit.x); %[mcorbit.data, mcorbit.statuscode, mcorbit.isstatusok] = mocha('getgroup',mcorbit.handle); cafeerrormanager.addcafe(mcorbit); end return function get(mcorbit) = mocha('getorbit',mcorbit.ghandle); end end % methods end % classdef [mcorbit.x, mcorbit.y, mcorbit.i, mcorbit.xyvalid, mcorbit.ivalid,... mcorbit.xstatus, mcorbit.ystatus, mcorbit.istatus,mcorbit.xyvalidstatus,... mcorbit.ivalidstatus, mcorbit.isvalidok, mcorbit.isstatusok] return

17 Monitors Mocha monitors: mocha( monitor, handle, action ) Cache updated values, optionally execute a script to update widget mocha MEX-File CAFE well separated! i.e. CAFE has no knowledge of the MEX API. mocha( monitor, handle, action ) cafe->confighandle_add_monitoraction(handle, action ); timer('timerfcn','mocha(''monitorflushevent'')','period',0.1,'executionmode','fixedspacing'); vector<string> al; status=cafe->getmonitoraction(al); [No Queue Class!]

18 Mocha Index to switch index get with selected type No of methods can be greatly reduced! e.g. one set sufficient mocha mca-compatible MATLAB scripts provided to facilitate transition from mca to mocha

19 Main Points Mocha MEX-file interfaces channel access (thru CAFE) methods to MATLAB Mocha (as mca) is single MEX-file cf labca interfaces EZCA to MATLAB multiple MEX-files Sizeof (mocha code) << Sizeof (mca code) Binding procedure follows a recognizable pattern: Extract, validate input arguments, invoke CAFE method, convert CAFE output arguments into MATLAB data type, prepare data format (array, struct..) for return to caller mocha mca-compatible MATLAB scripts provided to facilitate transition from mca to mocha Immediate tangible benefits: Access to all MATLAB primitive data types MATLAB oo: mocha-aware classes (orbit data, machine snapshot). Classes, on initialization, extract static data, i.e. node names, positions from the accelerator XML (á la XAL) Compilation on a 64-bit Linux Server (machine data / 3D simulations) Mocha monitors: Cache updated values, optionally execute a script to update widget (but MATLAB s Event and Listener model would be another approach).

20 Summary Getting To Grips with MEX API has allowed us to create: uncomplicated, robust, extendable, MEX-file for channel access In use at the SwissFEL Injector Test Facility and SLS Next: Consolidate (and expose remaining CAFE) methods to provide a general-purpose MATLAB-ca interface Acknowledgements Groundwork for channel access connectivity laid by mca

21 Epics-Language Index source:

Face Recognition. Programming Project. Haofu Liao, BSEE. Department of Electrical and Computer Engineering. Northeastern University.

Face Recognition. Programming Project. Haofu Liao, BSEE. Department of Electrical and Computer Engineering. Northeastern University. Face Recognition Programming Project Haofu Liao, BSEE June 23, 2013 Department of Electrical and Computer Engineering Northeastern University 1. How to build the PCA Mex Funtion 1.1 Basic Information The

More information

How to get Real Time Data into Matlab

How to get Real Time Data into Matlab How to get Real Time Data into Matlab First make sure you have Visual Studio 6.0 installed. You re going to have to build a mex file in visual studio. A mex file is just C code that has been compiled to

More information

Introduction to Matlab/Octave

Introduction to Matlab/Octave Introduction to Matlab/Octave February 28, 2014 This document is designed as a quick introduction for those of you who have never used the Matlab/Octave language, as well as those of you who have used

More information

Michael Böge, Jan Chrin

Michael Böge, Jan Chrin PAUL SCHERRER INSTITUT SLS-TME-TA-1999-0015 September, 1999 A CORBA Based Client- Model for Beam Dynamics Applications at the SLS Michael Böge, Jan Chrin Paul Scherrer Institut CH-5232 Villigen PSI Switzerland

More information

Implementation of Parma Polyhedron Library -functions in MATLAB

Implementation of Parma Polyhedron Library -functions in MATLAB Implementation of Parma Polyhedron Library -functions in MATLAB Leonhard Asselborn Electrical and Computer Engineering Carnegie Mellon University Group meeting Oct. 21 st 2010 Overview Introduction Motivation

More information

USING LAPACK SOLVERS FOR STRUCTURED MATRICES WITHIN MATLAB

USING LAPACK SOLVERS FOR STRUCTURED MATRICES WITHIN MATLAB USING LAPACK SOLVERS FOR STRUCTURED MATRICES WITHIN MATLAB Radek Frízel*, Martin Hromčík**, Zdeněk Hurák***, Michael Šebek*** *Department of Control Engineering, Faculty of Electrical Engineering, Czech

More information

USING THE SYSTEM-C LIBRARY FOR BIT TRUE SIMULATIONS IN MATLAB

USING THE SYSTEM-C LIBRARY FOR BIT TRUE SIMULATIONS IN MATLAB USING THE SYSTEM-C LIBRARY FOR BIT TRUE SIMULATIONS IN MATLAB Jan Schier Institute of Information Theory and Automation Academy of Sciences of the Czech Republic Abstract In the paper, the possibilities

More information

A System for Interfacing MATLAB with External Software Geared Toward Automatic Differentiation

A System for Interfacing MATLAB with External Software Geared Toward Automatic Differentiation A System for Interfacing MATLAB with External Software Geared Toward Automatic Differentiation 02. Sept. 2006 - ICMS 2006 - Castro-Urdiales H. Martin Bücker, RWTH Aachen University, Institute for Scientific

More information

USB-IO MATLAB. Gerox(c) 5/30/2003 USB-IO HID USB-IO HID USB IO. usbg.dll STEP.1 DOS. main STEP.2. STEP.3 main.

USB-IO MATLAB.   Gerox(c) 5/30/2003 USB-IO HID USB-IO HID USB IO. usbg.dll STEP.1 DOS. main STEP.2. STEP.3 main. USB-IO for MATLAB HID USB-IO MATLAB USB-IO HID USB IO usbg.dll MATLAB MEX STEP.1 DOS C main STEP.2 STEP.3 main mexfunction USB-IO USB VisualC++ 6.0 Win2000DDK setupapi.lib,hid.lib PATH C: Program Files

More information

Purpose: How to train an MLP neural network in MATLAB environment!

Purpose: How to train an MLP neural network in MATLAB environment! Purpose: How to train an MLP neural network in MATLAB environment! that is For good computations, we need good formulae for good algorithms; and good visualization for good illustration and proper testing

More information

3D Visualization for Matlab

3D Visualization for Matlab 3D Visualization for Matlab Erich Birngruber, René Donner, Georg Langs Computational Image Analysis and Radiology Lab Medical University of Vienna, Austria http://www.cir.meduniwien.ac.at/ CSAIL, Massachusetts

More information

D. Bindel. March 4, 2009

D. Bindel. March 4, 2009 User Guide D. Bindel March 4, 2009 1 Introduction MWrap is an interface generation system in the spirit of SWIG or matwrap. From a set of augmented MATLAB script files, MWrap will generate a MEX gateway

More information

02 Features of C#, Part 1. Jerry Nixon Microsoft Developer Evangelist Daren May President & Co-founder, Crank211

02 Features of C#, Part 1. Jerry Nixon Microsoft Developer Evangelist Daren May President & Co-founder, Crank211 02 Features of C#, Part 1 Jerry Nixon Microsoft Developer Evangelist Daren May President & Co-founder, Crank211 Module Overview Constructing Complex Types Object Interfaces and Inheritance Generics Constructing

More information

Master Thesis Accelerating Image Registration on GPUs

Master Thesis Accelerating Image Registration on GPUs Master Thesis Accelerating Image Registration on GPUs A proof of concept migration of FAIR to CUDA Sunil Ramgopal Tatavarty Prof. Dr. Ulrich Rüde Dr.-Ing.Harald Köstler Lehrstuhl für Systemsimulation Universität

More information

Renderscript. Lecture May Android Native Development Kit. NDK Renderscript, Lecture 10 1/41

Renderscript. Lecture May Android Native Development Kit. NDK Renderscript, Lecture 10 1/41 Renderscript Lecture 10 Android Native Development Kit 6 May 2014 NDK Renderscript, Lecture 10 1/41 RenderScript RenderScript Compute Scripts RenderScript Runtime Layer Reflected Layer Memory Allocation

More information

MAKING A STATEMENT WITH CORBA

MAKING A STATEMENT WITH CORBA Michael Böge, Jan Chrin Paul Scherrer Institute "SELECT * FROM DRINKS WHERE COFFEE= CAPPUCCINO " Outline Introduction Beam Dynamics Applications @ SLS CORBA Fundamentals scalability of the CORBA database

More information

VALLIAMMAI ENGINEERING COLLEGE

VALLIAMMAI ENGINEERING COLLEGE VALLIAMMAI ENGINEERING COLLEGE SRM Nagar, Kattankulathur 603 203 DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING QUESTION BANK B.E. - Electrical and Electronics Engineering IV SEMESTER CS6456 - OBJECT ORIENTED

More information

C++\CLI. Jim Fawcett CSE687-OnLine Object Oriented Design Summer 2017

C++\CLI. Jim Fawcett CSE687-OnLine Object Oriented Design Summer 2017 C++\CLI Jim Fawcett CSE687-OnLine Object Oriented Design Summer 2017 Comparison of Object Models Standard C++ Object Model All objects share a rich memory model: Static, stack, and heap Rich object life-time

More information

Chapter 4 Defining Classes I

Chapter 4 Defining Classes I Chapter 4 Defining Classes I This chapter introduces the idea that students can create their own classes and therefore their own objects. Introduced is the idea of methods and instance variables as the

More information

NetBeans IDE Field Guide

NetBeans IDE Field Guide NetBeans IDE Field Guide Copyright 2005 Sun Microsystems, Inc. All rights reserved. Table of Contents Extending Web Applications with Business Logic: Introducing EJB Components...1 EJB Project type Wizards...2

More information

What are the characteristics of Object Oriented programming language?

What are the characteristics of Object Oriented programming language? What are the various elements of OOP? Following are the various elements of OOP:- Class:- A class is a collection of data and the various operations that can be performed on that data. Object- This is

More information

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications Distributed Objects and Remote Invocation Programming Models for Distributed Applications Extending Conventional Techniques The remote procedure call model is an extension of the conventional procedure

More information

C++ Important Questions with Answers

C++ Important Questions with Answers 1. Name the operators that cannot be overloaded. sizeof,.,.*,.->, ::,? 2. What is inheritance? Inheritance is property such that a parent (or super) class passes the characteristics of itself to children

More information

THE FLORIDA STATE UNIVERSITY COLLEGE OF ARTS AND SCIENCES INTERNET COMPUTING WITH MATLAB ARTHI GOKARN

THE FLORIDA STATE UNIVERSITY COLLEGE OF ARTS AND SCIENCES INTERNET COMPUTING WITH MATLAB ARTHI GOKARN THE FLORIDA STATE UNIVERSITY COLLEGE OF ARTS AND SCIENCES INTERNET COMPUTING WITH MATLAB By ARTHI GOKARN A Thesis submitted to the Department of Computer Science in partial fulfillment of the requirements

More information

caqtdm: PSI s display manager

caqtdm: PSI s display manager WIR SCHAFFEN WISSEN HEUTE FÜR MORGEN Helge Brands, Anton Mezger :: Paul Scherrer Institut, Switzerland caqtdm: PSI s display manager caqtdm presentation, APS, Argonne, USA, June 2018 Outline of the presentation

More information

Motivation was to facilitate development of systems software, especially OS development.

Motivation was to facilitate development of systems software, especially OS development. A History Lesson C Basics 1 Development of language by Dennis Ritchie at Bell Labs culminated in the C language in 1972. Motivation was to facilitate development of systems software, especially OS development.

More information

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS PAUL L. BAILEY Abstract. This documents amalgamates various descriptions found on the internet, mostly from Oracle or Wikipedia. Very little of this

More information

plfgi MatLAB Interface for PixeLINK FireWire Cameras User Manual & Technical Guide

plfgi MatLAB Interface for PixeLINK FireWire Cameras User Manual & Technical Guide plfgi MatLAB Interface for PixeLINK FireWire Cameras User Manual & Technical Guide Last updated: September, 2002 plfgi User Manual & Technical Guide September 2002 MatLAB Interface for PixeLINK FireWire

More information

Introduction to Programming Using Java (98-388)

Introduction to Programming Using Java (98-388) Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;

More information

PROFESSOR: DR.JALILI BY: MAHDI ESHAGHI

PROFESSOR: DR.JALILI BY: MAHDI ESHAGHI PROFESSOR: DR.JALILI BY: MAHDI ESHAGHI 1 2 Overview Distributed OZ Java RMI CORBA IDL IDL VS C++ CORBA VS RMI 3 Distributed OZ Oz Language Multi paradigm language, strong support for compositionality and

More information

Distributed Control Systems at SSRL Constraints for Software Development Strategies. Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory

Distributed Control Systems at SSRL Constraints for Software Development Strategies. Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory Distributed Control Systems at SSRL Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory Overview Computing Environment at our Beam Lines Need

More information

Chapter 5: Procedural abstraction. Function procedures. Function procedures. Proper procedures and function procedures

Chapter 5: Procedural abstraction. Function procedures. Function procedures. Proper procedures and function procedures Chapter 5: Procedural abstraction Proper procedures and function procedures Abstraction in programming enables distinction: What a program unit does How a program unit works This enables separation of

More information

Motivation was to facilitate development of systems software, especially OS development.

Motivation was to facilitate development of systems software, especially OS development. A History Lesson C Basics 1 Development of language by Dennis Ritchie at Bell Labs culminated in the C language in 1972. Motivation was to facilitate development of systems software, especially OS development.

More information

ni.com Integrating EPICS and LabVIEW

ni.com Integrating EPICS and LabVIEW Integrating EPICS and LabVIEW Agenda Overview Channel Access (CA) Support LabVIEW EPICS CA Server LabVIEW EPICS CA Client EPICS IOC Support CompactRIO PXI 3 rd Party Options Questions and Answers 3 Overview

More information

labca An EPICS Channel Access Interface for scilab and matlab

labca An EPICS Channel Access Interface for scilab and matlab labca An EPICS Channel Access Interface for scilab and matlab Till Straumann , 2003 May 23, 2007 Id: manual.tex,v 1.38 2007/06/05 05:00:12 guest Exp 1 Introduction The labca

More information

416 Distributed Systems. RPC Day 2 Jan 12, 2018

416 Distributed Systems. RPC Day 2 Jan 12, 2018 416 Distributed Systems RPC Day 2 Jan 12, 2018 1 Last class Finish networks review Fate sharing End-to-end principle UDP versus TCP; blocking sockets IP thin waist, smart end-hosts, dumb (stateless) network

More information

C++ (Non for C Programmer) (BT307) 40 Hours

C++ (Non for C Programmer) (BT307) 40 Hours C++ (Non for C Programmer) (BT307) 40 Hours Overview C++ is undoubtedly one of the most widely used programming language for implementing object-oriented systems. The C++ language is based on the popular

More information

An Overview of the BLITZ System

An Overview of the BLITZ System An Overview of the BLITZ System Harry H. Porter III Department of Computer Science Portland State University Introduction The BLITZ System is a collection of software designed to support a university-level

More information

Introduction to Mobile Development

Introduction to Mobile Development Introduction to Mobile Development Building mobile applications can be as easy as opening up the IDE, throwing something together, doing a quick bit of testing, and submitting to an App Store all done

More information

MATRIX INVERSION SPEED UP WITH CUDA JORGE SORIANO PINEDO ELECTRICAL AND COMPUTER ENGINEERING

MATRIX INVERSION SPEED UP WITH CUDA JORGE SORIANO PINEDO ELECTRICAL AND COMPUTER ENGINEERING MATRIX INVERSION SPEED UP WITH CUDA BY JORGE SORIANO PINEDO ELECTRICAL AND COMPUTER ENGINEERING Submitted in partial fulfillment of the requirements for the degree of Electrical engineering in ECE in the

More information

NAMESPACES IN C++ You can refer the Programming with ANSI C++ by Bhushan Trivedi for Understanding Namespaces Better(Chapter 14)

NAMESPACES IN C++ You can refer the Programming with ANSI C++ by Bhushan Trivedi for Understanding Namespaces Better(Chapter 14) NAMESPACES IN C++ You can refer the Programming with ANSI C++ by Bhushan Trivedi for Understanding Namespaces Better(Chapter 14) Some Material for your reference: Consider following C++ program. // A program

More information

Control Abstraction. Hwansoo Han

Control Abstraction. Hwansoo Han Control Abstraction Hwansoo Han Review of Static Allocation Static allocation strategies Code Global variables Own variables (live within an encapsulation - static in C) Explicit constants (including strings,

More information

Distributed Systems 8. Remote Procedure Calls

Distributed Systems 8. Remote Procedure Calls Distributed Systems 8. Remote Procedure Calls Paul Krzyzanowski pxk@cs.rutgers.edu 10/1/2012 1 Problems with the sockets API The sockets interface forces a read/write mechanism Programming is often easier

More information

416 Distributed Systems. RPC Day 2 Jan 11, 2017

416 Distributed Systems. RPC Day 2 Jan 11, 2017 416 Distributed Systems RPC Day 2 Jan 11, 2017 1 Last class Finish networks review Fate sharing End-to-end principle UDP versus TCP; blocking sockets IP thin waist, smart end-hosts, dumb (stateless) network

More information

EECS168 Exam 3 Review

EECS168 Exam 3 Review EECS168 Exam 3 Review Exam 3 Time: 2pm-2:50pm Monday Nov 5 Closed book, closed notes. Calculators or other electronic devices are not permitted or required. If you are unable to attend an exam for any

More information

Wir schaffen Wissen heute für morgen REUSABLE PATIENT SAFETY SYSTEM FRAMEWORK FOR THE PROTON THERAPY CENTRE AT PSI

Wir schaffen Wissen heute für morgen REUSABLE PATIENT SAFETY SYSTEM FRAMEWORK FOR THE PROTON THERAPY CENTRE AT PSI Wir schaffen Wissen heute für morgen REUSABLE PATIENT SAFETY SYSTEM FRAMEWORK FOR THE PROTON THERAPY CENTRE AT PSI P. Fernandez Carmona, M. Eichin, M. Grossmann, E. Johansen, A. Mayor, H.A. Regele ICALEPCS15,

More information

Kakadu and Java. David Taubman, UNSW June 3, 2003

Kakadu and Java. David Taubman, UNSW June 3, 2003 Kakadu and Java David Taubman, UNSW June 3, 2003 1 Brief Summary The Kakadu software framework is implemented in C++ using a fairly rigorous object oriented design strategy. All classes which are intended

More information

Distributed Systems. How do regular procedure calls work in programming languages? Problems with sockets RPC. Regular procedure calls

Distributed Systems. How do regular procedure calls work in programming languages? Problems with sockets RPC. Regular procedure calls Problems with sockets Distributed Systems Sockets interface is straightforward [connect] read/write [disconnect] Remote Procedure Calls BUT it forces read/write mechanism We usually use a procedure call

More information

Concurrent Programming

Concurrent Programming Concurrency Concurrent Programming A sequential program has a single thread of control. Its execution is called a process. A concurrent program has multiple threads of control. They may be executed as

More information

Zhifu Pei CSCI5448 Spring 2011 Prof. Kenneth M. Anderson

Zhifu Pei CSCI5448 Spring 2011 Prof. Kenneth M. Anderson Zhifu Pei CSCI5448 Spring 2011 Prof. Kenneth M. Anderson Introduction History, Characteristics of Java language Java Language Basics Data types, Variables, Operators and Expressions Anatomy of a Java Program

More information

Term Project report for EE5302

Term Project report for EE5302 Term Project report for EE5302 Submitted by: Vidhya N.S Murthy Student ID: 100060564 Project statement To study the statistical properties of a video signal and remove spatial redundancy using different

More information

The Proxy Pattern. Design Patterns In Java Bob Tarr

The Proxy Pattern. Design Patterns In Java Bob Tarr The Proxy Pattern Intent Provide a surrogate or placeholder for another object to control access to it Also Known As Surrogate Motivation A proxy is a person authorized to act for another person an agent

More information

Short Notes of CS201

Short Notes of CS201 #includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system

More information

C++ PROGRAMMING LANGUAGE: CLASSES. CAAM 519, CHAPTER 13

C++ PROGRAMMING LANGUAGE: CLASSES. CAAM 519, CHAPTER 13 C++ PROGRAMMING LANGUAGE: CLASSES. CAAM 519, CHAPTER 13 This chapter focuses on introducing the notion of classes in the C++ programming language. We describe how to create class and use an object of a

More information

On the Use of CORBA in High Level Software Applications at the SLS

On the Use of CORBA in High Level Software Applications at the SLS PAUL SCHERRER INSTITUT SLS TME TA 2001 0183 November, 2001 On the Use of CORBA in High Level Software Applications at the SLS Michael Böge, Jan Chrin Paul Scherrer Institut CH 5232 Villigen PSI Switzerland

More information

What the CPU Sees Basic Flow Control Conditional Flow Control Structured Flow Control Functions and Scope. C Flow Control.

What the CPU Sees Basic Flow Control Conditional Flow Control Structured Flow Control Functions and Scope. C Flow Control. C Flow Control David Chisnall February 1, 2011 Outline What the CPU Sees Basic Flow Control Conditional Flow Control Structured Flow Control Functions and Scope Disclaimer! These slides contain a lot of

More information

Tokens, Expressions and Control Structures

Tokens, Expressions and Control Structures 3 Tokens, Expressions and Control Structures Tokens Keywords Identifiers Data types User-defined types Derived types Symbolic constants Declaration of variables Initialization Reference variables Type

More information

CS201 - Introduction to Programming Glossary By

CS201 - Introduction to Programming Glossary By CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with

More information

dyn dynamic object management

dyn dynamic object management 1 dyn dynamic object management Thomas Grill, Vienna http://grrrr.org September 2004 Abstract dyn 1 is a sketch of a uniform, well-documented programming interface to Pure Data s native object management

More information

Programming. Syntax and Semantics

Programming. Syntax and Semantics Programming For the next ten weeks you will learn basic programming principles There is much more to programming than knowing a programming language When programming you need to use a tool, in this case

More information

L3.4. Data Management Techniques. Frederic Desprez Benjamin Isnard Johan Montagnat

L3.4. Data Management Techniques. Frederic Desprez Benjamin Isnard Johan Montagnat Grid Workflow Efficient Enactment for Data Intensive Applications L3.4 Data Management Techniques Authors : Eddy Caron Frederic Desprez Benjamin Isnard Johan Montagnat Summary : This document presents

More information

CSE 333 SECTION 9. Threads

CSE 333 SECTION 9. Threads CSE 333 SECTION 9 Threads HW4 How s HW4 going? Any Questions? Threads Sequential execution of a program. Contained within a process. Multiple threads can exist within the same process. Every process starts

More information

Advanced Systems Programming

Advanced Systems Programming Advanced Systems Programming Introduction to C++ Martin Küttler September 19, 2017 1 / 18 About this presentation This presentation is not about learning programming or every C++ feature. It is a short

More information

Remote Procedure Calls (RPC)

Remote Procedure Calls (RPC) Distributed Computing Remote Procedure Calls (RPC) Dr. Yingwu Zhu Problems with Sockets Sockets interface is straightforward [connect] read/write [disconnect] BUT it forces read/write mechanism We usually

More information

Exception Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011

Exception Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011 More C++ David Chisnall March 17, 2011 Exceptions A more fashionable goto Provides a second way of sending an error condition up the stack until it can be handled Lets intervening stack frames ignore errors

More information

CCReflect has a few interesting features that are quite desirable for DigiPen game projects:

CCReflect has a few interesting features that are quite desirable for DigiPen game projects: CCReflect v1.0 User Manual Contents Introduction... 2 Features... 2 Dependencies... 2 Compiler Dependencies... 2 Glossary... 2 Type Registration... 3 POD Registration... 3 Non-Pod Registration... 3 External

More information

Programming in C# with Microsoft Visual Studio 2010

Programming in C# with Microsoft Visual Studio 2010 Programming in C# with Microsoft Visual Studio 2010 Course 10266; 5 Days, Instructor-led Course Description: The course focuses on C# program structure, language syntax, and implementation details with.net

More information

Classes and Objects. Class scope: - private members are only accessible by the class methods.

Classes and Objects. Class scope: - private members are only accessible by the class methods. Class Declaration Classes and Objects class class-tag //data members & function members ; Information hiding in C++: Private Used to hide class member data and methods (implementation details). Public

More information

C#: framework overview and in-the-small features

C#: framework overview and in-the-small features Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer C#: framework overview and in-the-small features Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer

More information

Objects Managing a Resource

Objects Managing a Resource Objects Managing a Resource 1 What is a Resource Respects Release/Acquire protocol files (open/close) memory allocation (allocate/free) locks (acquire/release). 2 What is a Resource Objects when constructed,

More information

RAJIV GANDHI COLLEGE OF ENGINEERING AND TECHNOLOGY DEPARTMENT OF INFORMATION TECHNOLOGY OBJECT ORIENTED PROGRAMMING QUESTION BANK UNIT I 2 MARKS

RAJIV GANDHI COLLEGE OF ENGINEERING AND TECHNOLOGY DEPARTMENT OF INFORMATION TECHNOLOGY OBJECT ORIENTED PROGRAMMING QUESTION BANK UNIT I 2 MARKS RAJIV GANDHI COLLEGE OF ENGINEERING AND TECHNOLOGY DEPARTMENT OF INFORMATION TECHNOLOGY OBJECT ORIENTED PROGRAMMING YEAR/SEM:II & III UNIT I 1) Give the evolution diagram of OOPS concept. 2) Give some

More information

Function Binding. Special thanks to: John Edwards. Randy Gaul

Function Binding. Special thanks to: John Edwards. Randy Gaul Function Binding Special thanks to: John Edwards Randy Gaul Introspection Generic Variable Function Binding Simple Case Uses Demo Overview Function Binding Introspection Run-time knows little about types

More information

Programming in Visual Basic with Microsoft Visual Studio 2010

Programming in Visual Basic with Microsoft Visual Studio 2010 Programming in Visual Basic with Microsoft Visual Studio 2010 Course 10550; 5 Days, Instructor-led Course Description This course teaches you Visual Basic language syntax, program structure, and implementation

More information

MaanavaN.Com CS1203 OBJECT ORIENTED PROGRAMMING DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

MaanavaN.Com CS1203 OBJECT ORIENTED PROGRAMMING DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING SUB CODE / SUBJECT: CS1203 / Object oriented programming YEAR / SEM: II / III QUESTION BANK UNIT I FUNDAMENTALS PART-A (2 MARKS) 1. What is Object Oriented

More information

EL2310 Scientific Programming

EL2310 Scientific Programming Florian Pokorny Yasemin Bekiroglu Overview Overview Matlab project Presentations Arrays Wrap Up Functions and return values Other tasks and useful stuff Strings Matlab project Matlab Project Coin detection.

More information

C# and Java. C# and Java are both modern object-oriented languages

C# and Java. C# and Java are both modern object-oriented languages C# and Java C# and Java are both modern object-oriented languages C# came after Java and so it is more advanced in some ways C# has more functional characteristics (e.g., anonymous functions, closure,

More information

CS Programming In C

CS Programming In C CS 24000 - Programming In C Week Two: Basic C Program Organization and Data Types Zhiyuan Li Department of Computer Science Purdue University, USA 2 int main() { } return 0; The Simplest C Program C programs

More information

CPSC 213. Introduction to Computer Systems. Instance Variables and Dynamic Allocation. Unit 1c

CPSC 213. Introduction to Computer Systems. Instance Variables and Dynamic Allocation. Unit 1c CPSC 213 Introduction to Computer Systems Unit 1c Instance Variables and Dynamic Allocation 1 Reading For Next 3 Lectures Companion 2.4.4-2.4.5 Textbook Structures, Dynamic Memory Allocation, Understanding

More information

Core Java - SCJP. Q2Technologies, Rajajinagar. Course content

Core Java - SCJP. Q2Technologies, Rajajinagar. Course content Core Java - SCJP Course content NOTE: For exam objectives refer to the SCJP 1.6 objectives. 1. Declarations and Access Control Java Refresher Identifiers & JavaBeans Legal Identifiers. Sun's Java Code

More information

(800) Toll Free (804) Fax Introduction to Java and Enterprise Java using Eclipse IDE Duration: 5 days

(800) Toll Free (804) Fax   Introduction to Java and Enterprise Java using Eclipse IDE Duration: 5 days Course Description This course introduces the Java programming language and how to develop Java applications using Eclipse 3.0. Students learn the syntax of the Java programming language, object-oriented

More information

Bruce Merry. IOI Training Dec 2013

Bruce Merry. IOI Training Dec 2013 IOI Training Dec 2013 Outline 1 2 3 Outline 1 2 3 You can check that something is true using assert: #include int main() { assert(1 == 2); } Output: test_assert: test_assert.cpp:4: int main():

More information

PROGRAMMING IN VISUAL BASIC WITH MICROSOFT VISUAL STUDIO Course: 10550A; Duration: 5 Days; Instructor-led

PROGRAMMING IN VISUAL BASIC WITH MICROSOFT VISUAL STUDIO Course: 10550A; Duration: 5 Days; Instructor-led CENTER OF KNOWLEDGE, PATH TO SUCCESS Website: PROGRAMMING IN VISUAL BASIC WITH MICROSOFT VISUAL STUDIO 2010 Course: 10550A; Duration: 5 Days; Instructor-led WHAT YOU WILL LEARN This course teaches you

More information

개발과정에서의 MATLAB 과 C 의연동 ( 영상처리분야 )

개발과정에서의 MATLAB 과 C 의연동 ( 영상처리분야 ) 개발과정에서의 MATLAB 과 C 의연동 ( 영상처리분야 ) Application Engineer Caleb Kim 2016 The MathWorks, Inc. 1 Algorithm Development with MATLAB for C/C++ Programmers Objectives Use MATLAB throughout algorithm development

More information

From Java to C++ From Java to C++ CSE250 Lecture Notes Weeks 1 2, part of 3. Kenneth W. Regan University at Buffalo (SUNY) September 10, 2009

From Java to C++ From Java to C++ CSE250 Lecture Notes Weeks 1 2, part of 3. Kenneth W. Regan University at Buffalo (SUNY) September 10, 2009 From Java to C++ CSE250 Lecture Notes Weeks 1 2, part of 3 Kenneth W. Regan University at Buffalo (SUNY) September 10, 2009 C++ Values, References, and Pointers 1 C++ Values, References, and Pointers 2

More information

Simulink 를이용한 효율적인레거시코드 검증방안

Simulink 를이용한 효율적인레거시코드 검증방안 Simulink 를이용한 효율적인레거시코드 검증방안 류성연 2015 The MathWorks, Inc. 1 Agenda Overview to V&V in Model-Based Design Legacy code integration using Simulink Workflow for legacy code verification 2 Model-Based Design

More information

EUROPEAN MIDDLEWARE INITIATIVE

EUROPEAN MIDDLEWARE INITIATIVE EUROPEAN MIDDLEWARE INITIATIVE COMMON AUTHENTICATION LIBRARY DEVELOPER S GUIDE Document version: 2.1.1 EMI Component Version: 2.x 1/14 This work is co-funded by the European Commission as part of the EMI

More information

Special Topics: Programming Languages

Special Topics: Programming Languages Lecture #23 0 V22.0490.001 Special Topics: Programming Languages B. Mishra New York University. Lecture # 23 Lecture #23 1 Slide 1 Java: History Spring 1990 April 1991: Naughton, Gosling and Sheridan (

More information

Fast Introduction to Object Oriented Programming and C++

Fast Introduction to Object Oriented Programming and C++ Fast Introduction to Object Oriented Programming and C++ Daniel G. Aliaga Note: a compilation of slides from Jacques de Wet, Ohio State University, Chad Willwerth, and Daniel Aliaga. Outline Programming

More information

CSE 358 Spring 2006 Selected Notes Set 8

CSE 358 Spring 2006 Selected Notes Set 8 CSE 358 Spring 2006 Selected Notes Set 8 Alexander A. Shvartsman Computer Science and Engineering University of Connecticut February 2, 2006 358-07-1 - Models Centralized (e.g, single node) system C-S

More information

Arrays and Pointers in C & C++

Arrays and Pointers in C & C++ Arrays and Pointers in C & C++ Professor Hugh C. Lauer CS-2303, System Programming Concepts (Slides include materials from The C Programming Language, 2 nd edition, by Kernighan and Ritchie, Absolute C++,

More information

Outline. S: past, present and future Some thoughts. The 80s. Interfaces - 60s & 70s. Duncan Temple Lang Department of Statistics UC Davis

Outline. S: past, present and future Some thoughts. The 80s. Interfaces - 60s & 70s. Duncan Temple Lang Department of Statistics UC Davis S: past, present and future Some thoughts Duncan Temple Lang Department of Statistics UC Davis Outline Good idea that was either taken up or missed. Interfaces Thoughts on how S evolved and what implications

More information

MACHINE-LEVEL PROGRAMMING IV: Computer Organization and Architecture

MACHINE-LEVEL PROGRAMMING IV: Computer Organization and Architecture MACHINE-LEVEL PROGRAMMING IV: DATA CS 045 Computer Organization and Architecture Prof. Donald J. Patterson Adapted from Bryant and O Hallaron, Computer Systems: A Programmer s Perspective, Third Edition

More information

Introduction to C++ Professor Hugh C. Lauer CS-2303, System Programming Concepts

Introduction to C++ Professor Hugh C. Lauer CS-2303, System Programming Concepts Introduction to C++ Professor Hugh C. Lauer CS-2303, System Programming Concepts (Slides include materials from The C Programming Language, 2 nd edition, by Kernighan and Ritchie, Absolute C++, by Walter

More information

CPSC 427: Object-Oriented Programming

CPSC 427: Object-Oriented Programming CPSC 427: Object-Oriented Programming Michael J. Fischer Lecture 11 October 3, 2018 CPSC 427, Lecture 11, October 3, 2018 1/24 Copying and Assignment Custody of Objects Move Semantics CPSC 427, Lecture

More information

FMI Kit for Simulink version by Dassault Systèmes

FMI Kit for Simulink version by Dassault Systèmes FMI Kit for Simulink version 2.4.0 by Dassault Systèmes April 2017 The information in this document is subject to change without notice. Copyright 1992-2017 by Dassault Systèmes AB. All rights reserved.

More information

Hierarchical inheritance: Contains one base class and multiple derived classes of the same base class.

Hierarchical inheritance: Contains one base class and multiple derived classes of the same base class. 1. What is C#? C# (pronounced "C sharp") is a simple, modern, object oriented, and type safe programming language. It will immediately be familiar to C and C++ programmers. C# combines the high productivity

More information

Implementing Interfaces. Marwan Burelle. July 20, 2012

Implementing Interfaces. Marwan Burelle. July 20, 2012 Implementing marwan.burelle@lse.epita.fr http://www.lse.epita.fr/ July 20, 2012 Outline 1 2 3 4 Quick Overview of System oriented programming language Variant of C with a rationnalized syntax. Syntactic

More information

Classes. Logical method to organise data and functions in a same structure. Also known as abstract data type (ADT).

Classes. Logical method to organise data and functions in a same structure. Also known as abstract data type (ADT). UNITII Classes Logical method to organise data and functions in a same structure. Also known as abstract data type (ADT). It s a User Defined Data-type. The Data declared in a Class are called Data- Members

More information

int result; int waitstat; int stat = PmcaAsyncGetGain(&result); // stat receives request id

int result; int waitstat; int stat = PmcaAsyncGetGain(&result); // stat receives request id PMCA COM API Programmer's Guide PMCA COM is an Application Programming Interface Library for the Amptek Pocket Multichannel Analyzers MCA8000 and MCA8000A. PMCA COM runs on personal computers under any

More information

CONTENTS. PART 1 Structured Programming 1. 1 Getting started 3. 2 Basic programming elements 17

CONTENTS. PART 1 Structured Programming 1. 1 Getting started 3. 2 Basic programming elements 17 List of Programs xxv List of Figures xxix List of Tables xxxiii Preface to second version xxxv PART 1 Structured Programming 1 1 Getting started 3 1.1 Programming 3 1.2 Editing source code 5 Source code

More information