Skip to content

Salazar-Prime/Evacuous_parallel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Evacuous

Note: This project is the parallelized version of Project Evacuous

Authors

Dependencies

How to run

From the project root execute python main.py [<number_of_cars>] [-g] with the optional -g switch to run the simulation with graphics enabled and <number_of_cars> indicating the number of cars to run the simulation with (defaults to 1000 cars).

Example: python main.py 1000 -g

Description

This is a simulation based project aimed at parallelizing the simulation(with graphics) of an evacuation situtation of smart cars. The main goal was to significantly reduce the run time of simulation using PyCUDA. This project was developed as a part of the course ES611: Algorithms for Advanced Computer Architecture conducted by Dr. Ravi Hegde at Indian Institute of Technology Gandhinagar.

Scenario

There are a large number of smart cars in a city. Due to some emergency, all the cars are asked to evacuate the city as fast as possible. To facilitate evacuation, some number of exit/evacuation points exist (generally on the outskirts), but the information about the geographical location of an exit point is only available to the cars which are in the vicinity of one of the concerned exit point. In other words, each exit has to be discovered. Each car has the ability to communicate with other cars in its vicinity. There is not central coordinating body and each car has to make its own decisions based on the cars in its neighbourhood. The swarm of cars has to work collectively to find exits and evacuate the city.

Solution approach

The solution is inspired by the Boids problem by Craig Reynolds. Each car of the swarm, has it's own thinking and decides which direction to proceed in, based on certain rules and parameters - some of which depend on the behavior of the local swarm, and some depend on global goals. These rules are aggregated to compute the new velocity of the car in question.

Future Work

  • Incorporate Collision Detection
  • Allow directly importing map from Google Maps, and internally constructing the network
  • CUDA kernels can be improved by making use of Shared Memory
  • Make use of prepared function calls provided by PyCUDA while invoking the CUDA kernels

About

CUDA for GPU programming

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages