ailia
1.5.0.0
|
推論ライブラリ [詳解]
クラス | |
struct | _AILIAShape |
struct | _AILIAEnvironment |
型定義 | |
typedef struct _AILIAShape | AILIAShape |
typedef struct _AILIAEnvironment | AILIAEnvironment |
関数 | |
int AILIA_API | ailiaCreate (struct AILIANetwork **net, int env_id, int num_thread) |
ネットワークオブジェクトを作成します。 [詳解] | |
int AILIA_API | ailiaOpenStreamFileA (struct AILIANetwork *net, const char *path) |
ネットワークオブジェクトを初期化します。(ファイルから読み込み) [詳解] | |
int AILIA_API | ailiaOpenStreamFileW (struct AILIANetwork *net, const wchar_t *path) |
int AILIA_API | ailiaOpenStreamEx (struct AILIANetwork *net, const void *fopen_args, ailiaFileCallback callback, int version) |
ネットワークオブジェクトを初期化します。(ユーザ定義ファイルアクセスコールバック) [詳解] | |
int AILIA_API | ailiaOpenStreamMem (struct AILIANetwork *net, const void *buf, unsigned int buf_size) |
ネットワークオブジェクトを初期化します。(メモリから読み込み) [詳解] | |
int AILIA_API | ailiaOpenWeightFileA (struct AILIANetwork *net, const char *path) |
ネットワークオブジェクトに重み係数を読み込みます。(ファイルから読み込み) [詳解] | |
int AILIA_API | ailiaOpenWeightFileW (struct AILIANetwork *net, const wchar_t *path) |
int AILIA_API | ailiaOpenWeightEx (struct AILIANetwork *net, const void *fopen_args, ailiaFileCallback callback, int version) |
ネットワークオブジェクトに重み係数を読み込みます。(ユーザ定義ファイルアクセスコールバック) [詳解] | |
int AILIA_API | ailiaOpenWeightMem (struct AILIANetwork *net, const void *buf, unsigned int buf_size) |
ネットワークオブジェクトに重み係数を読み込みます。(メモリから読み込み) [詳解] | |
void AILIA_API | ailiaDestroy (struct AILIANetwork *net) |
ネットワークオブジェクトを破棄します。 [詳解] | |
int AILIA_API | ailiaSetInputShape (struct AILIANetwork *net, const AILIAShape *shape, unsigned int version) |
推論時の入力データの形状を変更します。 [詳解] | |
int AILIA_API | ailiaSetInputShapeND (struct AILIANetwork *net, const unsigned int *shape, unsigned int dim) |
推論時の入力データの形状を変更します。 [詳解] | |
int AILIA_API | ailiaGetInputShape (struct AILIANetwork *net, AILIAShape *shape, unsigned int version) |
推論時の入力データの形状を取得します。 [詳解] | |
int AILIA_API | ailiaGetInputDim (struct AILIANetwork *net, unsigned int *dim) |
推論時の入力データの次元を取得します。 [詳解] | |
int AILIA_API | ailiaGetInputShapeND (struct AILIANetwork *net, unsigned int *shape, unsigned int dim) |
推論時の入力データの形状を取得します。 [詳解] | |
int AILIA_API | ailiaGetOutputShape (struct AILIANetwork *net, AILIAShape *shape, unsigned int version) |
推論時の出力データの形状を取得します。 [詳解] | |
int AILIA_API | ailiaGetOutputDim (struct AILIANetwork *net, unsigned int *dim) |
推論時の出力データの次元を取得します。 [詳解] | |
int AILIA_API | ailiaGetOutputShapeND (struct AILIANetwork *net, unsigned int *shape, unsigned int dim) |
推論時の出力データの形状を取得します。 [詳解] | |
int AILIA_API | ailiaPredict (struct AILIANetwork *net, void *dest, unsigned int dest_size, const void *src, unsigned int src_size) |
推論を行い推論結果を取得します。 [詳解] | |
int AILIA_API | ailiaGetBlobCount (struct AILIANetwork *net, unsigned int *blob_count) |
推論時の内部データ(Blob)の数を取得します。 [詳解] | |
int AILIA_API | ailiaGetBlobShape (struct AILIANetwork *net, AILIAShape *shape, unsigned int blob_idx, unsigned int version) |
推論時の内部データ(Blob)の形状を取得します。 [詳解] | |
int AILIA_API | ailiaGetBlobDim (struct AILIANetwork *net, unsigned int *dim, unsigned int blob_idx) |
推論時の内部データ(Blob)の次元を取得します。 [詳解] | |
int AILIA_API | ailiaGetBlobShapeND (struct AILIANetwork *net, unsigned int *shape, unsigned int dim, unsigned int blob_idx) |
推論時の内部データ(Blob)の形状を取得します。 [詳解] | |
int AILIA_API | ailiaGetBlobData (struct AILIANetwork *net, void *dest, unsigned int dest_size, unsigned int blob_idx) |
推論時の内部データ(Blob)を取得します。 [詳解] | |
int AILIA_API | ailiaGetBlobDataType (struct AILIANetwork *net, int *type, unsigned int blob_idx) |
推論時の内部データ(Blob)の型を取得します。 [詳解] | |
int AILIA_API | ailiaFindBlobIndexByName (struct AILIANetwork *net, unsigned int *blob_idx, const char *name) |
推論時の内部データ(Blob)のインデックスを名前で探し取得します。 [詳解] | |
int AILIA_API | ailiaGetBlobNameLengthByIndex (struct AILIANetwork *net, const unsigned int blob_idx, unsigned int *buffer_size) |
内部データ(Blob)の名前の出力に必要なバッファのサイズを取得します。 [詳解] | |
int AILIA_API | ailiaFindBlobNameByIndex (struct AILIANetwork *net, char *buffer, const unsigned int buffer_size, const unsigned int blob_idx) |
推論時の内部データ(Blob)の名前をインデックスで探し取得します。 [詳解] | |
int AILIA_API | ailiaGetSummaryLength (struct AILIANetwork *net, unsigned int *buffer_size) |
ネットワークSummary用に必要なバッファのサイズを取得します。 [詳解] | |
int AILIA_API | ailiaSummary (struct AILIANetwork *net, char *const buffer, const unsigned int buffer_size) |
各Blobの名前と形状を表示します。 [詳解] | |
int AILIA_API | ailiaGetInputBlobCount (struct AILIANetwork *net, unsigned int *input_blob_count) |
入力データ(Blob)の数を取得します。 [詳解] | |
int AILIA_API | ailiaGetBlobIndexByInputIndex (struct AILIANetwork *net, unsigned int *blob_idx, unsigned int input_blob_idx) |
入力データ(Blob)のインデックスを取得します [詳解] | |
int AILIA_API | ailiaSetInputBlobData (struct AILIANetwork *net, const void *src, unsigned int src_size, unsigned int blob_idx) |
指定したBlobに入力データを与えます。 [詳解] | |
int AILIA_API | ailiaSetInputBlobShape (struct AILIANetwork *net, const AILIAShape *shape, unsigned int blob_idx, unsigned int version) |
指定したBlobの形状を変更します。 [詳解] | |
int AILIA_API | ailiaSetInputBlobShapeND (struct AILIANetwork *net, const unsigned *shape, const unsigned dim, unsigned int blob_idx) |
指定したBlobの形状を変更します。 [詳解] | |
int AILIA_API | ailiaCopyBlobData (struct AILIANetwork *dst_net, unsigned int dst_blob_idx, struct AILIANetwork *src_net, unsigned int src_blob_idx) |
指定したBlob間でデータをコピーします [詳解] | |
int AILIA_API | ailiaUpdate (struct AILIANetwork *net) |
事前に指定した入力データで推論を行います。 [詳解] | |
int AILIA_API | ailiaGetOutputBlobCount (struct AILIANetwork *net, unsigned int *output_blob_count) |
出力データ(Blob)の数を取得します。 [詳解] | |
int AILIA_API | ailiaGetBlobIndexByOutputIndex (struct AILIANetwork *net, unsigned int *blob_idx, unsigned int output_blob_idx) |
出力データ(Blob)のインデックスを取得します [詳解] | |
int AILIA_API | ailiaFinalize (void) |
ailiaがグローバルに確保したGPUリソース等を解放します [詳解] | |
int AILIA_API | ailiaSetTemporaryCachePathA (const char *cache_dir) |
一時キャッシュディレクトリを指定します [詳解] | |
int AILIA_API | ailiaSetTemporaryCachePathW (const wchar_t *cache_dir) |
int AILIA_API | ailiaGetEnvironmentCount (unsigned int *env_count) |
利用可能な計算環境(CPU, GPU)の数を取得します [詳解] | |
int AILIA_API | ailiaGetEnvironment (AILIAEnvironment **env, unsigned int env_idx, unsigned int version) |
計算環境の一覧を取得します [詳解] | |
int AILIA_API | ailiaGetSelectedEnvironment (struct AILIANetwork *net, AILIAEnvironment **env, unsigned int version) |
選択された計算環境を取得します [詳解] | |
int AILIA_API | ailiaSetMemoryMode (struct AILIANetwork *net, unsigned int mode) |
推論時のメモリの使用方針を設定します [詳解] | |
int AILIA_API | ailiaDisableLayerFusion (struct AILIANetwork *net) |
推論時のレイヤー統合を無効化します [詳解] | |
int AILIA_API | ailiaSetProfileMode (struct AILIANetwork *net, unsigned int mode) |
プロファイルモードをセットします [詳解] | |
const char *AILIA_API | ailiaGetStatusString (int status_code) |
ステータスコードに対応する文字列を返します。 [詳解] | |
const char *AILIA_API | ailiaGetErrorDetail (struct AILIANetwork *net) |
エラーの詳細を返します [詳解] | |
const char *AILIA_API | ailiaGetVersion (void) |
ライブラリバージョンを取得します [詳解] | |
推論ライブラリ
#define AILIA_API __stdcall |
#define AILIA_DATATYPE_BFLOAT16 16 |
#define AILIA_DATATYPE_BOOL 9 |
#define AILIA_DATATYPE_DOUBLE 11 |
#define AILIA_DATATYPE_FLOAT 1 |
#define AILIA_DATATYPE_FLOAT16 10 |
#define AILIA_DATATYPE_INT16 5 |
#define AILIA_DATATYPE_INT32 6 |
#define AILIA_DATATYPE_INT64 7 |
#define AILIA_DATATYPE_INT8 3 |
#define AILIA_DATATYPE_UINT16 4 |
#define AILIA_DATATYPE_UINT32 12 |
#define AILIA_DATATYPE_UINT64 13 |
#define AILIA_DATATYPE_UINT8 2 |
#define AILIA_DATATYPE_UNDEFINED 0 |
#define AILIA_ENVIRONMENT_BACKEND_CUDA (2) |
#define AILIA_ENVIRONMENT_BACKEND_MPS (3) |
#define AILIA_ENVIRONMENT_BACKEND_NONE (0) |
#define AILIA_ENVIRONMENT_BACKEND_VULKAN (6) |
#define AILIA_ENVIRONMENT_ID_AUTO (-1) |
#define AILIA_ENVIRONMENT_PROPERTY_FP16 (2) |
FP16で動作することを示す
#define AILIA_ENVIRONMENT_PROPERTY_LOWPOWER (1) |
省電力なGPU(内蔵GPUなど)を用いることを示す(MPS用)
#define AILIA_ENVIRONMENT_PROPERTY_NORMAL (0) |
#define AILIA_ENVIRONMENT_TYPE_BLAS (1) |
#define AILIA_ENVIRONMENT_TYPE_CPU (0) |
#define AILIA_ENVIRONMENT_TYPE_GPU (2) |
#define AILIA_ENVIRONMENT_TYPE_REMOTE (3) |
#define AILIA_ENVIRONMENT_VERSION (2) |
#define AILIA_MEMORY_NO_OPTIMIZATION (0) |
中間バッファーの開放は行わない
#define AILIA_MEMORY_OPTIMAIZE_DEFAULT (AILIA_MEMORY_REDUCE_CONSTANT) |
#define AILIA_MEMORY_REDUCE_CONSTANT (1) |
重みなどの定数となる中間バッファーを開放する
#define AILIA_MEMORY_REDUCE_CONSTANT_WITH_FILE_MAPPED (16) |
mmapを利用し、重みをメモリに配置せずに推論する
重みに対して変換が必要な場合、 必要に応じて一時バッファーを利用し、不要になったタイミングで破棄します。 利用可能な環境でファイルから重みを読み込んだ場合のみ適用されます。 また、mmap高速化のため一時ファイルを作成します。そのためailiaSetTemporaryCachePathを呼び出してください。 呼び出しを行わない場合重みファイルオープン時にAILIA_STATUS_INVALID_STATEが返ります。 AILIA_MEMORY_REDUCE_INTERSTAGEおよびAILIA_MEMORY_REUSE_INTERSTAGEと併用することが可能です。
#define AILIA_MEMORY_REDUCE_CONSTANT_WITH_INPUT_INITIALIZER (2) |
入力指定のinitializerを変更不可にし、重みなどの定数となる中間バッファーを開放する
#define AILIA_MEMORY_REDUCE_INTERSTAGE (4) |
推論時の中間バッファーを開放する
#define AILIA_MEMORY_REUSE_INTERSTAGE (8) |
中間バッファーを共有して推論する。 AILIA_MEMORY_REDUCE_INTERSTAGE と併用した場合、共有可能な中間バッファーは開放しない。
#define AILIA_MULTITHREAD_AUTO (0) |
#define AILIA_PROFILE_AVERAGE (0x01) |
レイヤー別の処理時間を計測します。複数回推論した場合は平均値が保存されます。
#define AILIA_PROFILE_DISABLE (0x00) |
プロファイルモードを無効にします(デフォルト)
#define AILIA_SHAPE_VERSION (1) |
#define AILIA_STATUS_BROKEN (-4) |
壊れたファイルが渡された
#define AILIA_STATUS_DATA_HIDDEN (-19) |
アプリケーションからは取得できない情報だった
#define AILIA_STATUS_DATA_REMOVED AILIA_STATUS_DATA_HIDDEN |
#define AILIA_STATUS_ERROR_FILE_API (-2) |
ファイルアクセスに失敗した
#define AILIA_STATUS_EXPIRED (-17) |
モデルの有効期限切れ
#define AILIA_STATUS_GPU_ERROR (-14) |
GPU上での処理中にエラー
#define AILIA_STATUS_GPU_UNSUPPORT_LAYER (-13) |
Please use AILIA_STATUS_GPU_UNSUPPORTED_LAYER. This macro has been deprecated. It will be removed in a future version.
#define AILIA_STATUS_GPU_UNSUPPORTED_LAYER (-13) |
GPUで未対応のレイヤーパラメータが与えられた
#define AILIA_STATUS_INVALID_ARGUMENT (-1) |
引数が不正
#define AILIA_STATUS_INVALID_LAYER (-10) |
レイヤーの重みやパラメータ、入出力形状が不正
#define AILIA_STATUS_INVALID_PARAMINFO (-11) |
パラメータファイルの内容が不正
#define AILIA_STATUS_INVALID_STATE (-7) |
ailia の内部状態が不正
#define AILIA_STATUS_INVALID_VERSION (-3) |
構造体バージョンが不正
#define AILIA_STATUS_LICENSE_BROKEN (-21) |
ライセンスが壊れている
#define AILIA_STATUS_LICENSE_EXPIRED (-22) |
ライセンスの有効期限切れ
#define AILIA_STATUS_LICENSE_NOT_FOUND (-20) |
有効なライセンスが見つからない
#define AILIA_STATUS_MEMORY_INSUFFICIENT (-5) |
メモリが不足している
#define AILIA_STATUS_NDIMENSION_SHAPE (-23) |
形状が5次元以上であることを示す
#define AILIA_STATUS_NOT_FOUND (-12) |
指定した要素が見つからなかった
#define AILIA_STATUS_OTHER_ERROR (-128) |
不明なエラー
#define AILIA_STATUS_PERMISSION_DENIED (-16) |
許可されていない操作
#define AILIA_STATUS_SUCCESS (0) |
成功
#define AILIA_STATUS_THREAD_ERROR (-6) |
スレッドの作成に失敗した
#define AILIA_STATUS_UNIMPLEMENTED (-15) |
未実装
#define AILIA_STATUS_UNSETTLED_SHAPE (-18) |
形状が未確定
#define AILIA_STATUS_UNSUPPORT_NET (-9) |
Please use AILIA_STATUS_UNSUPPORTED_NET. This macro has been deprecated. It will be removed in a future version.
#define AILIA_STATUS_UNSUPPORTED_NET (-9) |
非対応のネットワーク
#define ailiaOpenStreamFile ailiaOpenStreamFileA |
#define ailiaOpenWeightFile ailiaOpenWeightFileA |
#define ailiaSetTemporaryCachePath ailiaSetTemporaryCachePathA |
typedef struct _AILIAEnvironment AILIAEnvironment |
typedef struct _AILIAShape AILIAShape |
int AILIA_API ailiaCopyBlobData | ( | struct AILIANetwork * | dst_net, |
unsigned int | dst_blob_idx, | ||
struct AILIANetwork * | src_net, | ||
unsigned int | src_blob_idx | ||
) |
指定したBlob間でデータをコピーします
dst_net | コピー先のblobが含まれるネットワークオブジェクトポインター |
dst_blob_idx | コピー先のblobのインデックス |
src_net | コピー元のblobが含まれるネットワークオブジェクトポインター |
src_blob_idx | コピー元のblobのインデックス |
指定したネットワークのBlobをコピーします。コピー元とコピー先のネットワークは別のものを指定することができます。 コピー先のBlobは入力Blobのインデックスを、コピー元のBlobは任意のBlobのインデックスを指定してください。 コピー先にその他のBlobを指定した場合 AILIA_STATUS_INVALID_ARGUMENT が返ります。 このAPIはailiaOpenWeighXXX呼び出し後より利用可能です。
int AILIA_API ailiaCreate | ( | struct AILIANetwork ** | net, |
int | env_id, | ||
int | num_thread | ||
) |
ネットワークオブジェクトを作成します。
net | ネットワークオブジェクトポインタへのポインタ |
env_id | 計算に利用する推論実行環境のID( ailiaGetEnvironment() で取得) AILIA_ENVIRONMENT_ID_AUTO にした場合は自動で選択する |
num_thread | スレッド数の上限( AILIA_MULTITHREAD_AUTO にした場合は自動で設定) |
ネットワークオブジェクトを作成します。 推論実行環境を自動にした場合はCPUモードになり、BLASが利用できる場合はBLASを利用します。 なお、BLASを利用する場合num_threadは無視される場合があります。
void AILIA_API ailiaDestroy | ( | struct AILIANetwork * | net | ) |
ネットワークオブジェクトを破棄します。
net | ネットワークオブジェクトポインタ |
int AILIA_API ailiaDisableLayerFusion | ( | struct AILIANetwork * | net | ) |
推論時のレイヤー統合を無効化します
net | ネットワークオブジェクトポインタ |
レイヤー統合により取得できなくなるBlobを取得する必要がある場合などに用います。 ailiaCreate() の直後に指定する必要があります。ailiaOpenを呼び出した後は変更することができません。 なお、レイヤー統合を無効化すると推論速度が低下する場合があります。
int AILIA_API ailiaFinalize | ( | void | ) |
ailiaがグローバルに確保したGPUリソース等を解放します
ailiaCreate() で作成したインスタンス全てを ailiaDestroy() で解放した状態で呼び出す必要があります。 それ以外の状態で呼び出された場合 #ref AILIA_STATUS_INVALID_STATE を返します。 Windows 環境の場合、DllMain 等からこの API を呼び出すとデッドロックする可能性があります。
int AILIA_API ailiaFindBlobIndexByName | ( | struct AILIANetwork * | net, |
unsigned int * | blob_idx, | ||
const char * | name | ||
) |
推論時の内部データ(Blob)のインデックスを名前で探し取得します。
net | ネットワークオブジェクトポインタ |
blob_idx | blobのインデックス (0~ ailiaGetBlobCount() -1) |
name | 検索するBlob名 |
このAPIはailiaOpenStreamXXX呼び出し後より利用可能です。 なお、ailiaOpenStreamXXX呼び出し時は入出力Blobのみが検索可能です。中間Blobを検索する場合ailiaOpneWeightXXXを呼び出す必要があります。
int AILIA_API ailiaFindBlobNameByIndex | ( | struct AILIANetwork * | net, |
char * | buffer, | ||
const unsigned int | buffer_size, | ||
const unsigned int | blob_idx | ||
) |
推論時の内部データ(Blob)の名前をインデックスで探し取得します。
net | ネットワークオブジェクトポインタ |
buffer | Blob名の出力先バッファ |
buffer_size | バッファのサイズ(終端null文字分を含む) |
blob_idx | 検索するblobのインデックス |
このAPIはailiaOpenStreamXXX呼び出し後より利用可能です。 なお、ailiaOpenStreamXXX呼び出し時は入出力Blobのみが検索可能です。中間Blobを検索する場合ailiaOpneWeightXXXを呼び出す必要があります。
int AILIA_API ailiaGetBlobCount | ( | struct AILIANetwork * | net, |
unsigned int * | blob_count | ||
) |
推論時の内部データ(Blob)の数を取得します。
net | ネットワークオブジェクトポインタ |
blob_count | blobの数の格納先 |
このAPIはailiaOpenStreamXXX呼び出し後より利用可能です。 なお、ailiaOpenStreamXXX呼び出し時は入出力Blobのみが列挙され、ailiaOpneWeightXXX呼び出し時に中間Blobの列挙が行われます。 そのためailiaOpenStreamXXX呼び出し直後とailiaOpneWeightXXX呼び出し直後で返答する数が変わる場合があります。
int AILIA_API ailiaGetBlobData | ( | struct AILIANetwork * | net, |
void * | dest, | ||
unsigned int | dest_size, | ||
unsigned int | blob_idx | ||
) |
推論時の内部データ(Blob)を取得します。
net | ネットワークオブジェクトポインタ |
dest | 推論結果の書き出し先バッファにX,Y,Z,Wの順でnumeric型で格納 |
dest_size | 推論結果の書き出し先バッファのbyte数 |
blob_idx | blobのインデックス (0~ ailiaGetBlobCount() -1) |
ailiaPredict() または ailiaUpdate() を一度も実行していない場合は AILIA_STATUS_INVALID_STATE が返ります。
int AILIA_API ailiaGetBlobDataType | ( | struct AILIANetwork * | net, |
int * | type, | ||
unsigned int | blob_idx | ||
) |
推論時の内部データ(Blob)の型を取得します。
net | ネットワークオブジェクトポインタ |
type | データ型の書き出し先バッファ。値は AILIA_DATATYPE_XXX で定義されています。 |
blob_idx | blobのインデックス (0~ ailiaGetBlobCount() -1) |
このAPIはailiaOpenWeighXXX呼び出し後より利用可能です。
int AILIA_API ailiaGetBlobDim | ( | struct AILIANetwork * | net, |
unsigned int * | dim, | ||
unsigned int | blob_idx | ||
) |
推論時の内部データ(Blob)の次元を取得します。
net | ネットワークオブジェクトポインタ |
dim | blobの次元の格納先 |
blob_idx | blobのインデックス (0~ ailiaGetBlobCount() -1) |
このAPIはailiaOpenWeighXXX呼び出し後より利用可能です。
int AILIA_API ailiaGetBlobIndexByInputIndex | ( | struct AILIANetwork * | net, |
unsigned int * | blob_idx, | ||
unsigned int | input_blob_idx | ||
) |
入力データ(Blob)のインデックスを取得します
net | ネットワークオブジェクトポインタ |
blob_idx | blobのインデックス(0~ ailiaGetBlobCount() -1) |
input_blob_idx | 入力blob内でのインデックス(0~ ailiaGetInputBlobCount() -1) |
このAPIはailiaOpenStreamXXX呼び出し後より利用可能です。 なお、ailiaOpenStreamXXX呼び出し時に列挙されたinput_blob_idx及びblob_idxは保持されるためailiaOpneWeightXXX呼び出し後も同じ値が返ることが保証されます。
int AILIA_API ailiaGetBlobIndexByOutputIndex | ( | struct AILIANetwork * | net, |
unsigned int * | blob_idx, | ||
unsigned int | output_blob_idx | ||
) |
出力データ(Blob)のインデックスを取得します
net | ネットワークオブジェクトポインタ |
blob_idx | blobのインデックス(0~ ailiaGetBlobCount() -1) |
output_blob_idx | 出力blob内でのインデックス(0~ ailiaGetOutputBlobCount() -1) |
このAPIはailiaOpenStreamXXX呼び出し後より利用可能です。
int AILIA_API ailiaGetBlobNameLengthByIndex | ( | struct AILIANetwork * | net, |
const unsigned int | blob_idx, | ||
unsigned int * | buffer_size | ||
) |
内部データ(Blob)の名前の出力に必要なバッファのサイズを取得します。
net | ネットワークオブジェクトポインタ |
blob_idx | blobのインデックス (0~ ailiaGetBlobCount() -1) |
buffer_size | Blob名の出力に必要なバッファのサイズ(終端null文字分を含む) |
このAPIはailiaOpenStreamXXX呼び出し後より利用可能です。 なお、ailiaOpenStreamXXX呼び出し時は入出力Blobのみが検索可能です。中間Blobを検索する場合ailiaOpneWeightXXXを呼び出す必要があります。
int AILIA_API ailiaGetBlobShape | ( | struct AILIANetwork * | net, |
AILIAShape * | shape, | ||
unsigned int | blob_idx, | ||
unsigned int | version | ||
) |
推論時の内部データ(Blob)の形状を取得します。
net | ネットワークオブジェクトポインタ |
shape | データの形状情報の格納先 |
blob_idx | blobのインデックス (0~ ailiaGetBlobCount() -1) |
version | AILIA_SHAPE_VERSION |
形状が5次元以上の場合は ailiaGetBlobDim() 、 ailiaGetBlobShapeND() を利用してください。 このAPIはailiaOpenWeighXXX呼び出し後より利用可能です。
int AILIA_API ailiaGetBlobShapeND | ( | struct AILIANetwork * | net, |
unsigned int * | shape, | ||
unsigned int | dim, | ||
unsigned int | blob_idx | ||
) |
推論時の内部データ(Blob)の形状を取得します。
net | ネットワークオブジェクトポインタ |
shape | blobの各次元の大きさの格納先配列(dim-1, dim-2, ... ,1, 0順で格納) |
dim | shapeの次元 |
blob_idx | blobのインデックス (0~ ailiaGetBlobCount() -1) |
このAPIはailiaOpenWeighXXX呼び出し後より利用可能です。
int AILIA_API ailiaGetEnvironment | ( | AILIAEnvironment ** | env, |
unsigned int | env_idx, | ||
unsigned int | version | ||
) |
計算環境の一覧を取得します
env | 計算環境情報の格納先(ライブラリを解放するまで有効) |
env_idx | 計算環境情報のインデックス(0~ ailiaGetEnvironmentCount() -1) |
version | AILIA_ENVIRONMENT_VERSION |
int AILIA_API ailiaGetEnvironmentCount | ( | unsigned int * | env_count | ) |
利用可能な計算環境(CPU, GPU)の数を取得します
env_count | 計算環境情報の数の格納先 |
const char* AILIA_API ailiaGetErrorDetail | ( | struct AILIANetwork * | net | ) |
エラーの詳細を返します
net | ネットワークオブジェクトポインタ |
返値は解放する必要はありません。 文字列の有効期間は次にailiaのAPIを呼ぶまでです。 モデルが暗号化されている場合は空文字を返します。
int AILIA_API ailiaGetInputBlobCount | ( | struct AILIANetwork * | net, |
unsigned int * | input_blob_count | ||
) |
入力データ(Blob)の数を取得します。
net | ネットワークオブジェクトポインタ |
input_blob_count | 入力blobの数の格納先 |
このAPIはailiaOpenStreamXXX呼び出し後より利用可能です。 なお、入力Blobの列挙はailiaOpenStreamXXX呼び出し時に行われますが変更可能な重み(input付きinitialzier)の列挙はailiaOpneWeightXXX呼び出し時に行われます。 そのためailiaOpenStreamXXX呼び出し直後とailiaOpneWeightXXX呼び出し直後で返答する数が変わる場合があります。
int AILIA_API ailiaGetInputDim | ( | struct AILIANetwork * | net, |
unsigned int * | dim | ||
) |
推論時の入力データの次元を取得します。
net | ネットワークオブジェクトポインタ |
dim | 入力データの次元の格納先 |
このAPIはailiaOpenWeighXXX呼び出し後より利用可能です。
int AILIA_API ailiaGetInputShape | ( | struct AILIANetwork * | net, |
AILIAShape * | shape, | ||
unsigned int | version | ||
) |
推論時の入力データの形状を取得します。
net | ネットワークオブジェクトポインタ |
shape | 入力データの形状情報 |
version | AILIA_SHAPE_VERSION |
形状が5次元以上の場合は ailiaGetInputDim() 、 ailiaGetInputShapeND() を利用してください。 形状の一部が未確定の場合、該当する次元の値は0となり、それ以外の次元の値は有効な値が格納されます。 このAPIはailiaOpenWeighXXX呼び出し後より利用可能です。
int AILIA_API ailiaGetInputShapeND | ( | struct AILIANetwork * | net, |
unsigned int * | shape, | ||
unsigned int | dim | ||
) |
推論時の入力データの形状を取得します。
net | ネットワークオブジェクトポインタ |
shape | 入力データの各次元の大きさの格納先配列(dim-1, dim-2, ... ,1, 0順で格納) |
dim | shapeの次元 |
形状の一部が未確定の場合、該当する次元の値は0となり、それ以外の次元の値は有効な値が格納されます。 このAPIはailiaOpenWeighXXX呼び出し後より利用可能です。
int AILIA_API ailiaGetOutputBlobCount | ( | struct AILIANetwork * | net, |
unsigned int * | output_blob_count | ||
) |
出力データ(Blob)の数を取得します。
net | ネットワークオブジェクトポインタ |
output_blob_count | 出力blobの数の格納先 |
このAPIはailiaOpenStreamXXX呼び出し後より利用可能です。
int AILIA_API ailiaGetOutputDim | ( | struct AILIANetwork * | net, |
unsigned int * | dim | ||
) |
推論時の出力データの次元を取得します。
net | ネットワークオブジェクトポインタ |
dim | 出力データの次元の格納先 |
このAPIはailiaOpenWeighXXX呼び出し後より利用可能です。
int AILIA_API ailiaGetOutputShape | ( | struct AILIANetwork * | net, |
AILIAShape * | shape, | ||
unsigned int | version | ||
) |
推論時の出力データの形状を取得します。
net | ネットワークオブジェクトポインタ |
shape | 出力データの形状情報 |
version | AILIA_SHAPE_VERSION |
int AILIA_API ailiaGetOutputShapeND | ( | struct AILIANetwork * | net, |
unsigned int * | shape, | ||
unsigned int | dim | ||
) |
推論時の出力データの形状を取得します。
net | ネットワークオブジェクトポインタ |
shape | 出力データの各次元の大きさの格納先配列(dim-1, dim-2, ... ,1, 0順で格納) |
dim | shapeの次元 |
このAPIはailiaOpenWeighXXX呼び出し後より利用可能です。
int AILIA_API ailiaGetSelectedEnvironment | ( | struct AILIANetwork * | net, |
AILIAEnvironment ** | env, | ||
unsigned int | version | ||
) |
選択された計算環境を取得します
net | ネットワークオブジェクトポインタ |
env | 計算環境情報の格納先(ライブラリを解放するまで有効) |
version | AILIA_ENVIRONMENT_VERSION |
const char* AILIA_API ailiaGetStatusString | ( | int | status_code | ) |
ステータスコードに対応する文字列を返します。
status_code | ステータスコード |
返値は解放する必要はありません。 返された文字列は ailia のライブラリ(ailia.dll, libailia.so 等)をアンロードするまで有効です。 AILIANetwork のインスタンスがある場合は ailiaGetErrorDetail() でエラーの詳細を取得できます。
int AILIA_API ailiaGetSummaryLength | ( | struct AILIANetwork * | net, |
unsigned int * | buffer_size | ||
) |
ネットワークSummary用に必要なバッファのサイズを取得します。
net | ネットワークオブジェクトポインタ |
buffer_size | バッファのサイズの格納先(終端null文字分を含む) |
このAPIはailiaOpenWeighXXX呼び出し後より利用可能です。
const char* AILIA_API ailiaGetVersion | ( | void | ) |
ライブラリバージョンを取得します
返値は解放する必要はありません。
int AILIA_API ailiaOpenStreamEx | ( | struct AILIANetwork * | net, |
const void * | fopen_args, | ||
ailiaFileCallback | callback, | ||
int | version | ||
) |
ネットワークオブジェクトを初期化します。(ユーザ定義ファイルアクセスコールバック)
net | ネットワークオブジェクトポインタ |
fopen_args | AILIA_USER_API_FOPEN に通知される引数ポインタ |
callback | ユーザ定義ファイルアクセスコールバック関数構造体 |
version | ファイルアクセスコールバック関数構造体のバージョン( AILIA_FILE_CALLBACK_VERSION ) |
ファイルから読み込み、ネットワークオブジェクトを初期化します。
int AILIA_API ailiaOpenStreamFileA | ( | struct AILIANetwork * | net, |
const char * | path | ||
) |
ネットワークオブジェクトを初期化します。(ファイルから読み込み)
net | ネットワークオブジェクトポインタ |
path | prototxtファイルのパス名(MBSC or UTF16) |
ファイルから読み込み、ネットワークオブジェクトを初期化します。
int AILIA_API ailiaOpenStreamFileW | ( | struct AILIANetwork * | net, |
const wchar_t * | path | ||
) |
int AILIA_API ailiaOpenStreamMem | ( | struct AILIANetwork * | net, |
const void * | buf, | ||
unsigned int | buf_size | ||
) |
ネットワークオブジェクトを初期化します。(メモリから読み込み)
net | ネットワークオブジェクトポインタ |
buf | prototxtファイルのデータへのポインタ |
buf_size | prototxtファイルのデータサイズ |
メモリから読み込み、ネットワークオブジェクトを初期化します。
int AILIA_API ailiaOpenWeightEx | ( | struct AILIANetwork * | net, |
const void * | fopen_args, | ||
ailiaFileCallback | callback, | ||
int | version | ||
) |
ネットワークオブジェクトに重み係数を読み込みます。(ユーザ定義ファイルアクセスコールバック)
net | ネットワークオブジェクトポインタ |
fopen_args | AILIA_USER_API_FOPEN に通知される引数ポインタ |
callback | ユーザ定義ファイルアクセスコールバック関数構造体 |
version | ファイルアクセスコールバック関数構造体のバージョン( AILIA_FILE_CALLBACK_VERSION ) |
ファイルからネットワークオブジェクトに重み係数を読み込みます。
int AILIA_API ailiaOpenWeightFileA | ( | struct AILIANetwork * | net, |
const char * | path | ||
) |
ネットワークオブジェクトに重み係数を読み込みます。(ファイルから読み込み)
net | ネットワークオブジェクトポインタ |
path | protobuf/onnxファイルのパス名(MBSC or UTF16) |
ファイルからネットワークオブジェクトに重み係数を読み込みます。
int AILIA_API ailiaOpenWeightFileW | ( | struct AILIANetwork * | net, |
const wchar_t * | path | ||
) |
int AILIA_API ailiaOpenWeightMem | ( | struct AILIANetwork * | net, |
const void * | buf, | ||
unsigned int | buf_size | ||
) |
ネットワークオブジェクトに重み係数を読み込みます。(メモリから読み込み)
net | ネットワークオブジェクトポインタ |
buf | protobuf/onnxファイルのデータへのポインタ |
buf_size | protobuf/onnxファイルのデータサイズ |
メモリからネットワークオブジェクトに重み係数を読み込みます。
int AILIA_API ailiaPredict | ( | struct AILIANetwork * | net, |
void * | dest, | ||
unsigned int | dest_size, | ||
const void * | src, | ||
unsigned int | src_size | ||
) |
推論を行い推論結果を取得します。
net | ネットワークオブジェクトポインタ |
dest | 推論結果の書き出し先バッファにX,Y,Z,Wの順でnumeric型で格納 サイズはネットファイルのoutputSizeとなる |
dest_size | 推論結果の書き出し先バッファのbyte数 |
src | 推論データ X,Y,Z,Wの順でnumeric型で格納 サイズはネットファイルのinputSizeとなる |
src_size | 推論データのbyte数 |
このAPIはailiaOpenWeighXXX呼び出し後より利用可能です。
int AILIA_API ailiaSetInputBlobData | ( | struct AILIANetwork * | net, |
const void * | src, | ||
unsigned int | src_size, | ||
unsigned int | blob_idx | ||
) |
指定したBlobに入力データを与えます。
net | ネットワークオブジェクトポインタ |
src | 推論データ X,Y,Z,Wの順でnumeric型で格納 |
src_size | 推論データのbyte数 |
blob_idx | 入力するblobのインデックス |
複数入力があるネットワークなどで入力を指定する場合に用います。 blob_idxで入力レイヤーのblob以外のものを指定した場合、 AILIA_STATUS_INVALID_ARGUMENT が返ります。 このAPIはailiaOpenWeighXXX呼び出し後より利用可能です。
int AILIA_API ailiaSetInputBlobShape | ( | struct AILIANetwork * | net, |
const AILIAShape * | shape, | ||
unsigned int | blob_idx, | ||
unsigned int | version | ||
) |
指定したBlobの形状を変更します。
net | ネットワークオブジェクトポインタ |
shape | 入力データの形状情報 |
blob_idx | 変更するblobのインデックス |
version | AILIA_SHAPE_VERSION |
複数入力があるネットワークなどで入力形状を変更する場合に用います。 blob_idxは入力レイヤーのblob以外のものを指定した場合 AILIA_STATUS_INVALID_ARGUMENT が返ります。 その他の注意点は ailiaSetInputShape() の解説を参照してください。 入力形状のランクが5次元以上の場合は ailiaSetInputBlobShapeND() を利用してください。 このAPIはailiaOpenWeighXXX呼び出し後より利用可能です。
int AILIA_API ailiaSetInputBlobShapeND | ( | struct AILIANetwork * | net, |
const unsigned * | shape, | ||
const unsigned | dim, | ||
unsigned int | blob_idx | ||
) |
指定したBlobの形状を変更します。
net | ネットワークオブジェクトポインタ |
shape | 入力データの各次元の大きさの配列(dim-1, dim-2, ... ,1, 0) |
dim | shapeの次元 |
blob_idx | 変更するblobのインデックス |
複数入力があるネットワークなどで入力形状を変更する場合に用います。 blob_idxは入力レイヤーのblob以外のものを指定した場合 AILIA_STATUS_INVALID_ARGUMENT が返ります。 その他の注意点は ailiaSetInputShapeND() の解説を参照してください。 このAPIはailiaOpenWeighXXX呼び出し後より利用可能です。
int AILIA_API ailiaSetInputShape | ( | struct AILIANetwork * | net, |
const AILIAShape * | shape, | ||
unsigned int | version | ||
) |
推論時の入力データの形状を変更します。
net | ネットワークオブジェクトポインタ |
shape | 入力データの形状情報 |
version | AILIA_SHAPE_VERSION |
prototxtで定義されている入力形状を変更します。 prototxtに記述されているランクと同じにする必要があります。 なお、重み係数の形状が入力形状に依存しているなどによりエラーが返る場合があります。 prototxtで定義されているランクが4次元未満の場合は未使用の要素に1を設定する必要があります。 prototxtで定義されているランクが5次元以上の場合は ailiaSetInputShapeND() を利用してください。 このAPIはailiaOpenWeighXXX呼び出し後より利用可能です。
int AILIA_API ailiaSetInputShapeND | ( | struct AILIANetwork * | net, |
const unsigned int * | shape, | ||
unsigned int | dim | ||
) |
推論時の入力データの形状を変更します。
net | ネットワークオブジェクトポインタ |
shape | 入力データの各次元の大きさの配列(dim-1, dim-2, ... ,1, 0) |
dim | shapeの次元 |
prototxtで定義されている入力形状を変更します。 prototxtに記述されているランクと同じにする必要があります。 なお、重み係数の形状が入力形状に依存しているなどによりエラーが返る場合があります。 このAPIはailiaOpenWeighXXX呼び出し後より利用可能です。
int AILIA_API ailiaSetMemoryMode | ( | struct AILIANetwork * | net, |
unsigned int | mode | ||
) |
推論時のメモリの使用方針を設定します
net | ネットワークオブジェクトポインタ |
mode | メモリモード(論理和で複数指定可) AILIA_MEMORY_XXX (デフォルト: AILIA_MEMORY_REDUCE_CONSTANT ) |
メモリの使用方針を変更します。 AILIA_MEMORY_NO_OPTIMIZATION 以外を指定した場合は、 推論時に確保する中間バッファーを開放するため、推論時のメモリ使用量を削減することができます。 ailiaCreate() の直後に指定する必要があります。ailiaOpenを呼び出した後は変更することができません。 なお、中間バッファーを開放するように指定した場合、該当するBlobに対し、 ailiaGetBlobData() を呼び出すと AILIA_STATUS_DATA_HIDDEN エラーが返ります。
int AILIA_API ailiaSetProfileMode | ( | struct AILIANetwork * | net, |
unsigned int | mode | ||
) |
プロファイルモードをセットします
net | ネットワークオブジェクトポインタ |
mode | プロファイルモード |
プロファイルモードを指定します。デフォルトは無効です。 ailiaOpenStreamXXXを呼び出したあとに呼び出してください。 プロファイルモードを有効にした場合、 ailiaSummary() の出力にプロファイル結果が追加されます。
int AILIA_API ailiaSetTemporaryCachePathA | ( | const char * | cache_dir | ) |
一時キャッシュディレクトリを指定します
cache_dir | 一時キャッシュディレクトリ |
指定したキャッシュディレクトリは推論実行環境毎に最適化したマシンコードを生成して保存するためにシステムが利用します。 ailia の実行開始時に一度だけ呼び出してください。二回目以降の呼び出しに対しては無視して成功を返します。 複数スレッドから呼び出された場合も内部で排他制御しているので特に問題は発生しません。 Vulkan のシェーダーキャッシュ機能など、この API を呼ぶまで利用できないものがあります。 cache_dirにはContext.getCacheDir()で取得したファイルパスを指定してください。
int AILIA_API ailiaSetTemporaryCachePathW | ( | const wchar_t * | cache_dir | ) |
int AILIA_API ailiaSummary | ( | struct AILIANetwork * | net, |
char *const | buffer, | ||
const unsigned int | buffer_size | ||
) |
各Blobの名前と形状を表示します。
net | ネットワークオブジェクトポインタ |
buffer | Summaryの出力先 |
buffer_size | 出力バッファのサイズ(終端null文字分を含む)。 ailiaGetSummaryLength() で取得した値を設定してください。 |
このAPIはailiaOpenWeighXXX呼び出し後より利用可能です。
int AILIA_API ailiaUpdate | ( | struct AILIANetwork * | net | ) |
事前に指定した入力データで推論を行います。
net | ネットワークオブジェクトポインタ |
ailiaSetInputBlobData() を用いて入力を与えた場合などに用います。 推論結果は ailiaGetBlobData() で取得してください。 このAPIはailiaOpenWeighXXX呼び出し後より利用可能です。