Introduction to grid technologies, parallel and cloud computing Alaa Osama Allam Saida Saad Mohamed Mohamed Ibrahim Gaber
OUTLINES Grid Computing Parallel programming technologies (MPI- Open MP-Cuda ) Cloud Computing
What is Grid computing..? Grid computing is the collection of computer resources from multiple locations to reach a common goal. The grid can be thought of as a distributed system with non-interactive workloads that involve a large number of files. Grid computing is distinguished from conventional high performance computing systems such as cluster computing in that grid computers have each node set to perform a different task/application. Grid computers also tend to be more heterogeneous and geographically dispersed (thus not physically coupled) than cluster computers Although a single grid can be dedicated to a particular application, commonly a grid is used for a variety of purposes. Grids are often constructed with general-purpose grid middleware software libraries. Grid sizes can be quite large. Grids are a form of distributed computing whereby a super virtual computer is composed of many networked loosely coupled computers acting together to perform large tasks. For certain applications, distributed or grid computing, can be seen as a special type of parallel computing that relies on complete computers (with onboard CPUs, storage, power supplies, network interfaces, etc.) connected to a computer network (private or public) by a conventional network interface, such as Ethernet. This is in contrast to the traditional notion of a supercomputer, which has many processors connected by a local high-speed computer bus.
What Can You Do with? Combine dozens of supercomputers to solve a single problem Link realtime satellite data feeds with distributed computational and display systems Enable schools across the country to participate in interactive simulations and data analysis Interactively combine the output of many independent servers to analyze a new genome Build a network of immersive virtual reality sites to collaboratively design a new vehicle Etc.
Why Now..? The Internet as infrastructure Increasing bandwidth, advanced services Advances in storage capacity Terabytes, petabytes per site Increased availability of compute resources clusters, supercomputers, etc. Advanced applications simulation based design, advanced scientific instruments,...
The Worldwide LHC Computing Grid
Interconnected computer systems where the machines utilize the same resources collectively. Grid computing usually consists of one main computer that distributes information and tasks to a group of networked computers to accomplish a common goal. Grid computing is often used to complete complicated or tedious mathematical or scientific calculations.
Workload Management System
The Workload Management System (WMS) comprises a set of Grid middleware components responsible for distribution and management of tasks across Grid resources. The purpose of the Workload Manager (WM) is accept and satisfy requests for job management coming from its clients meaning of the submission request is to pass the responsibility of the job to the WM. WM will pass the job to an appropriate CE for execution taking into account requirements and the preferences expressed in the job description file The decision of which resource should be used is the outcome of a matchmaking process.
User Interface Node The basic functionalities allows User to: -list the computing resources -submit a job, -get the job status, -cancel a job, -retrieve the output of a job.
WMS
Uploading data to the Grid SE Compress the data into tar format Copy the compressed file to the UI. Copy the compressed file from UI to the grid.
Data management practice 1. Initialize your proxy-certificate $ voms-proxy-init -voms edu 2. If you finish your work destroy your proxy-cetrtificate $ voms-proxy-destroy
Submitting a job
Get available computing elements
Check the job status
Get output
Cloud Computing
Contents What is Cloud Computing? Cloud Computing Characteristics JINR Cloud Structure Virtualization Advantages and disadvantages of Cloud Computing
What is Cloud Computing? Cloud Computing : is a general term used to describe a new class of network based computing that takes place over the Internet, a collection/group of integrated and networked hardware, software and Internet infrastructure (called a platform). Using the Internet for communication and transport provides hardware, software and networking services to clients
Cloud Computing Characteristics Common Characteristics: Files are always stored in cloud, difficult to lost it. Massive Scale Virtualization Low Cost Software Geographic Distribution Service Orientation Advanced Security Essential Characteristics: On Demand Self-Service Broad Network Access Rapid Elasticity Resource Pooling Measured Service 24 Adopted from: Effectively and Securely Using the Cloud Computing Paradigm by peter Mell, Tim Grance
Cloud Computing Service Layers Application Focused Infrastructure Focused Services Services Application Development Platform Storage Hosting Description Services Complete business services such as PayPal, OpenID, OAuth, Google Maps, Alexa Application Cloud based software that eliminates the need for local installation such as Google Apps, Microsoft Online Development Software development platforms used to build custom cloud based applications (PAAS & SAAS) such as SalesForce Platform Cloud based platforms, typically provided using virtualization, such as Amazon ECC, Sun Grid Storage Data storage or cloud based NAS such as CTERA, idisk, CloudNAS Hosting Physical data centers such as those run by IBM, HP, NaviSite, etc.
Activities System administrators - testing and studying specifics of installation and operation of new apps or testing updates Developers - development, testing and debugging various apps in various environments. Users - installing and using apps for their daily work
Virtualization Virtual Machines technology allows multiple virtual machines to run on a single physical machine. Why we make virtual machines? Flexibility Availability Scalability Hardware utilization Security
Virtualization Systems
Cloud Consumers
Why OpenNebula? In JINR, We used OpenNebula as Iaas platform for cloud architecture : We practiced on multi tasks : Creation of virtual machines Clone different virtual machines Creation of templates and images Creation of different services for multi tier network Uploading of data files
Advantages of Cloud Computing Lower computer and software costs: Improved performance: Instant software updates: Unlimited storage capacity: Increased data reliability: Universal document access: Latest version availability: Easier group collaboration: Device independence. Data and services are stored remotely but accessible from anywhere.
Disadvantages of Cloud Computing Requires a constant Internet connection - Cloud computing is impossible if you cannot connect to the Internet. Does not work well with low-speed connections: Stored data might not be secure - Can unauthorized users gain access to your confidential data? Each cloud systems uses different protocols and different APIs
Parallel computations We investigate :- 1. HybriLIT Computation clusters. 2. How work on Cl. 3. Create Mpi,open Mp, Cuda programms
Current HybriLIT version
Parallel Technologies
Parallel program concept Parallel program is a set of simultaneously executed processes. Initial program code is developed in C/C++ or Fortran program languages with the use of MPI library. Number of processes and number of used processors is defined at the launch of the parallel program by means of MPI runtime environment. All program processes are sequentially indexed. The index of the process is called the rank of the process.
MPI Functions MPI_Init() initiate a MPI computation MPI_Comm_size() how many processes participate in a given MPI communicator? MPI_Comm_rank() which one am I? (A number between 0 and size-1) MPI_Send() send a message MPI_Recv() receive a message MPI_Finalize() terminate the MPI computation and clean up
MPI Example
How to compile and execute MPI program
Output, parallel execution
Open MP Technology What is Open MP? Open MP is an Application Program Interface (API), jointly defined by a group of major computer hardware and software vendors. Open MP provides a portable, scalable model for developers of shared memory parallel applications. The API supports C/C++ and Fortran on a wide variety of architectures. Components of Open MP Compiler Directives Environment Variables Run Time Environment
Components of Open MP
The open MP execution Model
Open MP Example
Execution time and acceleration
CUDA (Compute Unified Device Architecture)
Cuda Example How to develop reduction task on CUDa S= 𝑁 1 𝑖=0 𝑓(𝑢𝑖), 𝑢𝑖 = 𝑐𝑜𝑚𝑝𝑙𝑒𝑥 𝑛𝑢𝑚𝑏𝑒𝑟 We create our cuda programs for three different function 𝑓(𝑢𝑖):- 1. 2. 3. 𝑢𝑖 𝑢𝑖 2 sin(𝑢𝑖)
Acceleration 𝑢𝑖 2 Time 𝑢𝑖 sin(𝑢𝑖) CPU 4.06 22.7 9.24 GPU 0.45 0.49 0.44 20 46 ACCELERAT 9 ION
Summary There is different technology to run any Parallel program. -MPI - open Mp - CUDA Every one of them has some advantages.
www.themegallery.com