Skip to content
Snippets Groups Projects
Commit 0111172e authored by Nordine Feddal's avatar Nordine Feddal
Browse files

generate the main

parent 52f9195d
Branches
No related tags found
No related merge requests found
......@@ -2,7 +2,8 @@ import argparse # arguments parser
import os # getcwd, path
import re # Regex
from src.gpusched_parser.parser import parse_tasks, parse_jobs, parse_sched_order
from src.gpusched_parser.parser import parse_tasks, parse_jobs, parse_sched_order,relation_job_id_task_id, list_gpusched_step_object, list_gpu_tasks_object
from src.gpusched_result.gpusched_result import GPUSchedResultStep
def check_file_exist(args):
......@@ -17,6 +18,35 @@ def check_file_exist(args):
else:
return True
"""
@TODO Add time check
"""
def generate_main_unroll_step():
unroll = ""
for i in range(0,len(list_gpusched_step_object)):
currStep = list_gpusched_step_object[i]
unroll += "\t//Step number {no}\n".format(no=currStep.step_no)
for job in range(0, currStep.number_kernels):
relatedTask = int(relation_job_id_task_id[currStep.list_jobs[job]],10)
currTask = list_gpu_tasks_object[relatedTask]
print(currTask)
unroll +="\t{kernel_name}<<<{block},{thread},{smem},{stream}>>>({params});\n".format(kernel_name=currTask.name, block = currTask.blocks, thread = currTask.threads, smem = currTask.smem,stream = "stream_{no}".format(no=job),params="test")
unroll += "\tcudaDeviceSynchronize();\n\n"
print(currStep.list_jobs)
return unroll
def generate_cudaStreams():
stream_number = GPUSchedResultStep.TRACK_MAX_CONCURRENT_JOBS
stream_name = "stream_{no}"
dump_stream = "\tcudaStream_t "
for i in range(0, stream_number-1):
dump_stream += stream_name.format(no=i) + ", "
dump_stream += stream_name.format(no=stream_number-1) + ";\n"
for i in range(0, stream_number-1):
dump_stream += "\tcudaStreamCreate(&{name})\n;".format(name=stream_name.format(no=i))
return dump_stream
def write_main(args):
with open(args.output_file, "a") as outFile:
......@@ -28,12 +58,13 @@ def write_main(args):
"#include \"{kernel_file}\"\n".format(kernel_file=args.kernel_declaration)
)
outFile.write("int main(int argc, char **argv){\n"
"\tauto gputasks = get_gpusched_task_vector();\n"
"\tauto steps = get_gpusched_steps();\n"
"\tprintf(\"Start the execution of GPUSCHED order\");\n"
"\tprintf(\"There is %d steps to execute\", steps.size());\n"
)
outFile.write(generate_cudaStreams())
outFile.write(generate_main_unroll_step())
outFile.write('}')
def main():
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment