Reverse Engineering DNNs with JIT GEMM Libraries

What is JAXED? JAXED [JIT + AXED] is a security attack targeted reverse engineering DNNs (Deep Neural Network) architectures using JIT optimized GEMM libraries. Hyperparameters specify the model architecture of a DNN. E.g.:- number of layers, number of channels in a filter etc. In our latest work, we exploit a novel side channel exposed during … Continue reading Reverse Engineering DNNs with JIT GEMM Libraries

Runtime Code Generation for Convolutions

marlin-lib

Summary Our work MARLIN (Matrix Multiplication through Reduced Load Instructions), is now available on github. MARLIN is a runtime code generation library for convolution kernels. The paper won the first place in graduate student category in CGO 2021 (International Symposium on Code Generation and Optimization). Here are the links for the 10 minute presentation talk … Continue reading Runtime Code Generation for Convolutions

Computer Science Diagrams in 5 Easy Steps

This article is different from usual blog posts. However, it's an essential topic often overlooked. There are online cloud service providers who let you create diagrams using in-built templates. But for research, I have found these solutions are not sufficient to create Computer Science diagrams. So I decided to give Adobe Illustrator (AI) a try … Continue reading Computer Science Diagrams in 5 Easy Steps

Assembly Function using AT&T Syntax

In this blog post, I will provide a detailed explanation about writing a C++ program with an external Assembly function written for the X86_64 architecture. There are three types of Assembly syntax in use today: Intel syntax, AT&T syntax and GAS syntax (General Assembly). Although Intel syntax is much easily readable and is widely used … Continue reading Assembly Function using AT&T Syntax

Blocked Matrix Multiplication

Having read this article, you will be able to implement blocked matrix multiplication and also to understand the number of memory accesses encountered in blocked matrix multiplication. In my next article, I will explain how these ideas can be extended to SIMD (Single Instruction Multiple Data) vector instructions. Why is Matrix Multiplication Important? Matrix multiplication … Continue reading Blocked Matrix Multiplication

Matplotlib Custom Hatch Patterns in 5 Steps

Matplotlib hatch is a pattern that can be used as an overlay in bar charts, shapes and are important to ensure the readability of graphs in the absence of color (when printed in a single color format). Unfortunately, there are only a few patterns available on Matplotlib.By reading this post, you will be able to … Continue reading Matplotlib Custom Hatch Patterns in 5 Steps

C++ Concepts: A World Without Unchecked Generics

C++ concepts is a revolutionary idea aimed at building better and safer abstractions at the code level. Generics in C++ allows to express an abstract operation (maybe an algorithm) to different types (classes). Templates allowed abstraction of operations such as sort which can be used to sort a vector, an array or any object with … Continue reading C++ Concepts: A World Without Unchecked Generics