Pinned Repositories
SDN-Simulation
SDN vs Traditional Networks Traditional networks were designed to forward packets from source to destination using the shortest route possible. Routers and switches were mostly agnostic to the applications being served by the network. Software-defined network (SDN) architecture allows service providers to build networks with increased application awareness, which can be built into the network by developing SDN controller applications that keep track of application-level characteristics and use that intelligence to provision flow into the network switches.Application awareness is the result of gained intelligence about Layer 4 to Layer 7 protocol attributes and delivery requirements. Software-defined network (SDN) architecture allows service providers to build networks with increased application awareness, which can be built into the network by developing SDN controller applications that keep track of application-level characteristics and use that intelligence to provision flow into the network switches. Methodology When the client transmits an IP packet, the switch inspects the packet and depending on the policy/rule installed in it, forwards the packet on a particular route. If the switch doesn’t have any policy/rule installed, it sends the packet to the controller. The controller inspects the packet header and/or the payload, determines the type of packet (TCP, UDP, HTTP, etc.), and installs a policy/rule on the switch instructing it to forward packets along a particular route. Our Implementation We have created different paths for TCP, UDP and ICMP traffic. We have further classified TCP traffic in to HTTP and FTP traffic. For each different type of traffic, we have assigned a dedicated path.Our implementation could easily be extended to be adaptive, so that the features of an application-aware network mentioned above could be realized.
Cache-Coherence-Protocol-Simulator
This project involved the implementation of Cache Coherence protocols such as MSI, MESI, MOSI, MOESI and MOESIF for 4-core, 8-core and 16-core Multiprocessor Systems. Experiments were also carried out to obtain the best hardware configuration for the respective multiprocessor systems to obtain the maximum possible cache-to-cache transfers.
FFT2d-MPI
The project aims at studying distributed computing by implementing a 2D-DFT of an input image using 16 CPUs. The computation of the 256x256 pixel input image is parallelized using MPI. The correctness of the computation is established by calculating the inverse of the transformed data.
GPU_Pipeline_simulation_using_Matlab
Used Matlab to write a program that simulates processing and generation of 3d objects by modern Graphic processing units (GPU).
Barriers
Implemented several barriers using OpenMP and MPI, to achieve synchronization between multiple threads and machines (with one or multiple threads)
Cache-Simulator--2-level-
Designed a n-way set associative Cache simulator with 2 levels of caching which used WBWA (write back write allocate) and LRU (least recently used) policy.
Distributed_Batch_Processing_System
The batch processing system consists of three components: client, scheduler, and worker. The client is used to submit a user job to the scheduler. The scheduler will assign the jobs to the workers. The worker will carry out the actual computation. The features of this system include - 1) non-blocking request handling, 2) parallel job execution, 3) fair job scheduling 4)is fault tolerant (i.e. can process submitted jobs/tasks as long as there is even one worker alive).
Holographic_and_Camouflage_shaders
Contains 2 completely new Unity shaders for use with Unity projects
Out-of-Order-Superscalar-processor-simulator
Implemented a Superscalar Processor with Out-of-Order execution using Tomasulo Dynamic Instruction Scheduling algorithm. The project involved simulating all pipeline stages of the processor. Experiments were also carried out to obtain the optimum processor configuration for the best IPC (Instructions Per Cycle) value.
Raja_Raman_and_Wong_Clustering
Implemented Raja Raman and Wong Clustering in C++. It is an optimal polynomial time algorithm for the circuit-clustering problem and computes an optimal solution for this problem in O(n*n*logn + mn) where n and m are the vertices and edges of the combinational network. This project aimed at generating and visualizing cluster information for several bliff files in a very short amount of time. The steps included extracting the net-list from .blif files and computing the connectivity matrix from a directed Acyclic Graph, computing the clusters considering node delay and Inter-cluster delay for each node, discarding redundant clusters, presenting the results using GUI and proposing a modification which reduces duplication of nodes in final clusters
abhishekjain1991-zz's Repositories
abhishekjain1991-zz/SelfDrivingCar
abhishekjain1991-zz/Algos
abhishekjain1991-zz/cryptopals
Contains solutions to the problems present on the website http://cryptopals.com/
abhishekjain1991-zz/abhishekjain1991.github.io
Interactive Resume and Project-showcase Webpages
abhishekjain1991-zz/Udacity-Front_end
Udacity's front end web developer projects
abhishekjain1991-zz/Introduction-to-Docker
An introduction to working of Docker and its performance evaluation
abhishekjain1991-zz/Simple-vs-Complex-shader
Comparison between a Computationally expensive and a computationally inexpensive shader
abhishekjain1991-zz/Holographic_and_Camouflage_shaders
Contains 2 completely new Unity shaders for use with Unity projects
abhishekjain1991-zz/Intro-to-Shaders
Some very basic shaders
abhishekjain1991-zz/Post-Processing-Shaders
Contains 3 shaders for use with Unity Projects
abhishekjain1991-zz/GPU_Pipeline_simulation_using_Matlab
Used Matlab to write a program that simulates processing and generation of 3d objects by modern Graphic processing units (GPU).
abhishekjain1991-zz/Light_Weight_Recoverable_Virtual_Memory
In this project I implemented a recoverable virtual memory system like the one described in the LRVM paper (https://www.cs.berkeley.edu/~brewer/cs262/lrvm.pdf). The user of my library could create persistent segments of memory and then access them in a sequence of transactions.
abhishekjain1991-zz/RPC_based_proxy_server
Wrote a simple web 'proxy server' using Apache Thrift and implemented different caching schemes for the same to investigate the effects of different types of caching policies in a distributed application.
abhishekjain1991-zz/Barriers
Implemented several barriers using OpenMP and MPI, to achieve synchronization between multiple threads and machines (with one or multiple threads)
abhishekjain1991-zz/GTThreads
Designed and implemented a POSIX compliant user level thread library capable of concurrency and synchronization. Round robin scheduling was used to schedule the threads. Validation was done using Dining philosopher’s problem.
abhishekjain1991-zz/Cache-Simulator--2-level-
Designed a n-way set associative Cache simulator with 2 levels of caching which used WBWA (write back write allocate) and LRU (least recently used) policy.
abhishekjain1991-zz/Cache-Coherence-Protocol-Simulator
This project involved the implementation of Cache Coherence protocols such as MSI, MESI, MOSI, MOESI and MOESIF for 4-core, 8-core and 16-core Multiprocessor Systems. Experiments were also carried out to obtain the best hardware configuration for the respective multiprocessor systems to obtain the maximum possible cache-to-cache transfers.
abhishekjain1991-zz/Out-of-Order-Superscalar-processor-simulator
Implemented a Superscalar Processor with Out-of-Order execution using Tomasulo Dynamic Instruction Scheduling algorithm. The project involved simulating all pipeline stages of the processor. Experiments were also carried out to obtain the optimum processor configuration for the best IPC (Instructions Per Cycle) value.
abhishekjain1991-zz/RSA_implementation_and_cracking
The project uses GNU multi-precision arithmetic library, GMP to implement the well known encryption algorithm Rivest-Shamir-Adelman (RSA). The program chooses appropriate public/private keys, random messages, encrypt the random message with the public key, decrypt the random message with the private key, and verify that the decrypted message matches the original message for keys ranging for 64 bits to 1024 bits.mFurthermore, the program also implements a cracking or factoring algorithm to crack or hijack a 64 bit encrypted message
abhishekjain1991-zz/FFT2d-MPI
The project aims at studying distributed computing by implementing a 2D-DFT of an input image using 16 CPUs. The computation of the 256x256 pixel input image is parallelized using MPI. The correctness of the computation is established by calculating the inverse of the transformed data.
abhishekjain1991-zz/Distributed_Batch_Processing_System
The batch processing system consists of three components: client, scheduler, and worker. The client is used to submit a user job to the scheduler. The scheduler will assign the jobs to the workers. The worker will carry out the actual computation. The features of this system include - 1) non-blocking request handling, 2) parallel job execution, 3) fair job scheduling 4)is fault tolerant (i.e. can process submitted jobs/tasks as long as there is even one worker alive).
abhishekjain1991-zz/Templated_Vector
The project aims at studying object-oriented and memory management concepts in C++ by implementing the Vector container and Vector Iterator in C. The efficacy of the project is verified by several tests to check for implementation and memory leaks.
abhishekjain1991-zz/OpenGL_Object_Loader
A 3d object loader was implented using OpenGL and C++ which could display 3d OpenGL objects and manipulate their position and orientation according to specified inputs. For this project OpenGL APIs were used to create and display a three-dimensional image of a jet aircraft. Further, the program uses keyboard inputs to control the rotation and size scale of the jet, and environmental lighting and mouse inputs are used to resize the window.
abhishekjain1991-zz/FIrewall_simulation
As a part of the coding challenge for interns at Ericsson, designed a firewall capable of accepting or rejecting packets based on rules set for specific IP addresses and URLS
abhishekjain1991-zz/Interview_assignment
Coding assignment of a very renowned company
abhishekjain1991-zz/SDN-Simulation
SDN vs Traditional Networks Traditional networks were designed to forward packets from source to destination using the shortest route possible. Routers and switches were mostly agnostic to the applications being served by the network. Software-defined network (SDN) architecture allows service providers to build networks with increased application awareness, which can be built into the network by developing SDN controller applications that keep track of application-level characteristics and use that intelligence to provision flow into the network switches.Application awareness is the result of gained intelligence about Layer 4 to Layer 7 protocol attributes and delivery requirements. Software-defined network (SDN) architecture allows service providers to build networks with increased application awareness, which can be built into the network by developing SDN controller applications that keep track of application-level characteristics and use that intelligence to provision flow into the network switches. Methodology When the client transmits an IP packet, the switch inspects the packet and depending on the policy/rule installed in it, forwards the packet on a particular route. If the switch doesn’t have any policy/rule installed, it sends the packet to the controller. The controller inspects the packet header and/or the payload, determines the type of packet (TCP, UDP, HTTP, etc.), and installs a policy/rule on the switch instructing it to forward packets along a particular route. Our Implementation We have created different paths for TCP, UDP and ICMP traffic. We have further classified TCP traffic in to HTTP and FTP traffic. For each different type of traffic, we have assigned a dedicated path.Our implementation could easily be extended to be adaptive, so that the features of an application-aware network mentioned above could be realized.
abhishekjain1991-zz/Object_tracker
As a part of introduction to OpenCV, developed an object tracker using OpenCV apis and C++ which used the webcam of a laptop to track an object of a particular color irrespective of it's size
abhishekjain1991-zz/FFT2d-Pthreads
This project involved optimization of DFT using Danielson–Lanczos algorithm and Pthreads and evaluation of performance characteristics of the same. The project aims at studying parallel computing by implementing a 2D-FFT of an input image using PThreads. The 2D-DFT of the input 1024x1024 pixel image is calculated using 16 threads using FFT algorithm. The correctness of the computation is established by calculating the inverse of the transformed data.
abhishekjain1991-zz/Raja_Raman_and_Wong_Clustering
Implemented Raja Raman and Wong Clustering in C++. It is an optimal polynomial time algorithm for the circuit-clustering problem and computes an optimal solution for this problem in O(n*n*logn + mn) where n and m are the vertices and edges of the combinational network. This project aimed at generating and visualizing cluster information for several bliff files in a very short amount of time. The steps included extracting the net-list from .blif files and computing the connectivity matrix from a directed Acyclic Graph, computing the clusters considering node delay and Inter-cluster delay for each node, discarding redundant clusters, presenting the results using GUI and proposing a modification which reduces duplication of nodes in final clusters
abhishekjain1991-zz/Benchmark-for-Nvidia-GPGPUs
Developed a benchmark that used OpenGL, the Mandelbrot set algorithm and CUDA libraries to demonstrate the advantages offered by GPGPUs over conventional CPUs. The benchmark involves computing and rendering the Mandelbrot Set fractal. The fractal is computed using the NVIDIA CUDA GPU programming environment and the image is displayed using OpenGL graphics API. Once the fractal is displayed, the mouse can be used to select a square region on the image to zoom in and the fractal can be zoomed out using the keyboard. Design Considerations: • The display window and image size is 512x512 pixels • Every pixel in the image is computed using one thread on the GPU • The image can only be zoomed in until the double precision limit is reached