Siyuan's Blog

Read(); Think(); Try(); Repeat();

Linux shared folder management done right

If you’ve ever collaborated with someone on a Linux machine or worked as a system administrator on a multi-user Linux system, chances are you’ve set up shared folders for groups of people to share data. It’s quite easy on Linux. Well, kind of. I mean, you can simply create a group, add relevant users in, and set the shared folder’s owner and permission correctly. However, this approach has a problem: new files and directories created inside a shared folder doesn’t inherit the owner and permission of the shared folder itself.

Vertex-centric graph processing: the what and why

Vertex-centric graph processing is a new programming abstraction/model for writing graph algorithms. I got to know vertex-centric graph processing because my final year project is centered around this topic. I find it to be an interesting idea that enables large-scale graph processing with ease. In this post, I would like to talk about what vertex-centric graph processing is and why it is useful. What is vertex-centric graph processing? Vertex-centric graph processing, as the name suggests, is a new programming abstraction for processing graphs that is centered around the vertices.

NVIDIA GPU ID enumeration in Linux

I’ve been working on a server with 3 NVIDIA GPUs for my internship work. A few months ago, I noticed that the GPU IDs are different in different situations for the same GPU. Therefore, I decided to take a look at how the IDs are enumerated. What is the issue exactly? There are potentially two different GPU ID orders that we can get from nvidia-smi and the CUDA library. Below demonstrates two different ID enumeration schemes observed on the server.

I/O buffering mechanisms in C/C++

Today I was fixing a bug for the logger in a project that I’m currently working on. The bug is that when the process is killed or it crashed, the logger sometimes doesn’t write all the logs into the log file with the fprintf function call. I knew this is an I/O buffer problem, but I didn’t know too much about how to control it and what are the I/O buffering modes besides flushing the buffer every time.

Migrating to a new Mac

I recently bought a new MacBook Pro 13-inch (2017, w/o TouchBar) to replace my aging MacBook Air 13-inch (mid-2013). My old machine only has 4GB memory and 128GB SSD, and it’s slowing things down sometimes. When I was setting up my new Mac, I decided to have a fresh install of macOS. This allows me to think about what should be migrated from an old Mac to a new Mac.