Speed up numerical analysis with MATLAB



Similar documents
Parallel Computing with MATLAB

Calcul Parallèle sous MATLAB

Speeding up MATLAB and Simulink Applications

Introduction to MATLAB Gergely Somlay Application Engineer

Bringing Big Data Modelling into the Hands of Domain Experts

Data Analysis with MATLAB The MathWorks, Inc. 1

Tackling Big Data with MATLAB Adam Filion Application Engineer MathWorks, Inc.

Applications to Computational Financial and GPU Computing. May 16th. Dr. Daniel Egloff

:Introducing Star-P. The Open Platform for Parallel Application Development. Yoel Jacobsen E&M Computing LTD

What s New in MATLAB and Simulink

2015 The MathWorks, Inc. 1

Is a Data Scientist the New Quant? Stuart Kozola MathWorks

Numerical Methods in MATLAB

Echtzeittesten mit MathWorks leicht gemacht Simulink Real-Time Tobias Kuschmider Applikationsingenieur

Graphical Processing Units to Accelerate Orthorectification, Atmospheric Correction and Transformations for Big Data

Machine Learning with MATLAB David Willingham Application Engineer

Programming models for heterogeneous computing. Manuel Ujaldón Nvidia CUDA Fellow and A/Prof. Computer Architecture Department University of Malaga

GPUs for Scientific Computing

Product Development Flow Including Model- Based Design and System-Level Functional Verification

ANALYSIS OF RSA ALGORITHM USING GPU PROGRAMMING

Performance Evaluation of NAS Parallel Benchmarks on Intel Xeon Phi

Parallel Computing using MATLAB Distributed Compute Server ZORRO HPC

Software Development with Real- Time Workshop Embedded Coder Nigel Holliday Thales Missile Electronics. Missile Electronics

Matlab on a Supercomputer

Integrating MATLAB into your C/C++ Product Development Workflow Andy Thé Product Marketing Image Processing Applications

Graphical Processing Units to Accelerate Orthorectification, Atmospheric Correction and Transformations for Big Data

Part I Courses Syllabus

22S:295 Seminar in Applied Statistics High Performance Computing in Statistics

Introduction to MATLAB for Data Analysis and Visualization

MATLAB in Business Critical Applications Arvind Hosagrahara Principal Technical Consultant

Next Generation GPU Architecture Code-named Fermi

Multicore Parallel Computing with OpenMP

NVIDIA CUDA Software and GPU Parallel Computing Architecture. David B. Kirk, Chief Scientist

Introduction to Matlab Distributed Computing Server (MDCS) Dan Mazur and Pier-Luc St-Onge December 1st, 2015

HPC Wales Skills Academy Course Catalogue 2015

HPC with Multicore and GPUs

CUDA programming on NVIDIA GPUs

GPU System Architecture. Alan Gray EPCC The University of Edinburgh

Origins, Evolution, and Future Directions of MATLAB Loren Shure

10- High Performance Compu5ng

High-Performance Computing

RevoScaleR Speed and Scalability

THE NAS KERNEL BENCHMARK PROGRAM

Overview of HPC Resources at Vanderbilt

Embedded Vision on FPGAs The MathWorks, Inc. 1

OPC COMMUNICATION IN REAL TIME

ACCELERATING COMMERCIAL LINEAR DYNAMIC AND NONLINEAR IMPLICIT FEA SOFTWARE THROUGH HIGH- PERFORMANCE COMPUTING

INTEL PARALLEL STUDIO EVALUATION GUIDE. Intel Cilk Plus: A Simple Path to Parallelism

Introducing PgOpenCL A New PostgreSQL Procedural Language Unlocking the Power of the GPU! By Tim Child

Introduction to GPU hardware and to CUDA

The Fastest Way to Parallel Programming for Multicore, Clusters, Supercomputers and the Cloud.

How To Build A Trading Engine In A Microsoft Microsoft Matlab (A Trading Engine)

GPU Hardware and Programming Models. Jeremy Appleyard, September 2015

HPC Deployment of OpenFOAM in an Industrial Setting

Product Information CANape Option Simulink XCP Server

Analysis Tools and Libraries for BigData

A general-purpose virtualization service for HPC on cloud computing: an application to GPUs

Accelerating CFD using OpenFOAM with GPUs

Understanding the Benefits of IBM SPSS Statistics Server

Eli Levi Eli Levi holds B.Sc.EE from the Technion.Working as field application engineer for Systematics, Specializing in HDL design with MATLAB and

High Performance Computing in CST STUDIO SUITE

High Performance Matrix Inversion with Several GPUs

Introduction to GP-GPUs. Advanced Computer Architectures, Cristina Silvano, Politecnico di Milano 1

Computer Graphics Hardware An Overview

Parallel Computing for Data Science

APPM4720/5720: Fast algorithms for big data. Gunnar Martinsson The University of Colorado at Boulder

GeoImaging Accelerator Pansharp Test Results

GPU Parallel Computing Architecture and CUDA Programming Model

PyFR: Bringing Next Generation Computational Fluid Dynamics to GPU Platforms

GPGPU accelerated Computational Fluid Dynamics

Case Study on Productivity and Performance of GPGPUs

HPC enabling of OpenFOAM R for CFD applications

MathWorks Products and Prices North America Academic March 2013

Writing Applications for the GPU Using the RapidMind Development Platform

Best Practises for LabVIEW FPGA Design Flow. uk.ni.com ireland.ni.com

Parallel Computing: Strategies and Implications. Dori Exterman CTO IncrediBuild.

High Performance. CAEA elearning Series. Jonathan G. Dudley, Ph.D. 06/09/ CAE Associates

Scalable Data Analysis in R. Lee E. Edlefsen Chief Scientist UserR! 2011

ST810 Advanced Computing

Parallel Programming Survey

ACCELERATING SELECT WHERE AND SELECT JOIN QUERIES ON A GPU

Enhancing Cloud-based Servers by GPU/CPU Virtualization Management

Overview. Lecture 1: an introduction to CUDA. Hardware view. Hardware view. hardware view software view CUDA programming

GPU-based Decompression for Medical Imaging Applications

OpenFOAM Optimization Tools

bwgrid Treff MA/HD Sabine Richling, Heinz Kredel Universitätsrechenzentrum Heidelberg Rechenzentrum Universität Mannheim 29.

David Rioja Redondo Telecommunication Engineer Englobe Technologies and Systems

Recommended hardware system configurations for ANSYS users

GEDAE TM - A Graphical Programming and Autocode Generation Tool for Signal Processor Applications

Credit Risk Modeling with MATLAB

GPU File System Encryption Kartik Kulkarni and Eugene Linkov

Accelerating Simulation & Analysis with Hybrid GPU Parallelization and Cloud Computing

L20: GPU Architecture and Models

Seeking Opportunities for Hardware Acceleration in Big Data Analytics

DARPA, NSF-NGS/ITR,ACR,CPA,

CS1112 Spring 2014 Project 4. Objectives. 3 Pixelation for Identity Protection. due Thursday, 3/27, at 11pm

Transcription:

2011 Technology Trend Seminar Speed up numerical analysis with MATLAB MathWorks: Giorgia Zucchelli Marieke van Geffen Rachid Adarghal TU Delft: Prof.dr.ir. Kees Vuik Thales Nederland: Dènis Riedijk 2011 The MathWorks, Inc. 1

Agenda 14:00 Welcome and introduction 14:10 Overview of numerical analysis techniques with MATLAB 14:50 Break 15:10 Speeding up the execution of your MATLAB code 16:00 Break 16:20 GPU computing with MATLAB 16:30 Use of GPUs at Thales Nederland 17:00 Discussion and wrap up 2

Overview of numerical analysis techniques with MATLAB 3

Numerical analysis tasks Solving linear equations Interpolation Finding zeros and roots Optimization and least squares Determining integrals Statistics and random number generation Fourier analysis Ordinary differential equations Partial differential equation 4

Numerical analysis with MATLAB (and Toolboxes) Solving linear equations Interpolation Finding zeros and roots Optimization and least squares Determining integrals Statistics and random number generation Fourier analysis Ordinary differential equations Partial differential equation 5

Do need to solve numerical analysis tasks? For standard tasks, do not re-invent the wheel: MATLAB and Toolboxes MATLAB Central Sources developed by others, eg. C, Fortran code For advanced research: Choose your preferred language / environment Develop innovation using MATLAB for testing and visualization 6

Do need to solve numerical analysis tasks? For standard tasks, do not re-invent the wheel: MATLAB and Toolboxes MATLAB Central Sources developed by others, eg. C, Fortran code Example: curve fitting For advanced research: Choose your preferred language / environment Develop innovation using MATLAB for testing and visualization Example: import C code in MATLAB 7

Example: curve fitting with MATLAB Two common challenges in creating an accurate curve fit: Can t describe the relationship between your variables Can t specify good starting points for your solvers 8

Challenge 1 Generating a Good Fit Without Domain Knowledge 9

Regression techniques Require that the user specify a model Choice of model is based on domain knowledge Example - population models Logistic Growth Exponential Growth 10

What if you don t know what model to use? 11

What if you don t know what model to use? Line Quadratic Rational 12

Demo 13

Summary Nonparametric fitting LOWESS: Curve Fitting Toolbox Cross Validation: Statistics Toolbox 14

Challenge 2 Pitfalls Using Nonlinear Regression 15

Nonlinear regression example t t t Concentrat ion e 4 e 5 e 6 1 2 3 16

Nonlinear regression example t t t Concentrat ion e 4 e 5 e 6 1 2 3 17

Practical implications: What does a bad R 2 mean? Bad model specification? Poor set of starting conditions? 18

Demo 19

Summary Use MultiStart to identify good starting conditions Global Optimization Toolbox Suitable for curve and surface fitting 20

Challenge Re(use) external code in MATLAB 21

Using (external) C code in MATLAB Create a MATLAB callable executable (MEX) from C, C++ or Fortran or Use MATLAB Coder to invoke the C code function 22

Importing C code creating a MEX interface MEX wrapper 23

Demo 24

MEX wrapper to invoke C code in MATLAB Data type conversion Using mx library Dynamic memory management Error management and checking of the arguments 25

Summary One time-only effort Invoke your C code in MATLAB Just like a MATLAB function Maintaining the performances Use MATLAB infrastructure Share your code with colleagues who are not C programmers 26

Importing C code with MATLAB Coder MATLAB Coder MATLAB function (MEX) 27

Demo 28

Using MATLAB Coder to invoke C code coder.ceval to invoke the C code within a MATLAB function MATLAB Coder to generate source code (C code) from the MATLAB function The code is automatically embedded in the generated function The code is compiled as a MEX for rapid execution in MATLAB 29

Summary Easy interface Do not require to program MEX interface Only a subset of MATLAB language and Toolboxes is supported Code generation MATLAB subset Suitable also for embedded applications 30

Key takeaways For standard tasks, do not re-invent the wheel: MATLAB and Toolboxes MATLAB Central Sources developed by others, eg. C, Fortran code For advanced research: Choose your preferred language / environment Develop innovation using MATLAB for testing and visualization 31

Speeding up the execution of your MATLAB code 32

Hardware solutions More processing power Faster processors Dedicated hardware More processors More memory 32 bit operating systems (4 GB of address space) 64 bit operating systems (16,000 GB of address space) Single Processor Multi-core GPGPU, Multiprocessor Cluster FPGA Grid, Cloud 33

Hardware & software solutions More processing power Faster processors Dedicated hardware More processors More memory 32 bit operating systems (4 GB of address space) 64 bit operating systems (16,000 GB of address space) MATLAB Multithreaded GPU Computing Parallel Computing Distributed Computing 34

Slow execution? Out of memory errors? Know your enemy: Understand the constraints Identify bottlenecks Exploit data and task parallelism Find the best tradeoff between programming effort and achieving your goals 35

MATLAB is multithreaded: new releases are faster No code changes required Enabled at MATLAB start-up Vector math improved Linear algebra operations Element-wise operations Linear Algebra Element-wise 36

Understanding MATLAB improves efficiency How does MATLAB store data? What data types does MATLAB support? How much overhead is there for arrays, structures, and cell arrays? When are data copies made? 37

What is the largest array you can create in MATLAB on 32 bit Windows XP? Memory Addresses Process Operating System a) 0.5 GB b) 1.0 GB c) 1.5 GB d) 2.0 GB e) 2.5 GB 38

Contiguous memory and copy on write >> x = rand(100,1) >> y = x >> y(1) = 0 x = rand(100,1) y = x Do not grow arrays within loops! Allocated y = [ 0, x(2:end)] 39

In-place memory operations >> x = rand(100,1) >> x = 2*x+12; >> y = 2*x+12; x = rand(100,1) x = x*2+12; Tradeoff readability with performances Allocated y = x*2+12; 40

Plot only what you need How much memory is needed to plot a 10 MB double array? >> y = rand(125e4,1); >> plot(y); a) 0 MB b) 10 MB b) 20 MB c) 30 MB d) 40 MB 43

Plot only what you need Every plot independently stores x and y data >> y = rand(125e4,1); %10MB >> plot(y) ; %20MB for x and y data Integers plotted as doubles Strategies: Downsample your data prior to plotting (e.g. every 10 th element) Divide your data into regular intervals and plot values of interest 44

Example: fitting data Load data from multiple files Extract a specific test Fit a spline to the data Write results to Microsoft Excel 46

Classes of bottlenecks File I/O Disk is slow compared to RAM When possible, use load and save commands Displaying output Creating new figures is expensive Writing to command window is slow Computationally intensive Trade-off modularization, readability and performance 47

Techniques for improving performance Vectorization Take full advantage of BLAS and LAPACK Brute force vectorization: cellfun, structfun, arrayfun Preallocation Minimize changing variable class Mexing (compiled code) 48

Programming parallel applications Level of control Required effort Minimal None Some Straightforward Extensive Involved 49

Programming parallel applications Level of control Required effort Minimal Built-in into Toolboxes Some Straightforward Extensive Involved 50

Example: optimizing tower placement Determine location of cell towers Maximize coverage Minimize overlap 51

Summary of example Enabled built-in support for Parallel Computing Toolbox in Optimization Toolbox Used a pool of MATLAB workers Optimized in parallel using fmincon 52

Parallel support in Optimization Toolbox Functions: fmincon Finds a constrained minimum of a function of several variables fminimax Finds a minimax solution of a function of several variables fgoalattain Solves the multiobjective goal attainment optimization problem Functions can take finite differences in parallel in order to speed the estimation of gradients 53

Toolboxes with built-in support Contain functions to directly leverage the Parallel Computing Toolbox Optimization Toolbox Global Optimization Toolbox Statistics Toolbox SystemTest Simulink Design Optimization Bioinformatics Toolbox Model-Based Calibration Toolbox Communications System Toolbox TOOLBOXES BLOCKSETS Worker Worker Worker Worker Worker Worker Worker 54

Programming parallel applications Level of control Required effort Minimal Built-in into Toolboxes Some High Level Programming (parfor) Extensive Involved 55

Parallel tasks Worker TOOLBOXES BLOCKSETS Worker Worker Worker Task 1 Task 2 Task 3 Task 4 Task 1 Task 2 Task 3 Task 4 Time Time 56

Peak Displacement (x) Displacement (x) Example: parameter sweep of ODEs Solve a 2 nd order ODE 5 m x Simulate with different values for b and k Record peak value for each run Plot results b x k x 0 1,2,... 1,2,... 1.2 1 0.8 0.6 0.4 0.2 0-0.2 m = 5, b = 2, k = 2 m = 5, b = 5, k = 5-0.4 0 5 10 15 20 25 Time (s) 2.5 2 1.5 1 0.5 0 2 Damping (b) 4 6 1 2 3 4 Stiffness (k) 5 57

Peak Displacement (x) Displacement (x) Summary of example Mixed task-parallel and serial code in the same function Ran loops on a pool of MATLAB resources Used Code Analyzer to help in converting existing for-loop into parfor-loop 1.2 1 0.8 0.6 0.4 0.2 0-0.2 m = 5, b = 2, k = 2 m = 5, b = 5, k = 5-0.4 0 5 10 15 20 25 Time (s) 2.5 2 1.5 1 0.5 0 2 Damping (b) 4 6 1 2 3 4 Stiffness (k) 5 58

Programming parallel applications Level of control Required effort Minimal Built-in into Toolboxes Some High Level Programming (distributed / spmd) Extensive Involved 62

63 Parallel data distribution 1 1 2 6 4 1 1 2 2 7 4 2 1 3 2 8 4 3 1 4 2 9 4 4 1 5 3 0 4 5 1 6 3 1 4 6 1 7 3 2 4 7 1 7 3 3 4 8 1 9 3 4 4 9 2 0 3 5 5 0 2 1 3 6 5 1 2 2 3 7 5 2 1 1 2 6 4 1 1 2 2 7 4 2 1 3 2 8 4 3 1 4 2 9 4 4 1 5 3 0 4 5 1 6 3 1 4 6 1 7 3 2 4 7 1 7 3 3 4 8 1 9 3 4 4 9 2 0 3 5 5 0 2 1 3 6 5 1 2 2 3 7 5 2 TOOLBOXES BLOCKSETS

Programming parallel applications Level of control Required effort Minimal Built-in into Toolboxes Some High Level Programming (interactive vs. scheduled) Extensive Involved 65

Interactive to scheduled Interactive Great for prototyping Immediate access to MATLAB workers Scheduled Offloads work to other MATLAB workers (local or on a cluster) Access to more computing resources for improved performance Frees up local MATLAB session 66

Scheduling work Work Worker TOOLBOXES BLOCKSETS Result Scheduler Worker Worker Worker 67

Peak Displacement (x) Displacement (x) Example: schedule processing Offload parameter sweep to local workers Get peak value results when processing is complete Plot results in local MATLAB 1.2 1 0.8 0.6 0.4 0.2 0-0.2 m = 5, b = 2, k = 2 m = 5, b = 5, k = 5-0.4 0 5 10 15 20 25 Time (s) 2.5 2 1.5 1 0.5 0 2 Damping (b) 4 6 1 2 3 4 Stiffness (k) 5 68

Peak Displacement (x) Displacement (x) Summary of example Used batch for off-loading work Used matlabpool option to off-load and run in parallel Used load to retrieve worker s workspace 1.2 1 0.8 0.6 0.4 0.2 0-0.2 m = 5, b = 2, k = 2 m = 5, b = 5, k = 5-0.4 0 5 10 15 20 25 Time (s) 2.5 2 1.5 1 0.5 0 2 Damping (b) 4 6 1 2 3 4 Stiffness (k) 5 69

Programming parallel applications Level of control Required effort Minimal Built-in into Toolboxes Some High Level Programming (parfor, spmd, batch) Extensive Low-Level Programming Constructs: (e.g. Jobs/Tasks, MPI-based) 70

Task-parallel workflows parfor Multiple independent iterations Easy to combine serial and parallel code Workflow Interactive using matlabpool Scheduled using batch jobs/tasks Series of independent tasks; not necessarily iterations Workflow Always scheduled 71

Displacement (x) Example: scheduling independent simulations Offload three independent approaches to solving our previous ODE example Retrieve simulated displacement as a function of time for each simulation Plot comparison of results in local MATLAB 1.2 1 0.8 0.6 0.4 0.2 0-0.2 m = 5, b = 2, k = 2 m = 5, b = 5, k = 5-0.4 0 5 10 15 20 25 Time (s) 72

Displacement (x) Summary of example Used findresource to find scheduler Used createjob and createtask to set up the problem Used submit to off-load and run in parallel Used getalloutputarguments 1.2 1 0.8 0.6 0.4 0.2 0-0.2 m = 5, b = 2, k = 2 m = 5, b = 5, k = 5-0.4 0 5 10 15 20 25 to retrieve all task outputs Time (s) 73

MPI-Based functions for higher control High-level abstractions of MPI functions labsendreceive, labbroadcast, and others Send, receive, and broadcast any data type in MATLAB Automatic bookkeeping Setup: communication, ranks, etc. Error detection: deadlocks and miscommunications Pluggable Use any MPI implementation that is binary-compatible with MPICH2 74

Run 8 local workers on desktop Desktop Computer Parallel Computing Toolbox Rapidly develop parallel applications on local computer Take full advantage of desktop power Separate computer cluster not required 75

Scale up to clusters, grids and clouds Desktop Computer Parallel Computing Toolbox Computer Cluster MATLAB Distributed Computing Server Scheduler 76

Support for schedulers Direct Support TORQUE Open API for others 77

Key takeaways Profile MATLAB to write efficient code Use parallel computing to speed up execution Tradeoff effort with speedup requirements Scale up to clusters without code changes 78

GPU computing with MATLAB 79

How to accelerate MATLAB on hardware Use DSPs for real-time execution On target automatic C code generation Deploy on FPGAs Synthesizable automatic HDL code generation Use multi-core PCs Multithreaded parallel computing Distribute on a cluster Distributed computing Use GP-GPUs New in R2010b 80

Why GPUs now? GPUs are a commodity Massively parallel architecture that can speed up intensive computations GPU are more generically programmable From 3D gaming to scientific computing 81

Speeding up applications with GPUs Different achievable speedups depending on: Hardware Type of application Programmer skills Source: NVIDIA 82

Applications that will run faster on GPUs Massively parallel tasks Computationally intensive tasks Tasks that have limited kernel size Tasks that do not necessarily require double accuracy & All these requirements need to be satisfied! 83

Programming GPU applications Level of control Required effort Minimal None Some Straightforward Extensive Involved 84

Programming GPU applications Level of control Required effort Minimal Built-in functions Some Straightforward Extensive Involved 85

Invoke built-in MATLAB functions on the GPU Accelerate standard (highly parallel) functions More than 100 MATLAB functions are already supported Communication System Object: ldpc.encoder, ldpc.decoder Out of the box: No additional effort for programming the GPU No accuracy for speed trade-off Double floating-point precision computations 86

Invoke built-in MATLAB functions on the GPU (1) Minimal effort, minimal level of control Define an array on the GPU A = rand(1000,1); B = rand(1000,1); A_gpu = gpuarray(a); B_gpu = gpuarray(b); Execute a built-in MATLAB function: Y_gpu = B_gpu\A_gpu; Retrieve data from the GPU result = gather(y_gpu); 87

Benchmarking A\b on the GPU 88

Programming GPU applications Level of control Required effort Minimal Built-in functions Some Functions on array data Extensive Involved 89

Run MATLAB functions on the GPU Accelerate scalar operations on large arrays Take full advantage on data parallelism Out of the box: No additional effort for programming the GPU No accuracy for speed trade-off Double floating-point precision computations 90

Run MATLAB functions on the GPU (2) Straightforward effort, regular level of control MATLAB function that perform element-wise arithmetic function y = TaylorFun(x) y = 1 + x*(1 + x*(1 + x*(1 +... x*(1 + x*(1 + x*(1 + x*(1 +... x*(1 +./9)./8)./7)./6)./5)./4)./3)./2); Load data on the GPU A = rand(1000,1); A_gpu = gpuarray(a); Execute the function as GPU kernels result = arrayfun(@taylorfun, A_gpu); 91

Benchmarking vector operations on the GPU 92

Programming GPU applications Level of control Required effort Minimal Built-in functions Some Functions on array data Extensive Directly invoke CUDA code 93

Directly invoke CUDA code from MATLAB Benefit from legacy code highly optimized for speed Achieve all the speed improvement that CUDA can deliver Use MATLAB as a test environment Generation of test signal Post-processing of results Suitable also for non-experts 94

Invoke CUDA Code from MATLAB (3) Involved effort, extensive level of control Compile CUDA (or PTX) code on the GPU nvcc -ptx myconv.cu Construct the kernel k = parallel.gpu.cudakernel('myconv.ptx', 'myconv.cu'); k.gridsize = [512 512]; k.threadblocksize = [32 32]; Run the kernel using the MATLAB workspace o = feval(k, rand(100, 1), rand(100, 1)); or gpu data i1gpu = gpuarray(rand(100, 1, 'single')); i2gpu = gpuarray(rand(100, 1, 'single')); ogpu = feval(k, i1gpu, i2gpu); 95

Can I use it now? GPU support is released with R2010b Part of Parallel Computing Toolbox NVIDIA CUDA capable GPUs With CUDA version 1.3 or greater 96

Key takeaways Tradeoff programming effort with level of control Non-experts can benefit from GPU computing CUDA programmers can test their code in MATLAB 97

Use of GPUs at Thales Nederland 98

Conclusions 99

Did you know about the campus- wide license to MATLAB & Simulink? Through the Delft University campus wide license you can access MATLAB, Simulink and many add-on products More than 50 MathWorks products for you available at Delft University of Technology Are you using MATLAB & Simulink? 100

Visit MathWorks Web Site Learn about MathWorks products Discover resources for learning, teaching, and research Learn how MathWorks products are used in academia and industry www.mathworks.nl/academia 101

Visit www.mathworks.nl/academia 102

Supporting Innovation MATLAB Central Open exchange for the MATLAB and Simulink user community 800,000 visits per month 50% increase over previous year File Exchange Free file upload/download, including MATLAB code, Simulink models, and documents File ratings and comments Over 9,000 contributed files, 400 submissions per month, 25,500 downloads per day Newsgroup and Web Forum Technical discussions about MATLAB and Simulink 200 posts per day Blogs Based on Feb-March 2009 data Read posts from key MathWorks developers who design and build the products 103

Learning Resources Interactive Video Tutorials Students learn the basics outside of the classroom with self-guided tutorials provided by MathWorks MATLAB Simulink Signal Processing Control Systems Many more Visit www.mathworks.com/academia/student_center/tutorials 104

105

2011 Technology Trend Seminar Speed up numerical analysis with MATLAB MathWorks: Giorgia Zucchelli Marieke van Geffen Rachid Adarghal TU Delft: Prof.dr.ir. Kees Vuik Thales Nederland: Dènis Riedijk 2011 The MathWorks, Inc. 106

Thank you for attending Please fill out your evaluation form Stay with Us for a drink 2011 The MathWorks, Inc. 107