From d122898ab8fb89e9cb671edf6cefd8f5c500dd1c Mon Sep 17 00:00:00 2001 From: lucylq Date: Thu, 2 Oct 2025 12:05:44 -0700 Subject: [PATCH] Swift support for multiple ptd files Differential Revision: [D82075758](https://our.internmc.facebook.com/intern/diff/D82075758/) [ghstack-poisoned] --- .../ExecuTorch/Exported/ExecuTorchModule.h | 8 ++++---- .../ExecuTorch/Exported/ExecuTorchModule.mm | 19 +++++++++++++------ 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/extension/apple/ExecuTorch/Exported/ExecuTorchModule.h b/extension/apple/ExecuTorch/Exported/ExecuTorchModule.h index cda9a914bc3..b4782ce7010 100644 --- a/extension/apple/ExecuTorch/Exported/ExecuTorchModule.h +++ b/extension/apple/ExecuTorch/Exported/ExecuTorchModule.h @@ -126,14 +126,14 @@ NS_SWIFT_NAME(Module) * Initializes a module with a file path, data path and a specified load mode. * * @param filePath A string representing the path to the ExecuTorch program file. - * @param dataFilePath A string representing the path to a .ptd file with + * @param dataFiles A list of strings representing paths to .ptd files with * external tensors and external data. * @param loadMode A value from ExecuTorchModuleLoadMode that determines the * file loading behavior. * @return An initialized ExecuTorchModule instance. */ - (instancetype)initWithFilePath:(NSString *)filePath - dataFilePath:(NSString *)dataFilePath + dataFiles:(NSArray *)dataFiles loadMode:(ExecuTorchModuleLoadMode)loadMode NS_DESIGNATED_INITIALIZER; @@ -141,12 +141,12 @@ NS_SWIFT_NAME(Module) * Initializes a module with a file path, data path and a specified load mode. * * @param filePath A string representing the path to the ExecuTorch program file. - * @param dataFilePath A string representing the path to a .ptd file with + * @param dataFiles A list of strings representing paths to .ptd files with * external tensors and external data. * @return An initialized ExecuTorchModule instance. */ - (instancetype)initWithFilePath:(NSString *)filePath - dataFilePath:(NSString *)dataFilePath; + dataFiles:(NSArray *)dataFiles; /** * Initializes a module with a file path and a specified load mode. diff --git a/extension/apple/ExecuTorch/Exported/ExecuTorchModule.mm b/extension/apple/ExecuTorch/Exported/ExecuTorchModule.mm index ce58f2fb21a..a5f2c44a7ee 100644 --- a/extension/apple/ExecuTorch/Exported/ExecuTorchModule.mm +++ b/extension/apple/ExecuTorch/Exported/ExecuTorchModule.mm @@ -250,13 +250,20 @@ @implementation ExecuTorchModule { } - (instancetype)initWithFilePath:(NSString *)filePath - dataFilePath:(NSString *)dataFilePath + dataFiles:(NSArray *)dataFiles loadMode:(ExecuTorchModuleLoadMode)loadMode { self = [super init]; if (self) { + // Convert NSArray to std::vector + std::vector dataFilesVector; + if (dataFiles != nil) { + for (NSString *dataFile in dataFiles) { + dataFilesVector.push_back(dataFile.UTF8String); + } + } _module = std::make_unique( filePath.UTF8String, - dataFilePath.UTF8String, + dataFilesVector, static_cast(loadMode) ); _inputs = [NSMutableDictionary new]; @@ -266,21 +273,21 @@ - (instancetype)initWithFilePath:(NSString *)filePath } - (instancetype)initWithFilePath:(NSString *)filePath - dataFilePath:(NSString *)dataFilePath { + dataFiles:(NSArray *)dataFiles { return [self initWithFilePath:filePath - dataFilePath:dataFilePath + dataFiles:dataFiles loadMode:ExecuTorchModuleLoadModeFile]; } - (instancetype)initWithFilePath:(NSString *)filePath loadMode:(ExecuTorchModuleLoadMode)loadMode { return [self initWithFilePath:filePath - dataFilePath:@"" + dataFiles:@[] loadMode:loadMode]; } - (instancetype)initWithFilePath:(NSString *)filePath { return [self initWithFilePath:filePath - dataFilePath:@"" + dataFiles:@[] loadMode:ExecuTorchModuleLoadModeFile]; }