Ë
    ÄÓ^j°"  ã            
       ó˜   — d dl Z d dlZd dlmZ g Z e j
                  e«      Zdede	e   de
eef   dz  dedef
d„Zdede	e   dedefd	„Zy)
é    N)ÚIndentedBufferÚpackage_nameÚmodel_namesÚexample_inputs_mapÚdevice_typeÚreturnc                 óü
  — t        «       }|j                  g d¢«       |dk(  r@t        j                  j                  r|j                  dg«       n|j                  ddg«       |D ]  }|j                  d| › d|› d|› d	�«       Œ |j                  «        |D ]  }|j                  d
|› d�«       Œ |j                  g d¢«       |j                  «       5  |j                  d|› d�«       |j                  d«       |j                  «       5  |j                  d«       |��ït        |«      D �]C  \  }}||   }|j                  d|› �«       |j                  d|dz   › d�«       |j                  d|› d�«       |j                  «       5  |j                  d|› d�«       |j                  d«       |j                  d«       |j                  «       5  |j                  d«       |j                  d«       ddd«       |j                  d«       |j                  d«       |j                  d«       |j                  d |dz   › d!�«       ddd«       |j                  d«       |j                  «        �ŒF |j                  «        |j                  d"«       t        t        |«      «      D ]#  }|j                  d#|dz   › d$�d%|dz   › d&�g«       Œ% |j                  d'«       t        t        |«      «      D ]  }|j                  d(|dz   › d�«       Œ |j                  d)«       t        |«      D ]R  \  }}|j                  d*|dz   › d+�d,|dz   › d-�d.|dz   › d/|› d0�d1|dz   › d2�d3|dz   › d2�d4d5| › d|› d6�d7|dz   › d8�g«       ŒT |��|j                  d9«       t        t        |«      «      D ]D  }|j                  d:|dz   › d;�«       |j                  d7|dz   › d<|dz   › d=|dz   › d>|dz   › d?�	«       ŒF |j                  d@«       t        t        |«      «      D ]#  }|j                  dA|dz   › d$�dB|dz   › dC�g«       Œ% |j                  dD«       t        t        |«      «      D ]>  }|j                  dE|dz   › dF|dz   › dG�«       |j                  dH|dz   › dI|dz   › dJ�«       Œ@ |j                  dK«       ddd«       |j                  dLg«       |j                  «       5  |j                  dM«       |j                  d«       ddd«       |j                  d«       ddd«       |j                  d«       |j                  «       S # 1 sw Y   �ŒOxY w# 1 sw Y   �Œ	xY w# 1 sw Y   ŒªxY w# 1 sw Y   ŒixY w# 1 sw Y   Œ\xY w)Na}  
    Generates a main.cpp file for AOTInductor standalone models in the specified package.

    Args:
        package_name (str): Name of the package containing the models.
        model_names (List[str]): List of model names to include in the generated main.cpp.
        cuda (bool): Whether to generate code with CUDA support.
        example_inputs_map (Optional[Dict[str, List[Tensor]]]): A mapping from model name to
            its list of example input tensors. If provided, the generated main.cpp will
            load and run these inputs.

    Returns:
        str: The contents of the generated main.cpp file as a string.
    )z#include <dlfcn.h>z#include <fstream>z#include <iostream>z#include <memory>z#include <torch/torch.h>z#include <vector>z<#include <torch/csrc/inductor/aoti_torch/tensor_converter.h>Úcudaz#include <hip/hip_runtime.h>z#include <cuda.h>z#include <cuda_runtime_api.h>z
#include "ú/data/aotinductor/ú/z.h"z+using torch::aot_inductor::AOTInductorModelú;)z*using torch::aot_inductor::ConstantHandle;z'using torch::aot_inductor::ConstantMap;Ú z"int main(int argc, char* argv[]) {zstd::string device_str = "z";ztry {zc10::Device device(device_str);Nz // Load input tensors for model z%std::vector<at::Tensor> input_tensorsé   zfor (int j = 0; j < z; ++j) {zstd::string filename = "z%_input_" + std::to_string(j) + ".pt";z-std::ifstream in(filename, std::ios::binary);zif (!in.is_open()) {z>std::cerr << "Failed to open file: " << filename << std::endl;z	return 1;ú}zastd::vector<char> buffer((std::istreambuf_iterator<char>(in)), std::istreambuf_iterator<char>());z2torch::IValue ivalue = torch::pickle_load(buffer);Úinput_tensorsz).push_back(ivalue.toTensor().to(device));z!
// Create array of input handleszauto input_handlesz =zL    torch::aot_inductor::unsafe_alloc_new_handles_from_tensors(input_tensorsz);z#
// Create array for output handleszAtenTensorHandle output_handlez
// Create and load modelszauto constants_mapz# = std::make_shared<ConstantMap>();zauto constants_arrayz3 = std::make_shared<std::vector<ConstantHandle>>();z
auto modelz$ = std::make_unique<AOTInductorModelz>(z    std::move(constants_mapz),z    std::move(constants_arrayz    device_str,z    "z/");Úmodelz->load_constants();z
// Run the modelsz,torch::aot_inductor::DeviceStreamType streamz = nullptr;z->run(&input_handlesz[0], &output_handlez, streamz, nullptr);z%
// Convert output handles to tensorszauto output_tensorzN    torch::aot_inductor::alloc_tensors_by_stealing_from_handles(&output_handlez, 1);z
// Validate outputszstd::cout << "output_tensorz\n" << output_tensorz << std::endl;ztorch::save(output_tensorz, "output_tensorz.pt");z	return 0;z#} catch (const std::exception &e) {z0std::cerr << "Error: " << e.what() << std::endl;)r   Ú
writelinesÚtorchÚversionÚhipÚ	writelineÚnewlineÚindentÚ	enumerateÚrangeÚlenÚgetvalue)r   r   r   r   ÚibÚ
model_nameÚiÚ
num_inputss           úk/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/export/experimental/_utils.pyÚ_get_main_cpp_filer#      s  € ô* 
Ó	€Bà‡M�Mò	
ô
ð �fÒÜ�=‰=×ÒØ�M‰Mà2ðõð �M‰Mà'Ø3ðôð "ò 
ˆ
Ø
�‰Ø˜˜Ð&8¸¸ÀAÀjÀ\ÐQTÐUõ	
ð
ð
 ‡J�J„LØ!ò Rˆ
Ø
�‰ÐBÀ:À,ÈaÐPÕQðRð ‡M�Mò	
ôð 
�‰‹ñ kØ
�‰Ð1°+°¸bÐAÔBØ
�‰�WÔà�Y‰Y‹[ñ \	&Ø�L‰LÐ:Ô;à!Ñ-ä%.¨{Ó%;ó !‘M�A�zØ!3°JÑ!?�Jà—L‘LÐ#CÀJÀ<Ð!PÔQØ—L‘LÐ#HÈÈQÉÈÈqÐ!QÔRØ—L‘LÐ#7¸
°|À9Ð!MÔNØŸ™›ñ ØŸ™Ø6°z°lÐBgÐhôð Ÿ™Ð%TÔUØŸ™Ð%;Ô<ØŸY™Y›[ñ 6ØŸL™LØ `ôð ŸL™L¨Ô5÷	6ð
 Ÿ™ SÔ)ØŸ™Øôð Ÿ™ØPôð Ÿ™Ø+¨A°©E¨7Ð2[Ð\ô÷%ð* —L‘L Ô%Ø—J‘J–Lð9!ð< —
‘
”Ø—‘ÐAÔBÜœs ;Ó/Ó0ò �AØ—M‘Mà0°°Q±°°rÐ:ØjÐklÐopÑkpÐjqÐqsÐtðõðð —‘ÐCÔDÜœs ;Ó/Ó0ò L�AØ—L‘LÐ#AÀ!ÀaÁ%ÀÈÐ!JÕKðLð �L‰LÐ6Ô7Ü!*¨;Ó!7ò ‘��:Ø—‘à,¨Q°©U¨GÐ3VÐWØ.¨q°1©u¨gÐ5hÐiØ$ Q¨¡U GÐ+OÐPZÈ|Ð[]Ð^Ø5°a¸!±e°W¸BÐ?Ø7¸¸A¹°w¸bÐAØ)Ø ˜~Ð-?À
¸|È4ÐPØ  A¡˜wÐ&9Ð:ð	õðð "Ñ-Ø—‘Ð2Ô3Üœs ;Ó/Ó0ò �AØ—L‘LØFÀqÈ1ÁuÀgÈ[ÐYôð —L‘LØ  A¡˜wÐ&:¸1¸q¹5¸'ÐATÐUVÐYZÑUZÐT[Ð[cÐdeÐhiÑdiÐcjÐjuÐvõð	ð —‘ÐEÔFÜœs ;Ó/Ó0ò �AØ—M‘Mà0°°Q±°°rÐ:ØlÐmnÐqrÑmrÐlsÐsxÐyðõðð —‘Ð4Ô5Üœs ;Ó/Ó0ò �AØ—L‘LØ7¸¸A¹°wÐ>SÐTUÐXYÑTYÐSZÐZhÐkôð —L‘LØ5°a¸!±e°WÐ<LÈQÐQRÉUÈGÐSYÐ\õð	ð �L‰L˜Ô%÷y\	&ð| 	�‰à5ðô	
ð
 �Y‰Y‹[ñ 	&Ø�L‰LÐKÔLØ�L‰L˜Ô%÷	&ð 	�‰�SÔ÷WkðX ‡L�L�Ôà�;‰;‹=Ð÷s6ñ 6ú÷ñ ú÷\	&ð \	&ú÷F	&ð 	&ú÷Okð kúsp   Ã7U2ÄA=UÆAU	Ç#U Ç3AU	ÉI+UÒ1*U2Ó#U&Ó>U2Õ U
ÕU	ÕUÕUÕU#	ÕU2Õ&U/	Õ+U2Õ2U;c                 ó’  — t        «       }|j                  g d¢«       ddlm} |j                  r|j                  d«       |dk(  r=t        j                  j                  r|j                  d«       n|j                  d«       |j                  «        |D ]  }|j                  d| › d	|› d
�«       Œ |j                  d«       |dk(  r>t        j                  j                  r|j                  d«       n(|j                  d«       n|dk(  r|j                  d«       dj                  |«      }|j                  d|› d�«       |dk(  r\t        j                  j                  r!|j                  d«       |j                  «       S |j                  d«       |j                  «       S |dk(  r|j                  d«       |j                  «       S )N)z$cmake_minimum_required(VERSION 3.10)zproject(TestProject)r   zset(CMAKE_CXX_STANDARD 20)r   r   )Útest_configszfind_package(Torch REQUIRED)r
   zfind_package(hip REQUIRED)zfind_package(CUDA REQUIRED)zadd_subdirectory(r   z/)z
add_executable(main main.cpp)z0target_compile_definitions(main PRIVATE USE_HIP)z1target_compile_definitions(main PRIVATE USE_CUDA)Úxpuz0target_compile_definitions(main PRIVATE USE_XPU)ú z)target_link_libraries(main PRIVATE torch ú)z-target_link_libraries(main PRIVATE hip::host)z:target_link_libraries(main PRIVATE cuda ${CUDA_LIBRARIES})z2target_link_libraries(main PRIVATE sycl ze_loader))r   r   Útorch._inductor.configr%   Úuse_libtorchr   r   r   r   r   Újoinr   )r   r   r   r   r%   r   Ú
model_libss          r"   Ú_get_make_filer-   ¿   s„  € Ü	Ó	€Bà‡M�Mò	
ôõ 4à× Ò Ø
�‰Ð3Ô4à�fÒÜ�=‰=×ÒØ�L‰LÐ5Õ6à�L‰LÐ6Ô7à‡J�J„LØ!ò Yˆ
Ø
�‰Ð(¨¨Ð6HÈÈÐTVÐWÕXðYð ‡L�LÐ2Ô3Ø�fÒÜ�=‰=×ÒØ�L‰LÐKÕLà�L‰LÐLÕMØ	˜Ò	Ø
�‰ÐGÔHà—‘˜+Ó&€JØ‡L�LÐ<¸Z¸LÈÐJÔKà�fÒÜ�=‰=×ÒØ�L‰LÐHÔIð
 �;‰;‹=Ðð �L‰LÐUÔVð �;‰;‹=Ðð 
˜Ò	Ø
�‰ÐIÔJØ�;‰;‹=Ðó    )Úloggingr   Útorch._inductor.utilsr   Ú__all__Ú	getLoggerÚ__name__ÚloggerÚstrÚlistÚdictÚintr#   r-   © r.   r"   ú<module>r:      s˜   ðÛ ã Ý 0ð €Ø	ˆ×	Ñ	˜8Ó	$€ðqØðqà�c‘ðqð ˜S #˜X™¨Ñ-ðqð ð	qð
 	óqðh/ ð /°4¸±9ð /È3ð /ÐSVô /r.   