Installing GMAC

GMAC is a user-level library that implements an Asymmetric Distributed Shared Memory model to be used by CUDA programs. An ADSM model allows CPU code to access data hosted in accelerator (GPU) memory.

GMAC is being developed by the Operating System Group at the Universitat Politecnica de Catalunya and the IMPACT Research Group at theUniversity of Illinois



To install gmac,

1. Download the latest version of gmac to date: gmac-0.0.10.tar.gz

2. Unzip gmac-0.0.10.tar.gz using the following command

gunzip gmac-0.0.10.tar.gz
 tar -xvf gmac-0.0.10.tar

3. Go inside the directory gmac-0.0.10 and make another directory build to separate the installation files from the source.

cd gmac-0.0.10
 mkdir build

4. Go inside the directory build and run configuration file

cd build

5. Install using make all install command

sudo make all install


I am installing gmac on a 32 bit UNIX machine with gcc 4.3 and CUDA 3.0.

After installing from the Makefile I encountered the following error

/usr/bin/ld: cannot find -lcuda
collect2: ld returned 1 exit status
make[5]: *** [] Error 1
make[5]: Leaving directory `/home/imacbuntu/Projects/gmac-0.0.10/build/
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory `/home/imacbuntu/Projects/gmac-0.0.10/build/
make[3]: *** [all] Error 2
make[3]: Leaving directory `/home/imacbuntu/Projects/gmac-0.0.10/build/
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/imacbuntu/Projects/gmac-0.0.10/build/
make[1]: *** [all] Error 2
make[1]: Leaving directory
make: *** [all-recursive] Error 1


The error has something to do with the library of cuda,

when I tried to link the in /usr/lib by performing the following command, installation of gmac became successful.

sudo ln -s /usr/lib/nvidia-current/ /usr/lib/


Review on the paper entitled “A Fast File System for UNIX”

This is the review for the paper entitled “A Fast File System for Unix” by Marshall Kirk McKusick et. al. of the Computer Systems Research Group of University of California, Berkeley, rewritten in 1984.


The paper discussed about their reimplementation of UNIX file system where they adapt the system to a wide range of peripheral and processor characteristics. The new implementation of the system is tested to have ten times faster file access rate compared to the traditional UNIX file system. Several improvements on the file system were also discussed such as advisory locks on files, filename extension across file systems, ability to use long file names, and administrative control of resource usage.


The two major contributions  of this paper are the modifications in the file system organization.


  1. The first modification is on the storage utilization. The study optimized the storage utilization by increasing the block size. Through this bigger file can be transferred in a single disk transaction, thereby greatly increasing the throughput. However, Unix file system is composed of many small files, therefore large block size increases the space wasted. To resolve this issue. A single block is further partitioned into one or more addressable fragment. Since these fragments are addressable, multiple small files can reside on one data block.


  1. The second modification is on the file system reparameterization. This modification is essential to the perform an optimal configuration-dependent block allocations. Each file system used are parameterized and adapted to the type of disk where it is placed. The parameters used are the speed of the processor, the hardware support for mass storage transfers, and the characteristics of the mass storage devices.


Although this paper significantly improved the data transfer, the time to read and write the file is almost similar to the reading rate of the older file system. The writing rate of the new file system is 50% slower than the older file system, because the kernel has to do twice as many disk allocations per second.


Review on the paper entitled “A History and Evaluation of System R”

The paper  written by Donald Chamberlin et. al. under IBM Research Lab entitled “A History and Evaluation of System R” was published July 1981. In their paper, they discussed about an experimental database system called System R, where they demonstrate the usability advantages of the relational data model. It also discussed the lessons learned from the development of System R about the design of relational database systems.

The two major contributions  of this paper are the following.

1. The relational database system implementation (System R) where it provides a high-level non-navigational user interface that can support different types of rapidly changing database environments with concurrent users and has the capability to be in a consistent state after a failure.

2. To develop a fully operational database system, researchers followed a three phase program where in the first phase is the development of SQL. A high-level data sublanguage that the System R used to compile database queries into machine level codes.

Based from the experiments done in phase 2 of the System R project, the performance of relational database system is not yet equal to the navigational system where in paths and pointers are used to navigate among data nodes. However, the study hopes for more use of the system in the years ahead since relational database is more likely to be able to adapt to a broad spectrum of unanticipated applications.

Review on the paper entitled “The Unix Time-Sharing System”

The paper  written by Dennis Ritchie and Ken Thompson under Bell Laboratories was published July 1964. In their paper, they discussed about about a simple, multi-user, and interactive operating system called Unix for the computer PDP-11/40 and 45. The paper was organized as follows.

The first part of the paper briefly discussed the implemented operating system where they compare it to existing larger operating systems. They also listed the number of functionalities that the operating system can support. These are  assembler, text editor based on QED, linking loader, symbolic debugger, compiler for a language resembling BCPL  with types and structures (C), interpreter for a dialect of BASIC, text formatting program, Fortran compiler, Snobol interpreter, top-down compiler- compiler (TMG),  bottom-up compiler-compiler (YACC), form letter generator, macro processor (M6), and permuted index program. The main advantage of Unix compared to the larger system is that it is simple, elegant, and easy to use.

In the second section, they discussed about the file system used. In unix there are three types of files, these are ordinary, directory, and special files. An ordinary file contains information as strings separated by a new line. A directory imposes a structure of the set of ordinary files. It lets the user to organize the ordinary files into a tree form. The tree structure was imposed by defining a root directory, where all searches start. Every directory has a parent directory and all directories is rooted at the root directory. One major contribution of this paper is on allowing  links which are not allowed in existing larger operating systems. Instead of the actual directory, links are pointers to a directory. What happens to a directory happens to all links that are pointed in that directory. The third type of file is called special files. These files are associated with I/O devices that are supported by UNIX, examples of which are mountable devices such as external memory drives. Treating I/O devices as files, according to the paper has threefold advantage.

The advantages are the following.  “File and device I/O are as similar as possible; file and device names have the same syntax and meaning, so that a program expecting a file name as a parameter can be passed as device name; finally, special files are subject to the same protection mechanism as regular files.”

Aside from the three different versions of files, the paper also discussed about  file protection. i.e. control scheme used by UNIX. Where capability to read, write, or execute is controlled by a 7 bit information about the file.

The paper also discussed about I/O calls, from files in the main memory or from a mountable device. Files in mountable devices when mounted will be a subtree  of the file system from the root. Links between two separated memory drives are not allowed. They also discussed the implementation of the file system. In their implementation, each file has the following description.

1. Its owner.

2. Its protection bits.

3. The physical disk or tape addresses for the file contents.

4. Its size.

5. Time of last modification

6. The number of links to the file, that is, the number of times it appears in a directory.

7. A bit indicating whether the file is a directory.

8. A bit indicating whether the file is a special file.

9. A bit indicating whether the file is “large” or “small.”

A file is represented by an i-node where all information about the file is stored, the list of all files are called i-list.

Sections 5 and 6 of the paper discussed about the functionality of the operating system. In particular, how processes are called and executed. The paper also introduced the shell. It is a program that is responsible for interpreting commands from the user. Statistics on the performance of the operating system were also presented in the paper. However, interpretations of the statistics were not presented.

Sections 5 and 6 of the paper discussed about the functionality of the operating system. In particular, how processes are called and executed. The paper also introduced the shell. It is a program that is responsible for interpreting commands from the user. Statistics on the performance of the operating system were also presented in the paper. However, interpretations of the statistics were not presented.

One major flaw I have read in the paper is the number of hardware faults experienced by the PDP-11 where it has references to nonexistent of memory or unimplemented instructions.