in container/ec2_compilation_container/tvm_ec2_compiler_utils.py [0:0]
def tvm_compile(func, params, arch, dlr_model_name):
gpu_code = None
###arch c4 avx2
if arch in ['c4', 'm4']:
target = "llvm -mcpu=core-avx2"
###arch c5 avx512
elif arch in ['c5', 'm5']:
target = "llvm -mcpu=skylake-avx512"
elif arch in ['p3', 'ml_p3']:
target = "cuda"
gpu_code = "sm_70"
elif arch in ['p2', 'ml_p2']:
target = "cuda"
gpu_code = "sm_37"
###arch lambda ssse3,sse4.2,avx
elif arch == 'lambda':
target = "llvm -mcpu=ivybridge"
else:
print("Valid arch: c4, m4, c5, m5, lambda")
return
if gpu_code is not None:
#set cuda arch before relay.build
from tvm.autotvm.measure.measure_methods import set_cuda_target_arch
set_cuda_target_arch(gpu_code)
print("gpu_code:", gpu_code)
print('target:', target)
print("Compiling...")
with relay.build_config(opt_level=3):
graph, lib, params = relay.build(func, target, params=params)
print("Compilation done")
print("lib type_key: ", lib.type_key)
print("Saving files")
out_folder = arch + "/" + dlr_model_name + "/"
os.makedirs(out_folder, exist_ok=True)
# save the graph, lib and params into separate files
path_lib = out_folder + "model.so"
lib.export_library(path_lib)
print("export_library done")
with open(out_folder + "model.json", "w") as fo:
fo.write(graph)
with open(out_folder + "model.params", "wb") as fo:
fo.write(relay.save_param_dict(params))
print("Files saved to", out_folder)