|
13 | 13 | #include <sstream> |
14 | 14 | #include <string> |
15 | 15 | #include <unordered_map> |
| 16 | +#include <unordered_set> |
16 | 17 | #include <vector> |
17 | 18 |
|
18 | 19 | #include "jni_layer_constants.h" |
@@ -395,13 +396,34 @@ class ExecuTorchJni : public facebook::jni::HybridClass<ExecuTorchJni> { |
395 | 396 | #endif |
396 | 397 | } |
397 | 398 |
|
| 399 | + facebook::jni::local_ref<facebook::jni::JArrayClass<jstring>> getUsedBackends( |
| 400 | + facebook::jni::alias_ref<jstring> methodName) { |
| 401 | + auto methodMeta = module_->method_meta(methodName->toStdString()).get(); |
| 402 | + std::unordered_set<std::string> backends; |
| 403 | + for (auto i = 0; i < methodMeta.num_backends(); i++) { |
| 404 | + backends.insert(methodMeta.get_backend_name(i).get()); |
| 405 | + } |
| 406 | + |
| 407 | + facebook::jni::local_ref<facebook::jni::JArrayClass<jstring>> ret = |
| 408 | + facebook::jni::JArrayClass<jstring>::newArray(backends.size()); |
| 409 | + int i = 0; |
| 410 | + for (auto s : backends) { |
| 411 | + facebook::jni::local_ref<facebook::jni::JString> backend_name = |
| 412 | + facebook::jni::make_jstring(s.c_str()); |
| 413 | + (*ret)[i] = backend_name; |
| 414 | + i++; |
| 415 | + } |
| 416 | + return ret; |
| 417 | + } |
| 418 | + |
398 | 419 | static void registerNatives() { |
399 | 420 | registerHybrid({ |
400 | 421 | makeNativeMethod("initHybrid", ExecuTorchJni::initHybrid), |
401 | 422 | makeNativeMethod("forward", ExecuTorchJni::forward), |
402 | 423 | makeNativeMethod("execute", ExecuTorchJni::execute), |
403 | 424 | makeNativeMethod("loadMethod", ExecuTorchJni::load_method), |
404 | 425 | makeNativeMethod("readLogBuffer", ExecuTorchJni::readLogBuffer), |
| 426 | + makeNativeMethod("getUsedBackends", ExecuTorchJni::getUsedBackends), |
405 | 427 | }); |
406 | 428 | } |
407 | 429 | }; |
|
0 commit comments