Git Product home page Git Product logo

kgpu's Introduction

     KGPU - Augmenting Linux with GPUs


What is it?

     Treating the GPU as a computing co-processor. To enable the
     data-parallel computation inside the Linux kernel. Using SIMD (or
     SIMT in CUDA) style code to accelerate Linux kernel
     functionality.

     Make the Linux kernel really parallelized: which is not only
     processing multiple requests concurrently, but can also partition
     a single large requested computation into tiles and do them on
     GPU cores.

     GPU can give the OS kernel dedicated cores that can be fully
     occupied by the kernel. But the multicore CPUs should not be
     occupied by the kernel because other tasks also need them.

     KGPU is not an OS running on GPU, which is almost impossible
     because of the limited functionality of current GPU
     architectures. KGPU tries to enable vector computing for the
     kernel.

     *To access the code, using git to clone:
     [email protected]:wbsun/kgpu.git or goto
     https://github.com/wbsun/kgpu .*

     As for copyright license, we use GPLv2.

News
	* RAID6 PQ computing function added as a service, gpq module
	  for its kernel part to replace the global raid6_call
	  algorithm with GPU one, it can beat the fastest SSE version
	  with 16 disks and >= 1MB data on my machine. Try it with a
	  RAID6 on dm driver.
	* Scripts to run and stop kgpu.
	* Simple build system.
	* dm-crypt can use gaes_ecb or gaes_ctr directly.

Try it?

    Hardware:
	We use GTX480. You don't need such high-end video
    	card, but you should have a NVIDIA card that support CUDA
    	computing capability 2.0 or higher.  If you don't have more
    	than 1G video memory, change KGPU_BUF_SIZE in kgpu/kgpu.h to
    	make sure KGPU_BUF_SIZE*2 < Size of Your Video
    	Memory - (x) where the max of x is a value that you need try
    	some times to figure out. Or simply leave x = 64M or 128M.

	Notice a new change: we enabled a new feature to allow
	KGPU remapping any kernel pages into CUDA page-locked
	memory, the remapping also need video memory on the GPU
	side, so now there are two GPU buffers with the same size,
	which is KGPU_BUF_SIZE. So KGPU_BUF_SIZE should be <=
	video memory size/2.

    Software:
        We compile the CUDA code with $(NVCC) in CUDA 4.0. The OS
	kernel is vanilla Linux 2.6.39.4. You MUST use a 64bit linux
	kernel compiled targeting at x86_64!

    Make and Run it:
        Check out the code from Github or download the
        archive from Google Code and extract files into say kgpu
        directory:
	    cd kgpu && make all
		
	Now all outputs are in build directory. To run it:
	    cd build && sudo ./runkgpu

	This only starts KGPU module, helper and loads AES ciphers.
	To use modified eCryptfs and dm-crypt, in the build directory:
	    sudo insmod ./ecryptfs.ko && sudo insmod ./dm-crypt
     

        NOTE: DO NOT USE THIS ECRYPTS FOR IMPORTANT DATA!!!
              THIS IS NOT COMPATIBLE WITH THE VANILLA ECRYPTFS.
	      SAME CARE SHOULD BE TAKEN WITH DM-CRYPT.
	      
    To stop it:
        Umount your eCryptfs partition, delete dm-crypt mappers and:
        sudo rmmod ecryptfs && sudo rmmod dm-crypt
        Stop "helper" program by Ctrl-C
        sudo ./stopkgpu (in build/)


Weibin Sun, Xing Lin
{wbsun, xinglin}@cs.utah.edu

kgpu's People

Contributors

sjurajpuchky avatar xinglin avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.