Http://www.cs.cornell.edu/courses/ cs612/2002sp/projects/ CS612 Term Projects http://www.cs.cornell.edu/courses/ cs612/2002sp/projects/

Slides:



Advertisements
Similar presentations
MPI Message Passing Interface
Advertisements

C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 7: User-Defined Functions II.
Chapter 7: User-Defined Functions II
DISTRIBUTED FILE SYSTEM USING RMI
1 1 Lecture 4 Structure – Array, Records and Alignment Memory- How to allocate memory to speed up operation Structure – Array, Records and Alignment Memory-
Names and Scopes CS 351. Program Binding We should be familiar with this notion. A variable is bound to a method or current block e.g in C++: namespace.
Previous finals up on the web page use them as practice problems look at them early.
Communication in Distributed Systems –Part 2
A Load Balancing Framework for Adaptive and Asynchronous Applications Kevin Barker, Andrey Chernikov, Nikos Chrisochoides,Keshav Pingali ; IEEE TRANSACTIONS.
School of Computing and Mathematics, University of Huddersfield Computing Science: WEEK 17 Announcement: next few weeks… 9 nd Feb: Comparative Programming.
CS 11 java track: lecture 1 Administrivia need a CS cluster account cgi-bin/sysadmin/account_request.cgi need to know UNIX
C++ Programming: From Problem Analysis to Program Design, Fifth Edition, Fifth Edition Chapter 7: User-Defined Functions II.
Code Optimization 1 Course Overview PART I: overview material 1Introduction 2Language processors (tombstone diagrams, bootstrapping) 3Architecture of a.
1CPSD Software Infrastructure for Application Development Laxmikant Kale David Padua Computer Science Department.
C Functions Three major differences between C and Java functions: –Functions are stand-alone entities, not part of objects they can be defined in a file.
1 Processor design Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section 11.3.
Object Interaction: RMI and RPC 1. Overview 2 Distributed applications programming - distributed objects model - RMI, invocation semantics - RPC Products.
Advanced Programming in C
Introduction to Visual Basic. NET,. NET Framework and Visual Studio
Remix: On-demand Live Randomization
The Machine Model Memory
Chapter 7: User-Defined Functions II
Names and Attributes Names are a key programming language feature
Self Healing and Dynamic Construction Framework:
Writing simple Java Web Services using Eclipse
On the Duality of Operating System Structures
CS 326 Programming Languages, Concepts and Implementation
Day 12 Threads.
10.3 Details of Recursion.
Distribution and components
A451 Theory – 7 Programming 7A, B - Algorithms.
Team 1 Aakanksha Gupta, Solomon Walker, Guanghong Wang
Algorithm Analysis CSE 2011 Winter September 2018.
Threads and Cooperation
User-Defined Functions
Advanced Operating Systems
Synchronization Lecture 23 – Fall 2017.
CS 179 Project Intro.
Milind A. Bhandarkar Adaptive MPI Milind A. Bhandarkar
Outline Midterm results summary Distributed file systems – continued
CS 425/625 Software Engineering Architectural Design
Lecture 4: RPC Remote Procedure Call CDK: Chapter 5
Classes and Objects.
Lecture Topics: 11/1 General Operating System Concepts Processes
Unit 3 Test: Friday.
Background and Motivation
Programming with Shared Memory
Outline Chapter 2 (cont) OS Design OS structure
Chapter 7: User-Defined Functions II
Prof. Leonardo Mostarda University of Camerino
Activation records Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Week 4 Lecture-2 Chapter 6 (Methods).
Processor design Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section 11.3.
Programming with Shared Memory
Outline Announcements Differences between FORTRAN and C
Introducing Java.
Predefined Functions Revisited
System calls….. C-program->POSIX call
Quality-aware Middleware
Dr. David Matuszek Spring, 2003
Lecture 6: RPC (exercises/questions)
Lecture 7: RPC (exercises/questions)
CSE 373: Data Structures and Algorithms
1.3.7 High- and low-level languages and their translators
Pointers, Dynamic Data, and Reference Types
Term Project Description
Processor design Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section 11.3.
Activation records Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Threads CSE 2431: Introduction to Operating Systems
Presentation transcript:

http://www.cs.cornell.edu/courses/ cs612/2002sp/projects/ CS612 Term Projects http://www.cs.cornell.edu/courses/ cs612/2002sp/projects/

Expectations picking a partner(s) that you can work with, meeting with your project supervisor at least once a week. doing background reading on the topic, designed novel algorithms or systems to solve the problem, building an prototype implementation of the system, presenting your work and results to the class, writing and submit a report about your activities, and [optionally] developing a web page that describes your work.

Project Deadlines Friday, March 26th -- Signup for a project There will be two presentations on each of these dates. 4/25 -???, then ??? 4/30 -???, then ??? 5/1 - ???, then ??? Friday, May 3rd -- Turn in your final reports and implementations.

The Projects Tile Size Selection Empirical Optimization of Sparse Kernels Value Prediction Language Extensions for the Mobile Object Layer Computationally Intensive Mobile Computing Computing Reuse Distance Exactly Design your own project

Tile Size Selection

Tile Size Selection State of the art in tiling imperfectly nested codes Product space approach can be used for converting imperfect to perfect nesting Framework can be used for tiling imperfectly nested loops Heuristics exist for selecting tile sizes for perfectly nested loops. It remains for someone to put it all together.

Tile Size Selection The goals of the project are the following :- Develop a tile-size determination algorithm for imperfectly-nested loops. Compare the performance of the code obtained by tiling with the tile-size predicted by your algorithm to the performance with the "optimal" tile-size.

Empirical Optimization of Sparse Kernels MVM has very little reuse. Toledo: restructuring Sparse MVM can double its performance on RS6000. Sparse MVM is often MMM, which can be blocked. But, block size is determined by sparsity and blocks are very small.

Empirical Optimization of Sparse Kernels Project goals: Evaluate the effective of Toledo’s optimizations on a non-RS6000 architecture. Use an empirical optimization framework (e.g., ATLAS) to generate highly optimized kernels for performing small MMM’s. Evaluate the effectively of combined optimizations on a number of different sparse matrices.

Value Prediction 80% of load values in some codes can be predicted using relatively simple schemes. E.g., the address of the load instruction to determine the predicted value; for example, the processor can guess that the value will be the same as the value that was last returned by that load instruction However, we are not aware of any careful studies that explain why value prediction works so well on such codes

Value Prediction Novice project goals: Understand the state of the art in value prediction Design and evaluate a value prediction scheme Advanced project goals: Understand how compiler technology can be used to improve the performance of value prediction. Implement a prototype compiler system to implement your strategies.

Language Extensions for the Mobile Object Layer The Mobile Object Layer (MOL), Part of the Portable Runtime Environment for Mobile Applications (PREMA) Supports a global distributed object space Provides correct and efficient protocols for message forwarding and communication between migrating objects. Designed to work with dynamic load balancing libraries. Lean, language-independent. Easy to port and maintain.

Language Extensions for the Mobile Object Layer Current interface uses C Ineffective for C++ Class declarations Object creation // Params are passed to main() mol_init(argc, argv); mol_msg_handler_t handlers[] = {myHandler}; mol_register_msg_handlers(handlers, 1); Foo* pFoo = new Foo(); mol_mobile_ptr_t mp = mol_create_mobile_ptr(pFoo); struct Foo { ... void method(void* pParam); ... }; // This handler must be defined // externally to the struct, or else // be static. void myHandler(int nSrc, mol_mobile_ptr_t mp, void* pObject, void* pData, int nSize, void* pArg) { Foo* pFoo = (Foo*)pObject; pFoo->method(pData); } Method invocation void* pData = <something>; mol_message(mp, myHandler, pData, <data size>, MOL_DELAYED_HANDLER, NULL);

Language Extensions for the Mobile Object Layer What would be nice: Declaration/creation MobileObject<Foo>* pObject = new MobileObject<Foo>; Method invocation pObject->method(pData);

Language Extensions for the Mobile Object Layer The goals of the project are the following: Design and implement a C++-friendly interface for the MOL. Either template based, or Using syntactic extensions. Compare C++ programs written using the C-style interface with your C++ interface

Computationally Intensive Mobile Computing Remote Local Should we execute locally or remotely?

Computationally Intensive Mobile Computing The goals of the project are the following :- Develop a simple model for predicting the performance of local and remote execution. Build a restructuring compiler to generate programs for local and remote execution.

Computing Reuse Distance Exactly Can we compute reuse distance exactly at compile time?

Computing Reuse Distance Exactly

Computing Reuse Distance Exactly The goals of the project is to develop a method for using Presberger formulae for exactly computing the reuse distance between references in a simple loop nest.

Design your own project Several critera, It must be developed with oversight from Paul. It must be substantial enough to keep you busy until the end of the semester, but not so ambitious that you cannot possibly complete it on time. It must have something to do with compilers, scientific computing, or high-performance computing.

Threaded-C Project idea: Restructuring compiler to parallelize loops to Threaded-C