def generate_outputs(): cwrap_files = [f for f in files if f.endswith('.cwrap')] nn_files = [f for f in files if f.endswith('nn.yaml') or f.endswith('.h')] native_files = [f for f in files if f.endswith('native_functions.yaml') or f.endswith('cuDNN.yaml')] declarations = [d for file in cwrap_files for d in cwrap_parser.parse(file)] declarations += nn_parse.run(nn_files) declarations += native_parse.run(native_files) declarations = preprocess_declarations.run(declarations) for fname, env in generators.items(): file_manager.write(fname, GENERATOR_DERIVED.substitute(env)) # note: this will fill in top_env['type/tensor_method_declarations/definitions'] # and modify the declarations to include any information that will all_backends # be used by function_wrapper.create_derived output_declarations = function_wrapper.create_generic(top_env, declarations) output_declarations = postprocess_output_declarations(output_declarations) file_manager.write("Declarations.yaml", format_yaml(output_declarations)) # populated by generate_storage_type_and_tensor all_types = [] for backend, density, scalar_type in iterate_types(): all_types.append(generate_storage_type_and_tensor( backend, density, scalar_type, declarations)) file_manager.write('Type.h', TYPE_H.substitute(top_env)) file_manager.write('Type.cpp', TYPE_CPP.substitute(top_env)) file_manager.write('Tensor.h', TENSOR_H.substitute(top_env)) file_manager.write('TensorMethods.h', TENSOR_METHODS_H.substitute(top_env)) file_manager.write('Functions.h', FUNCTIONS_H.substitute(top_env)) file_manager.write('Dispatch.h', dispatch_macros.create(all_types)) file_manager.write('Copy.cpp', copy_wrapper.create(all_types)) file_manager.write('NativeFunctions.h', NATIVE_FUNCTIONS_H.substitute(top_env)) file_manager.check_all_files_written()
# note: this will fill in top_env['type/tensor_method_declarations/definitions'] # and modify the declarations to include any information that will all_backends # be used by function_wrapper.create_derived output_declarations = function_wrapper.create_generic(top_env, declarations) write("Declarations.yaml", format_yaml(output_declarations)) # populated by generate_storage_type_and_tensor all_types = [] for backend in backends: for density in densities: for scalar_type in scalar_types: if density == 'Sparse' and scalar_type[0] == 'Half': # THS does not do half type yet. continue all_types.append( generate_storage_type_and_tensor(backend, density, scalar_type, declarations)) write('Type.h', TYPE_H.substitute(top_env)) write('Type.cpp', TYPE_CPP.substitute(top_env)) write('Tensor.h', TENSOR_H.substitute(top_env)) write('TensorMethods.h', TENSOR_METHODS_H.substitute(top_env)) write('Functions.h', FUNCTIONS_H.substitute(top_env)) write('Dispatch.h', dispatch_macros.create(all_types)) write('Copy.cpp', copy_wrapper.create(all_types)) if options.output_dependencies is not None: output_dependencies_file.close()
# and modify the declarations to include any information that will all_backends # be used by function_wrapper.create_derived output_declarations = function_wrapper.create_generic(top_env, declarations) output_declarations = postprocess_output_declarations(output_declarations) write("Declarations.yaml", format_yaml(output_declarations)) # populated by generate_storage_type_and_tensor all_types = [] for backend in backends: for density in densities: for scalar_type in scalar_types: if density == 'Sparse' and scalar_type[0] == 'Half': # THS does not do half type yet. continue all_types.append(generate_storage_type_and_tensor( backend, density, scalar_type, declarations)) write('Type.h', TYPE_H.substitute(top_env)) write('Type.cpp', TYPE_CPP.substitute(top_env)) write('Tensor.h', TENSOR_H.substitute(top_env)) write('TensorMethods.h', TENSOR_METHODS_H.substitute(top_env)) write('Functions.h', FUNCTIONS_H.substitute(top_env)) write('Dispatch.h', dispatch_macros.create(all_types)) write('Copy.cpp', copy_wrapper.create(all_types)) write('NativeFunctions.h', NATIVE_FUNCTIONS_H.substitute(top_env)) if options.output_dependencies is not None: output_dependencies_file.close()