Skip to content

Commit

Permalink
Release candidate (#52)
Browse files Browse the repository at this point in the history
* Result Summary - Scheduler Overhead Added

* Test script added

* Summary Scripts and lamda distributions added

* RC 1.0 commit

* Result analysis scripts added

* Num Jobs Variations Scripts

* Added Processors variation code

* lambda variation scripts

* renamed scripts and removed duplicates

* Added scripts

* Num Processors variable scripts

* Release Candidate - warning fixes

* Release Condidate - Options --p and --d added

* Release Candiate - Help Print

* update to RC readme

* Release Candiate - Print help fix

* added tests to --p & --d
  • Loading branch information
kiritigowda authored Jul 8, 2018
1 parent e51ed2b commit 44afeb6
Show file tree
Hide file tree
Showing 22 changed files with 1,499 additions and 72 deletions.
24 changes: 13 additions & 11 deletions RTG-scheduler/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
[![codecov](https://codecov.io/gh/kiritigowda/SRTG-Schedule/branch/master/graph/badge.svg)](https://codecov.io/gh/kiritigowda/SRTG-Schedule)

# RTGS
The current release verion is 0.9.9.1 (beta preview).
The current release verion is 1.0_RC (Release Candidate).

### Windows
```
RTG-scheduler [options] --jobs <jobs_file.txt> --releaseTimes <Release_Time_file.txt> --mode <mode option>
RTG-scheduler [options] --j <jobs_file.txt> --rt <Release_Time_file.txt> --m <option> --p <option> --d <option>
```
### Linux
```
./RTG-scheduler [options] --jobs <jobs_file.txt> --releaseTimes <Release_Time_file.txt> --mode <mode option>
./RTG-scheduler [options] --j <jobs_file.txt> --rt <Release_Time_file.txt> --m <option> --p <option> --d <option>
```

## Scheduler Options Supported
Expand All @@ -20,9 +20,11 @@ RTG-scheduler [options] --jobs <jobs_file.txt> --releaseTimes <Release_Time_file
````
## Scheduler Parameters
````
--j/--jobs -- Jobs to be scheduled [required]
--rt/--releaseTimes -- Release times for the jobs [required]
--m/--mode -- Mode options [optional]
--j/--jobs -- Jobs to be scheduled [required]
--rt/--releaseTimes -- Release times for the jobs [required]
--m/--mode -- Mode options [optional - default:5]
--p/--maxProcessors -- Max processors available on the GPU [optional - default:14]
--d/--delayLimitPercentage -- Delay Schedule processor limit in percentage [optional - default:75]
````

- #### --j/--jobs -- The Jobs File is the list of Jobs to be scheduled: <jobs_file.txt>
Expand All @@ -46,11 +48,11 @@ RTG-scheduler [options] --jobs <jobs_file.txt> --releaseTimes <Release_Time_file

- #### --m/--mode -- The Modes Supported: <mode option>
```
1 - Simple GPU Scheduler
2 - As Early As Possible mode->AEAP
3 - AEAP with As Late As Possible mode->AEAP/ALAP
4 - AEAP/ALAP Bin Packer mode->AEAP/ALAP Pack
5 - AEAP/ALAP BP with APLAP improver mode->AEAP/ALAP BP Improve
1 - Greedy Schedule
2 - Event Aware Scheduler
3 - Event Aware Scheduler with Bias
4 - Event Aware Scheduler with Bias and Bias Prediction
5 - Event Aware Scheduler with Bias and Improved Bias Prediction
N - Extended in the next release
```

Expand Down
10 changes: 6 additions & 4 deletions RTG-scheduler/include/RTGS.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@
#include <string.h>

#define MAX_GPU_PROCESSOR 14 // Total streaming multi-processors available on the GPU
#define MAX_JOBS 500 // Max jobs to be scheduled
#define MAX_JOBS 1200 // Max jobs to be scheduled
#define PROCESSOR_LIMIT 10 // ALAP Processor Limit
#define MAX_RUN_TIME 10000 // Max run time
#define MAX_RUN_TIME 500000 // Max run time

#define MULTIPLE_JOBS_SCHEDULED -99 // multiple jobs scheduled at a given time
#define MULTIPLE_JOBS_SCHEDULED -99 // multiple jobs scheduled at a given time

// PROFILER_MODE:
// 0 - no profiling
Expand Down Expand Up @@ -100,12 +100,12 @@ struct jobInformation {
int deadline; // deadline
int latest_schedulable_time; // latest schedule time
int release_time; // latest schedule time
float schedule_overhead; // scheduler Overhead
int data_send_time; // data for the job sent
int scheduled_execution; // scheduled for GPU exec
int completion_time; // job completion time
int rescheduled_execution; // job rescheduled for gpu exe
int schedule_hardware; // job scheduled on 0: ERROR, 1: GPU, 2: CPU
float schedule_overhead; // scheduler Overhead
};
//! \brief jobInformation structure
typedef struct jobInformation jobAttributes;
Expand Down Expand Up @@ -149,6 +149,8 @@ typedef struct jobBackupList genericBackupNode;
int GLOBAL_GPU_JOBS;
int GLOBAL_CPU_JOBS;
int GLOBAL_RELEASE_TIME[MAX_RUN_TIME];
int GLOBAL_MAX_PROCESSORS;
int GLOBAL_DELAY_SCHEDULE_PROCESSOR_LIMIT;
genericBackupNode *GLOBAL_preScheduleList;

// debug message setup variable
Expand Down
68 changes: 63 additions & 5 deletions RTG-scheduler/pythonScripts/createSchedulerGraphs.py
Original file line number Diff line number Diff line change
Expand Up @@ -209,19 +209,22 @@
print"\t</head>"
print"\t<body>"
print'\t\t<br><br><h1><center> RTG Schedule Summary</center></h2><br>'
print"\t\t<table align=\"center\" style=\"width: 90%\">"
print"\t\t<table align=\"center\" style=\"width: 95%\">"
print"\t\t\t<tr>"
print"\t\t\t\t<td><center></center></td>"
print"\t\t\t\t<td><center>Average Jobs</center></td>"
print"\t\t\t\t<td><center>Jobs Scheduled</center></td>"
print"\t\t\t\t<td><center>Avg Processors</center></td>"
print"\t\t\t\t<td><center>Avg Execution Time</center></td>"
print"\t\t\t\t<td><center>Avg Processors/Job</center></td>"
print"\t\t\t\t<td><center>Avg Execution Time/Job</center></td>"
print"\t\t\t\t<td><center>Total GPU Usage</center></td>"
print"\t\t\t\t<td><center>Avg Response Time</center></td>"
print"\t\t\t\t<td><center>Avg Response Factor</center></td>"
print"\t\t\t\t<td><center>Avg Response Time/Job</center></td>"
print"\t\t\t\t<td><center>Avg Response Factor/Job</center></td>"
print"\t\t\t\t<td><center>GPU usage Percentage</center></td>"
print"\t\t\t\t<td><center>Job Scheduled Percentage</center></td>"
print"\t\t\t\t<td><center>Avg GPU Schedule Overhead/Job</center></td>"
print"\t\t\t\t<td><center>Avg Scheduler Overhead/Job</center></td>"
print"\t\t\t</tr>"
# Mode 1
avgJobsScheduled = 0;
avgJobs = 0;
avgProc = 0;
Expand All @@ -231,6 +234,9 @@
avgResponseFactor = 0;
GPUUsagePercentage = 0;
avgJobPercentage = 0;
GPUScheduleOverhead = 0;
AvgSchedulerOverhead = 0;

for x in range(row_count):
avgJobsScheduled = avgJobsScheduled + float(data_1[x][0]);
avgJobs = avgJobs + int(data_1[x][1]);
Expand All @@ -241,6 +247,8 @@
avgResponseFactor = avgResponseFactor + float(data_1[x][6]);
GPUUsagePercentage = GPUUsagePercentage + float(data_1[x][7]);
avgJobPercentage = avgJobPercentage + float(data_1[x][8]);
GPUScheduleOverhead = GPUScheduleOverhead + float(data_1[x][10]);
AvgSchedulerOverhead = AvgSchedulerOverhead + float(data_1[x][11]);

avgJobsScheduled = float(avgJobsScheduled)/row_count;
avgJobs = float(avgJobs)/row_count;
Expand All @@ -251,6 +259,9 @@
avgResponseFactor = float(avgResponseFactor)/row_count;
GPUUsagePercentage = float(GPUUsagePercentage)/row_count;
avgJobPercentage = float(avgJobPercentage)/row_count;
GPUScheduleOverhead = float(GPUScheduleOverhead)/row_count;
AvgSchedulerOverhead = float(AvgSchedulerOverhead)/row_count;

print"\t\t\t<tr>"
print"\t\t\t\t<td><center>Mode 1</center></td>"
print'\t\t\t\t<td><center>'+str(avgJobs)+'</center></td>'
Expand All @@ -262,7 +273,10 @@
print'\t\t\t\t<td><center>'+str(avgResponseFactor)+'</center></td>'
print'\t\t\t\t<td><center>'+str(GPUUsagePercentage)+'</center></td>'
print'\t\t\t\t<td><center>'+str(avgJobPercentage)+'</center></td>'
print'\t\t\t\t<td><center>'+str(GPUScheduleOverhead)+'</center></td>'
print'\t\t\t\t<td><center>'+str(AvgSchedulerOverhead)+'</center></td>'
print"\t\t\t</tr>"
# Mode 2
avgJobsScheduled = 0;
avgJobs = 0;
avgProc = 0;
Expand All @@ -272,6 +286,9 @@
avgResponseFactor = 0;
GPUUsagePercentage = 0;
avgJobPercentage = 0;
GPUScheduleOverhead = 0;
AvgSchedulerOverhead = 0;

for x in range(row_count):
avgJobsScheduled = avgJobsScheduled + float(data_2[x][0]);
avgJobs = avgJobs + int(data_2[x][1]);
Expand All @@ -282,6 +299,8 @@
avgResponseFactor = avgResponseFactor + float(data_2[x][6]);
GPUUsagePercentage = GPUUsagePercentage + float(data_2[x][7]);
avgJobPercentage = avgJobPercentage + float(data_2[x][8]);
GPUScheduleOverhead = GPUScheduleOverhead + float(data_2[x][10]);
AvgSchedulerOverhead = AvgSchedulerOverhead + float(data_2[x][11]);

avgJobsScheduled = float(avgJobsScheduled)/row_count;
avgJobs = float(avgJobs)/row_count;
Expand All @@ -292,6 +311,9 @@
avgResponseFactor = float(avgResponseFactor)/row_count;
GPUUsagePercentage = float(GPUUsagePercentage)/row_count;
avgJobPercentage = float(avgJobPercentage)/row_count;
GPUScheduleOverhead = float(GPUScheduleOverhead)/row_count;
AvgSchedulerOverhead = float(AvgSchedulerOverhead)/row_count;

print"\t\t\t<tr>"
print"\t\t\t\t<td><center>Mode 2</center></td>"
print'\t\t\t\t<td><center>'+str(avgJobs)+'</center></td>'
Expand All @@ -303,7 +325,10 @@
print'\t\t\t\t<td><center>'+str(avgResponseFactor)+'</center></td>'
print'\t\t\t\t<td><center>'+str(GPUUsagePercentage)+'</center></td>'
print'\t\t\t\t<td><center>'+str(avgJobPercentage)+'</center></td>'
print'\t\t\t\t<td><center>'+str(GPUScheduleOverhead)+'</center></td>'
print'\t\t\t\t<td><center>'+str(AvgSchedulerOverhead)+'</center></td>'
print"\t\t\t</tr>"
# Mode 3
avgJobsScheduled = 0;
avgJobs = 0;
avgProc = 0;
Expand All @@ -313,6 +338,9 @@
avgResponseFactor = 0;
GPUUsagePercentage = 0;
avgJobPercentage = 0;
GPUScheduleOverhead = 0;
AvgSchedulerOverhead = 0;

for x in range(row_count):
avgJobsScheduled = avgJobsScheduled + float(data_3[x][0]);
avgJobs = avgJobs + int(data_3[x][1]);
Expand All @@ -323,6 +351,8 @@
avgResponseFactor = avgResponseFactor + float(data_3[x][6]);
GPUUsagePercentage = GPUUsagePercentage + float(data_3[x][7]);
avgJobPercentage = avgJobPercentage + float(data_3[x][8]);
GPUScheduleOverhead = GPUScheduleOverhead + float(data_3[x][10]);
AvgSchedulerOverhead = AvgSchedulerOverhead + float(data_3[x][11]);

avgJobsScheduled = float(avgJobsScheduled)/row_count;
avgJobs = float(avgJobs)/row_count;
Expand All @@ -333,6 +363,9 @@
avgResponseFactor = float(avgResponseFactor)/row_count;
GPUUsagePercentage = float(GPUUsagePercentage)/row_count;
avgJobPercentage = float(avgJobPercentage)/row_count;
GPUScheduleOverhead = float(GPUScheduleOverhead)/row_count;
AvgSchedulerOverhead = float(AvgSchedulerOverhead)/row_count;

print"\t\t\t<tr>"
print"\t\t\t\t<td><center>Mode 3</center></td>"
print'\t\t\t\t<td><center>'+str(avgJobs)+'</center></td>'
Expand All @@ -344,7 +377,10 @@
print'\t\t\t\t<td><center>'+str(avgResponseFactor)+'</center></td>'
print'\t\t\t\t<td><center>'+str(GPUUsagePercentage)+'</center></td>'
print'\t\t\t\t<td><center>'+str(avgJobPercentage)+'</center></td>'
print'\t\t\t\t<td><center>'+str(GPUScheduleOverhead)+'</center></td>'
print'\t\t\t\t<td><center>'+str(AvgSchedulerOverhead)+'</center></td>'
print"\t\t\t</tr>"
# Mode 4
avgJobsScheduled = 0;
avgJobs = 0;
avgProc = 0;
Expand All @@ -354,6 +390,9 @@
avgResponseFactor = 0;
GPUUsagePercentage = 0;
avgJobPercentage = 0;
GPUScheduleOverhead = 0;
AvgSchedulerOverhead = 0;

for x in range(row_count):
avgJobsScheduled = avgJobsScheduled + float(data_4[x][0]);
avgJobs = avgJobs + int(data_4[x][1]);
Expand All @@ -364,6 +403,8 @@
avgResponseFactor = avgResponseFactor + float(data_4[x][6]);
GPUUsagePercentage = GPUUsagePercentage + float(data_4[x][7]);
avgJobPercentage = avgJobPercentage + float(data_4[x][8]);
GPUScheduleOverhead = GPUScheduleOverhead + float(data_4[x][10]);
AvgSchedulerOverhead = AvgSchedulerOverhead + float(data_4[x][11]);

avgJobsScheduled = float(avgJobsScheduled)/row_count;
avgJobs = float(avgJobs)/row_count;
Expand All @@ -374,6 +415,9 @@
avgResponseFactor = float(avgResponseFactor)/row_count;
GPUUsagePercentage = float(GPUUsagePercentage)/row_count;
avgJobPercentage = float(avgJobPercentage)/row_count;
GPUScheduleOverhead = float(GPUScheduleOverhead)/row_count;
AvgSchedulerOverhead = float(AvgSchedulerOverhead)/row_count;

print"\t\t\t<tr>"
print"\t\t\t\t<td><center>Mode 4</center></td>"
print'\t\t\t\t<td><center>'+str(avgJobs)+'</center></td>'
Expand All @@ -385,7 +429,10 @@
print'\t\t\t\t<td><center>'+str(avgResponseFactor)+'</center></td>'
print'\t\t\t\t<td><center>'+str(GPUUsagePercentage)+'</center></td>'
print'\t\t\t\t<td><center>'+str(avgJobPercentage)+'</center></td>'
print'\t\t\t\t<td><center>'+str(GPUScheduleOverhead)+'</center></td>'
print'\t\t\t\t<td><center>'+str(AvgSchedulerOverhead)+'</center></td>'
print"\t\t\t</tr>"
# Mode 5
avgJobsScheduled = 0;
avgJobs = 0;
avgProc = 0;
Expand All @@ -395,7 +442,10 @@
avgResponseFactor = 0;
GPUUsagePercentage = 0;
avgJobPercentage = 0;
GPUScheduleOverhead = 0;
AvgSchedulerOverhead = 0;
avgReleaseLambda = 0;

for x in range(row_count):
avgJobsScheduled = avgJobsScheduled + float(data_5[x][0]);
avgJobs = avgJobs + int(data_5[x][1]);
Expand All @@ -407,6 +457,8 @@
GPUUsagePercentage = GPUUsagePercentage + float(data_5[x][7]);
avgJobPercentage = avgJobPercentage + float(data_5[x][8]);
avgReleaseLambda = avgReleaseLambda + float(data_5[x][9]);
GPUScheduleOverhead = GPUScheduleOverhead + float(data_5[x][10]);
AvgSchedulerOverhead = AvgSchedulerOverhead + float(data_5[x][11]);

avgJobsScheduled = float(avgJobsScheduled)/row_count;
avgJobs = float(avgJobs)/row_count;
Expand All @@ -417,7 +469,11 @@
avgResponseFactor = float(avgResponseFactor)/row_count;
GPUUsagePercentage = float(GPUUsagePercentage)/row_count;
avgJobPercentage = float(avgJobPercentage)/row_count;
GPUScheduleOverhead = float(GPUScheduleOverhead)/row_count;
AvgSchedulerOverhead = float(AvgSchedulerOverhead)/row_count;

avgReleaseLambda = float(avgReleaseLambda)/row_count;

print"\t\t\t<tr>"
print"\t\t\t\t<td><center>Mode 5</center></td>"
print'\t\t\t\t<td><center>'+str(avgJobs)+'</center></td>'
Expand All @@ -429,6 +485,8 @@
print'\t\t\t\t<td><center>'+str(avgResponseFactor)+'</center></td>'
print'\t\t\t\t<td><center>'+str(GPUUsagePercentage)+'</center></td>'
print'\t\t\t\t<td><center>'+str(avgJobPercentage)+'</center></td>'
print'\t\t\t\t<td><center>'+str(GPUScheduleOverhead)+'</center></td>'
print'\t\t\t\t<td><center>'+str(AvgSchedulerOverhead)+'</center></td>'
print"\t\t\t</tr>"
print"\t\t</table>"
print'\t\t<br><br><h2><center> Avg Release Time Lambda:'+str(avgReleaseLambda)+'</center></h2><br>'
Expand Down
Loading

0 comments on commit 44afeb6

Please sign in to comment.