C コードで提供される関数は次のとおりです。
-
xrtURStart()
- 指定された ID のアクティビティの測定範囲の開始時刻を設定します。関数シグネチャは、次のとおりです。
void xrtURStart(unsigned int id, const char* label, const char* tooltip)
-
xrtUREnd()
- 指定された ID で測定範囲の終了時刻をマークします。関数シグネチャは、次のとおりです。
void xrtUREnd(unsigned int id)
-
xrtUEMark()
- 特定の時点で発生するイベントをマークし、指定したラベルをタイムライン トレースに追加します。関数シグネチャは、次のとおりです。
void xrtUEMark(const char* label)
xrtURStart()
および xrtUREnd()
関数を使用して、時間追跡をすぐに開始し、開始/終了呼び出しをペアリングする ID を指定して、ユーザー範囲を定義します。user_range
関数の使用方法の詳細は、次のとおりです。
- 1 つの ID の開始/終了範囲は、別の ID のほかの開始/終了範囲内で指定できます。
- 必ずプロファイルする開始/終了範囲の ID が一致していることを確認してください。 重要: 同じ ID で
xrtURStart
およびxrtUREnd
への複数の呼び出しがあると、予期しない動作が発生する可能性があります。 - ユーザー範囲にはラベルを付けてタイムラインに追加できるほか、ユーザー範囲の上にカーソルを置くと表示されるツールヒントを含めることができます。
xrtUEMark()
を呼び出すと、イベントの時点でタイムライン トレース上にユーザー マーカーが作成されます。
-
xrtUEMark()
では、イベントのラベルを指定できます。ラベルはタイムラインにマークと共に表示されます。 - ラベルに
NULL
を使用すると、ラベルのないマークを追加できます。
コードの例は次のとおりです。
int main(int argc, char* argv[]) {
58
59 xrtURStart(0, "Software execution", "Whole program execution") ;
60 ...
61 //TARGET_DEVICE macro needs to be passed from gcc command line
62 if(argc != 2) {
63 std::cout << "Usage: " << argv[0] <<" <xclbin>" << std::endl;
64 return EXIT_FAILURE;
65 }
....
153 q.enqueueTask(krnl_vector_add);
154
155 // The result of the previous kernel execution will need to be retrieved in
156 // order to view the results. This call will transfer the data from FPGA to
157 // source_results vector
158 q.enqueueMigrateMemObjects({buffer_result},CL_MIGRATE_MEM_OBJECT_HOST);
159 ····
160 q.finish();
161
162 xrtUEMark("Starting verification") ;
163