deb_guid-e (1158372), страница 5
Текст из файла (страница 5)
Explicitly specified memory area is checked by comparison its reference checksum with the current one. The reference checksum is calculated when Run-Time Library is initialized.
The initial and final addresses of code memory are specified by the program, starting Run-Time Library by means of writing these addresses to the Run-Time Library executable module. The same program calculates and writes to Run-Time Library executable module reference checksum of code memory. During its operating (in particular, when trace events occurred) Run-Time Library checks code memory, comparing its current checksum with reference one.
Controlling mechanisms of memory area checking is implemented by the following parameters of systrace.* files.
-
EveryEventCheckBound - flag to check all dynamically allocated memory blocks every time when traced event occurred.
-
EveryTraceCheckBound - flag to check all dynamically allocated memory blocks each time when trace output function is called. The checking includes the checking specified by parameter EveryEventCheckBound, because it is also performed for non-traced (disabled) events.
-
dvm_StartAddr - initial address of checked memory area when tracing.
-
dvm_FinalAddr - final address of checked memory area when tracing.
-
EveryEventCheckMem - flag to check the memory area, specified by parameters dvm_StartAddr and dvm_FinalAddr for each traced event.
-
EveryTraceCheckMem - flag to check the memory area, specified by parameters dvm_StartAddr and dvm_FinalAddr each time when trace output functions are called. The checking includes the checking, specified by parameter EveryEventCheckMem, because it is also performed for disabled trace events.
-
EveryEventCheckCodeMem -.flag to check memory area with program code for each traced event.
-
EveryTraceCheckCodeMem - flag to check memory area with program code each time when trace output functions are called. The checking includes the checking, specified by parameter EveryEventCheckCodeMem.
11.4.5Controlling output of additional information when tracing some Run-Time Library functions in extended mode
-
distr_Trace – flag to output additional information when tracing the function distr_. There are outputted abstract machine representation map, ranges of local values of indexes for each dimension of abstract machine representation, flag of replication along all dimensions of the processor system (Repl) and flag of mapping some element (the elements may be different) of abstract machine representation (Every) on each processor.
-
align_Trace - flag to output additional information when tracing the function align_. There are reported distributed array map and ranges of local values of indexes for each its dimension.
-
mappl_Trace - flag to output parallel loop map when tracing the function mappl_.
-
dopl_Trace – flag to output additional information when tracing the function dopl_. The next set of ranges of local values of indexes for each dimension of the parallel loop is output.
-
RedVarTrace –flag to output addresses, types and values of all variables of reduction group when executing functions saverv_ and strtrd_ and also at the beginning and at the end of execution of the function waitrd_.
-
OutIndexTrace – flag to output result values of indexes for each dimension of distributed array when executing internal Run-Time Library function GetIndexArray.
-
diter_Trace –flag to output index array when the function diter_ of interconnection with DVM-debugger is traced.
-
drmbuf_Trace – flag to output index array when function drmbuf_ of interconnection with DVM-debugger is traced.
12Diagnostics messages of dynamic debugger.
The common format of error messages of dynamic debugger:
(<processor number>)<context> File: <file>, Line: <line> (<count> times)<error message>
where:
| <processor number> |
| |
| <context> |
| |
| Sequential branch |
| |
| Loop( No(N1), Iter(I1,I2,…)), …, Loop( No(Nm), Iter(I1,I2,…)) |
| |
| <file> |
| |
| <line> |
| |
| <count> |
| |
| <error message> |
| |
12.1Dynamic control.
| Writing to read-only variable <var> | Writing to read-only variable is detected. |
| Using non-initialized private variable <var> | Access to non-initialized variable is detected. |
| Using non-initialized element <elem> | Access to non-initialized array element is detected. |
| Using variable <var> before asynchronous reduction competed | Access to reduction variable before reduction operation completion. |
| Access to non-local element <elem> | Access to non-local element of distributed array. |
| Writing to shadow element <elem> of array | Writing to shadow element of array. |
| Shadow element <elem> was not updated | Access to shadow elements before completion of shadow renew operation. |
| Data dependence in loop <elem> | Data dependence in parallel loop is detected. |
| WAIT for shadow renew without START | Operation of waiting for shadow renewal is issued without start of shadow renew operation. |
| Double WAIT for shadow renew | Repeated operation of waiting for shadow renewal. |
| Write to exported element before shadow renewal | Updating exported element of array before completion of shadow renewal. |
| Writing to remote data buffer <var> | Writing to remote data buffer. |
| Write to remote element <elem> in sequential branch | Access to array element in sequential branch of program without preliminary testing that the element is located on current processor. |
| WAIT for reduction without START | Waiting for asynchronous reduction completion is issued without Start asynchronous reduction. |
| Using an element outside of array <elem> | Access to element of array beyond its limits. |
12.2Trace accumulation and comparison.
| Error message | Description |
| Bad file structure | It is reported when any non-correspondence of trace or loop description file is detected. |
| Undefined keyword | It is reported if unknown keyword appears in trace or loop description file. |
| Bad command syntax | It is reported, if wrong parameters appear after keyword. |
| Can't open a file <file name> | Specified file can’t be open on reading or writing. |
| Trace file <file name> is empty | Specified trace file exists, but it is empty. |
| Bad trace structure (missing current loop) | It is reported, if iteration beginning or loop end event occurs without correspondent loop starting event. |
| No current loop | It is reported if iteration beginning or loop end event occurs without corresponding loop beginning event. |
| Unexpected iteration of loop | It is reported if iteration beginning event occurred, but there is no correspondent record in reference trace. |
| Double execution of iteration, No = <iter no> | It is reported if iteration beginning event occurs for executing loop iteration. Absolute iteration number is reported. |
| Unexpected loop execution | It is reported if loop beginning event occurs, but there is no correspondent record in reference trace. |
| Abnormal loop exit | It is reported if record of loop end is not corresponds to the record of loop beginning. |
| Unexpected use of variable | It is reported there is no record in reference trace for variable access event. |
| Unexpected trace record | It is reported there is no record in reference trace for an event of possible skip of group operators in the sequential branch. |
| Different <type> values: <standard value> != <current value> | Different values of the same variable are detected for current event and in reference trace record. |
| Different <type> values of reduction variable: <standard value> != <current value> | Different values of reduction operation are detected for current event and in reference trace record. |
13Structure of loop description file
| # Trace size = | <size of full trace file in bytes> |
| # String count = | <a number of lines of trace file> |
| SL or PL | <loop number> (<number of nesting loop>) [<loop rank>] {<file name>, <line number>} = <trace accumulation level>, (<dimension>:<first iteration>, < last iteration >, <iteration step>) | |
| # Trace size = <loop trace size in bytes for specified trace level> | ||
| # String count = <number of loop trace lines for specified trace level> | ||
| # Count of traced iterations = <number of traced loop iterations> | ||
EL: <loop number>
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
| SL or PL | <loop number> (<number of nesting loop>) [<loop rank>] {<file name>, <line number>} = <trace accumulation level>, (<dimension>:<first iteration>, < last iteration >, <iteration step>) | |
| # Trace size = <loop trace size in bytes for specified trace level> | ||
| # String count = <number of loop trace lines for specified trace level> | ||
| # Count of traced iterations = <number of traced loop iterations> | ||
14Execution trace structure.
When executions are traced, accumulated trace information consists of two parts:
-
trace header
-
trace body (may be omitted).
The header exists in trace even if the trace accumulation is disabled for whole program. Its structure looks like the structure of loop description loop, but without calculated values of trace size for whole program and for loops:
MODE = <accumulation trace level for whole program>,
| SL or PL | <loop number> (<number of nesting loop>) [<loop rank>] {<file name>, <line number>} = <trace accumulation level>, (<dimension>:<first iteration>, < last iteration >, <iteration step>) |
EL: <loop number>















