schedGPU
Installation
Instructions for using the schedGPU framework
Step 0. Requirements
The schedGPU software makes use of the BOOST library version 1.56.0.
Step 1. Create configuration file
​
Run the following commands:
$ cd schedGPU/bin
$ sudo ./schedGPU configure
​
Memory allocation policies:
- "FIFO": First-In, First-Out (default)
- "MMU": Maximum Memory Utilization
- "PriorityFIFO":
- "PriorityMMU":
Default policy can be changed by editing field "NotificationPolicy" in the configuration file ("/etc/schedGPU/schedGPU.ini").
Step 2. Two options for using schedGPU:
​
- Option A: implicit memory management (no source modification required)
- Option B: explicit memory management (source modification required; more control on memory management)
Step 2.A. Implicit memory management (no source modification required)
​
Just preload schedGPU implicit library before running your program:
$> LD_PRELOAD=/path/to/schedGPU/lib/libschedGPU_implicit.so ./your_program
​
Optionally set "SCHEDGPU_TIMEOUT_IN_SECONDS" and "SCHEDGPU_PRIORITY" with the desired values for schedGPUInit() function:
$> SCHEDGPU_TIMEOUT_IN_SECONDS=60 SCHEDGPU_PRIORITY=99 LD_PRELOAD=/path/to/schedGPU/lib/libschedGPU_implicit.so ./your_program
New!
Step 2.B. Explicit memory management (source modification required)
​
Adapt your CUDA code as in the following snippet:
​
int main(int argc, char **argv) {
// Call schedGPUInit() at the begining of your program
schedGPUInit();
int device = 0;
size_t bytes = 1024;
float *mem_device = 0;
cudaSetDevice(device);
// Call preCudaMalloc() before allocating GPU memory
preCudaMalloc(device, bytes);
cudaMalloc((void**)&mem_device, bytes);
...
cudaFree(mem_device);
// Call postCudaFree() after freeing GPU memory
postCudaFree(device, bytes);
}
​