New trends in parallel computing

Slides:



Advertisements
Similar presentations
Go Language * Go - Routines * Channels. New Concepts Do not communicate by sharing memory; instead, share memory by communicating. creating shared memory.
Advertisements

U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science Emery Berger University of Massachusetts Amherst Operating Systems CMPSCI 377 Lecture.
George Blank University Lecturer. CS 602 Java and the Web Object Oriented Software Development Using Java Chapter 4.
Erlang concurrency. Where were we? Finished talking about sequential Erlang Left with two questions  retry – not an issue; I mis-read the statement in.
Concurrency CS 510: Programming Languages David Walker.
Programming Language Semantics Java Threads and Locks Informal Introduction The Java Specification Language Chapter 17.
3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another.
Scripting Languages For Virtual Worlds. Outline Necessary Features Classes, Prototypes, and Mixins Static vs. Dynamic Typing Concurrency Versioning Distribution.
3.5 Interprocess Communication
Fundamentals of Python: From First Programs Through Data Structures
Peter Juszczyk CS 492/493 - ISGS. // Is this C# or Java? class TestApp { static void Main() { int counter = 0; counter++; } } The answer is C# - In C#
1 Testing Concurrent Programs Why Test?  Eliminate bugs?  Software Engineering vs Computer Science perspectives What properties are we testing for? 
Lecture 4: Parallel Programming Models. Parallel Programming Models Parallel Programming Models: Data parallelism / Task parallelism Explicit parallelism.
NReduce: A Distributed Virtual Machine for Parallel Graph Reduction Peter Kelly Paul Coddington Andrew Wendelborn Distributed and High Performance Computing.
Chapter 34 Java Technology for Active Web Documents methods used to provide continuous Web updates to browser – Server push – Active documents.
Object Oriented Design Jerry KotubaSYST Object Oriented Methodologies1.
By Garrett Kelly. 3 types or reasons for distributed applications Data Data used by the application is distributed Computation Computation is distributed.
C# EMILEE KING. HISTORY OF C# In the late 1990’s Microsoft recognized the need to be able to develop applications that can run on multiple operating system.
Middleware Services. Functions of Middleware Encapsulation Protection Concurrent processing Communication Scheduling.
Real Time Programming Language. Intro A programming language represents the nexus of design and structure. But misuse of the programming language can.
C H A P T E R E L E V E N Concurrent Programming Programming Languages – Principles and Paradigms by Allen Tucker, Robert Noonan.
Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9 th Edition Chapter 4: Threads.
3/12/2013Computer Engg, IIT(BHU)1 OpenMP-1. OpenMP is a portable, multiprocessing API for shared memory computers OpenMP is not a “language” Instead,
Operating Systems Unit 2: – Process Context switch Interrupt Interprocess communication – Thread Thread models Operating Systems.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
Programming Parallel Hardware using MPJ Express By A. Shafi.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
Topic 4: Distributed Objects Dr. Ayman Srour Faculty of Applied Engineering and Urban Planning University of Palestine.
Adding Concurrency to a Programming Language Peter A. Buhr and Glen Ditchfield USENIX C++ Technical Conference, Portland, Oregon, U. S. A., August 1992.
Programming in Go(lang)
Functional Programming
The language focusses on ease of use
Last Class: Introduction
Programming Languages Dan Grossman 2013
Basic 1960s It was designed to emphasize ease of use. Became widespread on microcomputers It is relatively simple. Will make it easier for people with.
Miraj Kheni Authors: Toyotaro Suzumura, Koji Ueno
Accelerators to Applications
Chapter 3: Process Concept
Jeff Barnhart, Eric Reeves, Bryson Lee
Distributed Shared Memory
Processes and Threads Processes and their scheduling
Spark Presentation.
Parallel Programming By J. H. Wang May 2, 2017.
CS399 New Beginnings Jonathan Walpole.
Computer Engg, IIT(BHU)
University of Technology
Implementing Simplified Molecular Dynamics Simulation in Different Parallel Paradigms Chao Mei April 27th, 2006 CS498LVK.
Functional Programming with Java
Parallel Programming in Contemporary Programming Languages (Part 2)
JavaScript Introduction
Realizing Concurrency using Posix Threads (pthreads)
Chapter 4: Threads.
Threads and Data Sharing
Realizing Concurrency using the thread model
Object Oriented Programming
CS3901 Intermediate Programming & Data Structures Introduction
Programming Languages 2nd edition Tucker and Noonan
Distributed Algorithms
Go.
Multithreaded Programming
Review CSE116 2/21/2019 B.Ramamurthy.
Creating Computer Programs
Realizing Concurrency using Posix Threads (pthreads)
Realizing Concurrency using the thread model
Realizing Concurrency using Posix Threads (pthreads)
Creating Computer Programs
Understanding Real-World Concurrency Bugs in Go
CMSC 202 Threads.
Concurrency in GO CS240 23/8/2017.
From Use Cases to Implementation
Presentation transcript:

New trends in parallel computing Go, Julia, Go! New trends in parallel computing

Covered topics Modern parallel languages for shared and distributed memory computing golang Julia

Motivation The search for elegant and high—performance parallel language is neverending C-like leads in performance Python leads in comprehension and ease of use Matlab is the favourite of engineers Some people like it functional: Erlang So what has been going on recently?

Go Also known as ‘golang’ From big influencers in the field compiled, statically typed, object oriented, garbage-collected built-in concurrency primitives and CSP-like parallelism From big influencers in the field (Ken) Thompson, (rob) Pike, Cox, Griemser Backed by a big company Guess which one

Go Communicating sequential processes (Hoare) “Do not communicate by sharing memory; instead, share memory by communicating.” Pattern of interaction in concurrent systems Formally: process algebra, process calculus Implements IPC via message passing (even in shared memory) through shared channels Helpful for development of verified concurrent systems Handy for handling critical sections, pooled operations

Go Key properties Statically typed and well-scalable (like C++, Java) Light (like python and ruby) Far away from the unnecessary complexity of C++-like langs Large built-in library Fast compiler (statically linked binaries) Testing framework

Go Goroutines A goroutine is a lightweight thread of execution. Implemented as a function or anonymous function. Semi-cooperatively scheduled

Go Channels Channels are the pipes that connect concurrent goroutines You can send values into channels from one goroutine and receive those values into another goroutine Typed by values they convey Send a value into a channel using the channel <- syntax. Here we send "ping" to the messages channel we made above, from a new goroutine.

Go Channels can be used for synchronization

Go Channels can be used for synchronization directed (good for type safety)

Go Channels can be used for synchronization directed (good for type safety) part of a select statement

Go Channels can be used for synchronization directed (good for type safety) part of a select statement with a timeout

Go Channels can be used for synchronization directed (good for type safety) part of a select statement with a timeout or with a default value (non-blocking)

Julia High-level, high-performance dynamic language for technical computing Distributed parallel execution, plentiful libraries LLVM-based JIT compiler ‘One-sided’ implementation of message passing programmer needs to explicitly manage only one process in a two-process operation Communication resembles higher-level operations like calls to user functions

Julia two key primitives: remote references and remote calls an object that can be used from any process to refer to an object stored on a particular process two flavors - Future and RemoteChannel Remote call request by one process to call a certain function on certain arguments on another (possibly the same) process returns a Future to its result

Julia Other useful concepts Synchronization Scheduling Distributed garbage collection Channels Shared arrays