initialize static method
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);
}