Welcome to the Parallel-Computer-Architecture-and-Programming-Models repository! This repository serves as a central hub for various mini-projects related to different Parallel Computer Architecture and Programming Models techniques. Each project is housed in its own GitHub repository, and you can find the links to these projects below.
Explore projects focused on parallel computing and computer architecture:
- Introduction to DASK:This repository contains a Jupyter notebook that provides an introduction to using Dask for parallel computing in Python. The notebook demonstrates how to implement and utilize various Dask libraries for data processing and machine learning tasks.
- Introduction to NUMBA:This repository contains a Jupyter notebook that provides an introduction to using Numba for just-in-time (JIT) compilation to optimize Python code. The notebook demonstrates how to use Numba to improve performance, understand its compilation modes, identify its limitations, and vectorize code.
- Introduction to PySpark: This repository contains a Jupyter notebook that provides an introduction to using PySpark for machine learning. The notebook demonstrates how to explore and visualize datasets, and implement machine learning models using PySpark.
- Introduction to RAY:This repository contains a Jupyter notebook that provides an introduction to using Ray for distributed computing in Python. The notebook demonstrates how to load data, train models, and tune hyperparameters using Ray.
- Distributed training using TensorFlow: This repository contains a Jupyter notebook that provides an introduction to using TensorFlow for distributed training. The notebook demonstrates different parallelizing strategies, custom training loops, and implementation of strategies with Keras for distributed model training.
- Introduction to RAPIDS: This repository contains a Jupyter notebook that provides an introduction to using RAPIDS for GPU-accelerated data processing and machine learning in Python. The notebook demonstrates how to load, simulate, split data, convert data formats, and train models using RAPIDS.
- Introduction to PySpark and MLLib: This repository contains a Jupyter notebook that provides an introduction to using PySpark and MLLib for data processing and machine learning. The notebook demonstrates how to interact with Spark using Python, understand Spark DataFrames, and implement linear regression using PySpark.
- Introduction to OpenMP: This repository contains a Jupyter notebook that provides an introduction to using OpenMP for parallelization in Python. The notebook demonstrates how to implement multiprocessing using OpenMP, along with the necessary concepts and examples.
- Parallel programming with MPI: This repository contains a Jupyter Notebook that demonstrates the implementation of standard message-passing algorithms using MPI (Message Passing Interface). It aims to help you understand the basics of point-to-point communication, blocking and non-blocking communication, and collective communication, along with their impact on program performance.
- Oops in Python: This repository contains a Jupyter Notebook that demonstrates the general structure of classes in Object-Oriented Programming (OOP) using Python. It aims to help you learn how to build your own classes, specialized to your needs.
- Time Complexity Analysis: This repository contains a Jupyter Notebook that demonstrates the concept of computational complexity, focusing on time complexity and Big-O notation. It aims to help you understand these fundamental concepts and determine the time complexity of given algorithms.
- Monitoring resources using Psutil: This repository contains a Jupyter Notebook that demonstrates how to monitor various resources of your device using the psutil package in Python. This includes monitoring CPU, GPU, memory, disks, network, and sensors. Additionally, it explores the multiprocessing package to evaluate the advantages of parallelism in resource monitoring.
I welcome contributions! If you have a mini-project you'd like to add or improvements to suggest, please fork the repository and create a pull request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository.
- Create a new branch (
git checkout -b feature-branch
). - Make your changes.
- Commit your changes (
git commit -m 'Add some feature'
). - Push to the branch (
git push origin feature-branch
). - Open a pull request.
Feel free to contribute by adding your own mini-projects to the list!
If you have a Data Science mini-project that you'd like to share, please follow the guidelines in CONTRIBUTING.md.
Please adhere to our Code of Conduct in all your interactions with the project.
This project is licensed under the MIT License.
For questions or inquiries, feel free to contact me on Linkedin.
I’m a seasoned Data Scientist and founder of TowardsMachineLearning.Org. I've worked on various Machine Learning, NLP, and cutting-edge deep learning frameworks to solve numerous business problems.