@@ -319,8 +319,12 @@ class ET_EXPERIMENTAL CudaBackend final
319319 }
320320 }
321321
322- std::string so_blob_key =
323- method_name.empty () ? " so_blob" : method_name + " _so_blob" ;
322+ std::string so_blob_key;
323+ std::string weights_blob_key;
324+ ET_CHECK_OK_OR_RETURN_ERROR (
325+ executorch::backends::aoti::resolve_blob_keys (
326+ processed, method_name, so_blob_key, weights_blob_key),
327+ " Malformed named-data key payload" );
324328
325329 const NamedDataMap* named_data_map = context.get_named_data_map ();
326330 auto aoti_dso_buffer = named_data_map->get_data (so_blob_key.c_str ());
@@ -394,11 +398,11 @@ class ET_EXPERIMENTAL CudaBackend final
394398 // methods are independent sub-graphs that may have FQN collisions
395399 // (e.g. parakeet).
396400 if (is_weight_sharing_across_methods_enabled ()) {
397- ET_CHECK_OK_OR_RETURN_ERROR (
398- load_constants_with_cache ( handle, named_data_map, method_name));
401+ ET_CHECK_OK_OR_RETURN_ERROR (load_constants_with_cache (
402+ handle, named_data_map, method_name, weights_blob_key ));
399403 } else {
400404 ET_CHECK_OK_OR_RETURN_ERROR (
401- load_constants_legacy (handle, named_data_map, method_name ));
405+ load_constants_legacy (handle, named_data_map, weights_blob_key ));
402406 }
403407
404408 // Use shared CUDA stream if enabled via options, otherwise create one.
@@ -1011,13 +1015,14 @@ class ET_EXPERIMENTAL CudaBackend final
10111015 Error load_constants_with_cache (
10121016 cuda::CudaDelegateHandle* handle,
10131017 const NamedDataMap* named_data_map,
1014- const std::string& method_name) const {
1018+ const std::string& method_name,
1019+ const std::string& weights_blob_key) const {
10151020 // Check if the required APIs are available
10161021 if (!handle->get_num_constants || !handle->get_constant_name ||
10171022 !handle->get_constant_original_fqn || !handle->extract_constants_map ||
10181023 !handle->update_user_managed_constant_buffer_pairs ) {
10191024 // Fall back to the legacy path
1020- return load_constants_legacy (handle, named_data_map, method_name );
1025+ return load_constants_legacy (handle, named_data_map, weights_blob_key );
10211026 }
10221027
10231028 // Step 1: Enumerate constants and partition into cached/uncached
@@ -1069,8 +1074,6 @@ class ET_EXPERIMENTAL CudaBackend final
10691074 if (!uncached_fqns.empty ()) {
10701075 // Need to load from blob — use update_constants_from_blob for all,
10711076 // then extract the new constants into the cache.
1072- std::string weights_blob_key =
1073- method_name.empty () ? " weights_blob" : method_name + " _weights_blob" ;
10741077 auto buffer_res = named_data_map->get_data (weights_blob_key.c_str ());
10751078
10761079 ET_CHECK_OR_RETURN_ERROR (
@@ -1190,9 +1193,7 @@ class ET_EXPERIMENTAL CudaBackend final
11901193 Error load_constants_legacy (
11911194 cuda::CudaDelegateHandle* handle,
11921195 const NamedDataMap* named_data_map,
1193- const std::string& method_name) const {
1194- std::string weights_blob_key =
1195- method_name.empty () ? " weights_blob" : method_name + " _weights_blob" ;
1196+ const std::string& weights_blob_key) const {
11961197 auto buffer_res = named_data_map->get_data (weights_blob_key.c_str ());
11971198 if (buffer_res.ok () && handle->update_constants_from_blob != nullptr ) {
11981199 ET_LOG (Info, " Found %s in named data map" , weights_blob_key.c_str ());
0 commit comments