<!DOCTYPE html>

CSP | Routing and Computing
Routing and Computing

Routing and Computing
Devadharson Sasikumar, Sri Surapaneni,Soham Kulkarni, Jonathan Liu: 11/30/23

Fault Tolerance
Sri Surapaneni

Routing, also known as Fault Tolerance is the practice of connecting devices together and the ability to share data between them.

In this representation, each computer will be represented by a letter and each connection between them being a line.

  • Slow Network
  • One path connects all computers
  • Not Fault Tolerant

A fault is an obstruction of one of the lines seen in the image, in literal terms an obstruction and loss of connection and communication between the computers.
Fault tolerance is what will happen to the network if one of those lines are shut down.

Do you know why the top image is not fault tolerant?

How Redundancy Helps Fault Tolerance

In this diagram, each computer is linked to another computer multiple times.

In this representation if one of the computer's communication lines is severed, it is more fault tolerant for it has other routes it can take to reach the same computer.
If a computer has multiple routes to the same computer it is conisdered "redundant"; however, that is not a bad thing, because with only one route the network may be slower, and it is safer.

  • Fast Networking
  • Multiple Paths

In this diagram, is the network fault tolerant if we broke one communication line in any location?


In this diagram, is the network fault tolerant if one of any of the lines break


All of this represents the network and internet, the letters represent devices such as our computers in class right now, and the wires are inside of our computer, redundancy increases reliability on the internet and scales it to more people.
As a matter of fact: your room probably has 2 doors to exit

Fault Tolerance Continued
Soham Kulkarni

So if you remove a line, then we know that the network breaks, and it says that if a device or connection fails, then the data will be sent through another route. We also learned that fault tolerant networks are reliable and strong. So here are hacks:

Which of the following is NOT a fault-tolerant network?

A. Data has more than one path to travel from one device to another.

B.If part of the network fails, the network sitll functions via alternative path

C.Data will only take one route from one device to another, no matter the number of routes available.

D. More devices creates more connections and makes the network stronger.

Here is another example, what would make this network fault-tolerant?

      A, because if you remove the wire, then there will be no connection, but if you add it, there are multiple paths and you would create a strong, fast network

Fault tolerance is a really important thing in the internet as it creates multiple paths and connects all of us to it. If a connection fails, there are multiple other paths.

    

Computing
Jonathan Liu and Deva Sasikumar

Parallel and Distrubuted Computing

What is it?

  • Parallel computing: Using multiple processors or cores to execute a single program simultaneously.
  • Distributed computing: Connecting multiple computers over a network to solve a common problem.
Why use it?
  • Faster execution time
  • Scalability: Handle larger and more complex problems
  • Increased efficiency: Utilize resources more effectively
Types of Parallelism
  • Bit-level parallelism: Executing multiple instructions in a single clock cycle
  • Instruction-level parallelism: Executing multiple instructions in parallel within a single processor
  • Task-level parallelism: Distributing different tasks among multiple processors or computers
  • Challenges of parallel computing
  • Communication overhead: Time spent exchanging data between processors
  • Synchronization: Ensuring that tasks are executed in the correct order
  • Load balancing: Distributing tasks evenly among processors
  • </li>
Challenges of parallel computing
  • Communication overhead: Time spent exchanging data between processors
  • Synchronization: Ensuring that tasks are executed in the correct order
  • Load balancing: Distributing tasks evenly among processors
Applications of parllalel and distibuted computing
  • Scientific computing: Weather forecasting, molecular modeling
  • Engineering simulations: Crashworthiness tests, fluid dynamic
  • Data analysis: Gene sequencing, image processing
  • Artificial intelligence: Machine learning, natural language processing
Sequential Computing
  • Executing tasks one after the other, in a single processor or core
  • Simplicity: Easier to program and debug
  • Limited hardware: Common in older computers or embedded systems
  • Task dependencies: When tasks depend on the output of previous tasks
  • Total execution time is the sum of individual task execution times
        Parallel Computing:
        Code gets broken into small sequential operations performed simultaneously
        Parallel computing schedules tasks that get executed at the same time
        Done on the same computer
        Parallel consists of parallel portion and sequential portion
        Comparing efficiency = comparing the time it takes to perform the task
        
      
        Why:
        Hardware driven: multiple processors
        Link hundreds of cpu together 
        Data: lot of data gets processed same way (SIMD) (Single Instruction Multiple Data)
        Solutions use parall computing scale effectively
      

Quick Question:

    Assuming there are 4 cores,
    Core 1's task takes 45ms
    Core 2's tasks takes 50ms
    Core 3's tasks take 30ms
    Core 4's tasks take 40ms,

    How long will the program take to run?
   

Distributed computing:
Google web search: google sends request to thousands of servers
Web services: (protocols like soap rss rest)
Beowolf clusters: special software to group different computers together

Distributed:
Uses more than one computer
Needs network
Is a mix of seq and par
Takes longer based no network
   

Homework:

  Question 1: What is parallel computing? Parallel computing is where tasks/problems are broken down into smaller tasks/problems so that multiple processors or cores can complete the smaller tasks/problems at the same time.
  Question 2: If there is a computer with 3 cores that can each take one task, and the tasks are 25ms, 632ms and 100ms in run time respectively, how long will the program take to run? The program will take 100ms to run as that is the longest task to run. Each of the 3 cores will take one of the 3 tasks and run them at the same time, so the overall program length is determined by the slowest task.
  Question 3: Is sequential or parallel computing more efficient, and why? Generally, parallel computing is more efficient than sequential computing since it splits the overall task up and runs all the smaller tasks at the same time, utilizing multiple processors and cores so resources are used more efficiently and the task will generally be completed faster.
  Question 4: What is the term called when a network has multiple paths leading up to one destination? (Used in fault-tolerant systems) If a network has multiple paths leading to one destination, the network is said to be redundant as there are multiple routes to the same end (so if one route is severed, there still is communication through the other routes)
  
  Question 5: Using the image above, is this fault tolerant? Yes, the network shown is fault-tolerant and redundant as there are multiple routes from every letter or device to every other one, so connectivity is not lost if one connection is severed.
</body> </html>