Collecting Profile Data with pyACL APIs for Extension
To collect the profile data of the user and upper-layer framework program, call the msproftx APIs (Profiling pyACL APIs for Extension) in the program to trace an application by dotting and output corresponding profile data.
Profiling pyACL APIs for Extension
API |
Description |
|---|---|
acl.prof.create_stamp |
Creates a msproftx event stamp for an instantaneous event. |
acl.prof.set_stamp_trace_message |
Sets the description in a msproftx event stamp, which is displayed in the parsed msprof_tx summary data of the Profiling tool. |
acl.prof.mark |
Marks an instantaneous event by msproftx. |
acl.prof.push |
Records the start time of the time span by msproftx when an event occurs. It is used with acl.prof.pop in pairs and can be used only in a single thread. |
acl.prof.pop |
Records the end time of the time span by msproftx when an event occurs. It is used with acl.prof.push in pairs and can be used only in a single thread. |
acl.prof.range_start |
Records the start time of the time span by msproftx when an event occurs. It is used with acl.prof.range_stop in pairs and can be used across threads. |
acl.prof.range_stop |
Records the end time of the time span by msproftx when an event occurs. It is used with acl.prof.range_start in pairs and can be used across threads. |
acl.prof.destroy_stamp |
Destroys a msproftx event stamp. |
Calling Example of Profiling pyACL APIs for Extension
The following is the sample code of the msproftx Profiling API:
- Example 1
1 2 3 4 5 6 7 8 9 10 11 12 13
for i in range(200000): stamp = acl.prof.create_stamp() if stamp == 0: print("stamp is nullptr") return FAILED msg = "test msprof tx" msg_len = len(msg) ret = acl.prof.set_stamp_trace_message(stamp, msg, msg_len) ret = acl.prof.mark(stamp) ret = acl.prof.destroy_stamp(stamp)
- Example 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
for i in range(200000): stamp = acl.prof.create_stamp() if stamp == 0: print("stamp is nullptr") return FAILED msg = "test msprof tx" msg_len = len(msg) ret = acl.prof.set_stamp_trace_message(stamp, msg, msg_len) # The acl.prof.push and acl.prof.pop APIs are used in pairs to complete single-thread collection. ret = acl.prof.push(stamp) ret = acl.prof.pop() ret = acl.prof.destroy_stamp(stamp)
- Example 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
for i in range(200000): stamp = acl.prof.create_stamp() if stamp == 0: print("stamp is nullptr") return FAILED msg = "test msprof tx" msg_len = len(msg) ret = acl.prof.set_stamp_trace_message(stamp, msg, msg_len) # The acl.prof.range_start and acl.prof.range_stop APIs are used in pairs to complete multi-thread collection. range_id = 0 range_id, ret = acl.prof.range_start(stamp) ret = acl.prof.range_stop(range_id) ret = acl.prof.destroy_stamp(stamp)
Profiling AscendCL APIs for Extension are called within the main function.