@@ -31,18 +31,18 @@ load_graph(char *options)
31
31
const char * id = "default" ;
32
32
wasi_ephemeral_nn_graph_builder * builders = NULL ;
33
33
size_t nbuilders = 0 ;
34
+ const char * name = NULL ;
34
35
enum {
35
36
opt_id ,
36
37
opt_file ,
38
+ opt_name ,
37
39
opt_encoding ,
38
40
opt_target ,
39
41
};
40
42
static char * const keylistp [] = {
41
- [opt_id ] = "id" ,
42
- [opt_file ] = "file" ,
43
- [opt_encoding ] = "encoding" ,
44
- [opt_target ] = "target" ,
45
- NULL ,
43
+ [opt_id ] = "id" , [opt_file ] = "file" ,
44
+ [opt_name ] = "name" , [opt_encoding ] = "encoding" ,
45
+ [opt_target ] = "target" , NULL ,
46
46
};
47
47
while (* options ) {
48
48
extern char * suboptarg ;
@@ -74,6 +74,13 @@ load_graph(char *options)
74
74
exit (1 );
75
75
}
76
76
break ;
77
+ case opt_name :
78
+ if (value == NULL ) {
79
+ fprintf (stderr , "no value for %s\n" , saved );
80
+ exit (2 );
81
+ }
82
+ name = value ;
83
+ break ;
77
84
case opt_encoding :
78
85
if (value == NULL ) {
79
86
fprintf (stderr , "no value for %s\n" , saved );
@@ -94,13 +101,25 @@ load_graph(char *options)
94
101
}
95
102
}
96
103
104
+ if (name != NULL && nbuilders != 0 ) {
105
+ fprintf (stderr , "name and file are exclusive\n" );
106
+ exit (1 );
107
+ }
108
+
97
109
wasi_ephemeral_nn_error nnret ;
98
110
wasi_ephemeral_nn_graph g ;
99
- nnret = wasi_ephemeral_nn_load (builders , nbuilders , encoding , target , & g );
100
- size_t i ;
101
- for (i = 0 ; i < nbuilders ; i ++ ) {
102
- wasi_ephemeral_nn_graph_builder * b = & builders [i ];
103
- unmap_file (b -> buf , b -> size );
111
+ if (name != NULL ) {
112
+ /* we ignore encoding and target */
113
+ nnret = wasi_ephemeral_nn_load_by_name (name , strlen (name ), & g );
114
+ }
115
+ else {
116
+ nnret =
117
+ wasi_ephemeral_nn_load (builders , nbuilders , encoding , target , & g );
118
+ size_t i ;
119
+ for (i = 0 ; i < nbuilders ; i ++ ) {
120
+ wasi_ephemeral_nn_graph_builder * b = & builders [i ];
121
+ unmap_file (b -> buf , b -> size );
122
+ }
104
123
}
105
124
if (nnret != wasi_ephemeral_nn_error_success ) {
106
125
fprintf (stderr , "load failed with %d\n" , (int )nnret );
0 commit comments