Yuttapichai (Guide) Kerdcharoen
LinkedIn Github

I am a music gamer who is obsessed in database systems and performance. I am conducting research on graph database systems in the language of linear algebra. I believe that the language of linear algebra can be one of the sustainable bridges from high-performance computing to graph database systems.

One of my goals is to create a frontier data system group in Thailand.

PhD Candidate (3rd Year) @ Carnegie Mellon University and CMKL University
(Dual Degree - Electrical and Computer Engineering)
Teaching Assistant
18-746 Storage Systems (F22)
Selected Coursework
15-721 Advanced Database Systems (S23)
18-746 Storage Systems (F21, CMU)
15-745 Optimizing Compilers for Modern Architectures (S23)
18-740 Modern Computer Architecture and Design (F22, CMU)
18-447 Introduction to Computer Architecture (S22, CMU)
18-613 Foundations of Computer Systems (S21, CMKL/Transferred to CMU)
18-652 Foundations of Software Engineering (S21, CMKL)

Previously be an Undergraduate Student @ KMITL
(Computer Science)
I founded CS-INFINITE, a group of students who initiates activities for CS-KMITL students. Examples of those activities are Code Arcade and Programming Bootcamp.

Living in Pittsburgh, PA
Originally, lived in Nakhon Pathom, Thailand


Linear Algebra Translation for Graph Queries Ongoing
Traditionally, graph querying engines take text-based queries, generate their query plans, and then execute them using query operators. In order to sustainably bridge querying engines with the world of high-performance computing, we directly translate text-based queries into linear algebra expressions and execute them using linear algebra backends.

Linear Algebraic Common Neighbor Traversal for Subgraph Enumerations Ongoing
Describing graph algorithms in the language of linear algebra allows them to be implemented with high-performance linear algebra backends. State-of-the-art subgraph enumeration methods use common neighbor traversal algorithms to reduce intermediate data, which can improve performance. However, describing them with GraphBLAS, a standard linear algebra interface, limits how the algorithm can be implemented, which hinders performance.

Opportunities for Linear Algebraic Graph Databases Extended Abstract
The extended abstract has been accepted for ARRAY 2023.

Selected Project

pgfixeypointy - Fast Fixed-Point Decimals
A PostgreSQL extension for libfixeypointy, a fast fixed-point decimal library.

Article on RedisGraph @

Foreign Data Wrapper for Columnar File Formats
A PostgreSQL foreign data wrapper for accessing columnar file formats (similar to Apache Parquet). The foreign data wrapper includes query optimizations such as projection and predicate pushdown.

Compiling Neural Network with Dynamic Resource Adaptation
An approach to improve elasticity of FlexGen for supporting multi-tenancy environments.

Meta Branch Predictor
We designed and implemented a meta branch predictor to maximize branch prediction accuracy for deepsjeng_r, imagick_r, nab_r, xz_r benchmarks. The meta branch predictor was based on PMPM (Prediction by Combining Multiple Partial Matches), GShare, and PAp. The meta branch predictor was implemented in C++ via the gem5 simulator.

5-Stage RISC Pipeline Processor with Data Cache and Branch Predictor
We designed and implemented 5-stage RISC pipeline processor and optimized for matrix-matrix multiplication tasks. The processor contained SRAM as a data cache. The processor contained 2-bit saturating counter and BTB (branch target buffer) for branch predictions. The processor was implemented in SystemVerilog.

Hybrid Cloud/Local File System
I implemented a hybrid cloud/local (Amazon S3 and local SSDs) file system to minimize cloud storage costs. The file system can deduplicate identical file contents to reduce storage capacity. The file system can take a snapshot and recovery using taken snapshots. The file system was optimized through software-level write-back cache. The file system was implemented in C++ via FUSE.

Flash Translation Layer (FTL) for NAND Flash SSDs
I implemented a flash translation layer for NAND flash SSDs. The flash translation layer was optimized to improve wear leveling by implementing hot/cold data swapping. The flash translation layer was implemented in C++ via 746FlashSim.

Dynamic Memory Allocation Routine (malloc)
(To be written)

HTTP Web Proxy with Caching
(To be written)

ounglang is a interpretative, turing-incomplete, and esoteric programming language for seals written in C.

PEARLS (Programming Evaluation and Rapid Learning Systems)
PEARLS is a learning management system for CS-KMITL. I designed and implemented a relational database schema for PostgreSQL.

PEARLS Lab is a programming competition platform for Code Arcade. I designed and implemented web services and a relational database schema for PostgreSQL.


Thailand's Agoda Programming Competition (Top 50)
(To be written)