initialize static method

Future<void> initialize({
  1. bool debug = false,
})

Implementation

static Future<void> initialize({bool debug = false}) async {
  String libName = Platform.isWindows ? 'cuda_executor.dll' : 'libcuda_executor.so';

  final uri = await Isolate.resolvePackageUri(
      Uri.parse('package:flutter_ml/gpu_version/ffi/cudafiles/$libName')
  );

  if (uri == null) {
    throw Exception("\n[CRITICAL ERROR] Could not locate $libName inside the flutter_ml package.");
  }

  String absolutePath = uri.toFilePath();
  DynamicLibrary dylib;

  try {
    dylib = DynamicLibrary.open(absolutePath);
  } catch (e) {
    print("CRITICAL FFI ERROR: Failed to open library at $absolutePath.");
    rethrow;
  }

  _create         = dylib.lookupFunction<NativeCreate, DartCreate>('create_executor');
  _free           = dylib.lookupFunction<NativeFree, DartFree>('free_executor');
  _load           = dylib.lookupFunction<NativeLoad, DartLoad>('load_tensor_h2d');
  _retrieve       = dylib.lookupFunction<NativeRetrieve, DartRetrieve>('retrieve_tensor_d2h_into');
  _run            = dylib.lookupFunction<NativeRun, DartRun>('run_tape');
  _freeTensor     = dylib.lookupFunction<NativeFreeT, DartFreeT>('free_tensor');
  _getTensorNames = dylib.lookupFunction<NativeGetNames, DartGetNames>('get_tensor_names');
  _freeString     = dylib.lookupFunction<NativeFreeStr, DartFreeStr>('free_string');

  _addPointers    = dylib.lookupFunction<NativeAddPointers, DartAddPointers>('add_pointers');
  _initRandom     = dylib.lookupFunction<NativeInitRandom, DartInitRandom>('init_random_uniform');

  handle = _create(debug);
}