61
edits
Changes
→Memory Analysis Options
[[File:New_Analysis.jpg|950px]]
== Levels of AnalyzationMemory Analysis: Speed vs Thoroughness ==
An Intel Inspector window will pop up, with different features. At the top, Intel Inspector lists 3 different types of analysis levels that can be selected.
Below are explanations of some important memory analysis options that a user may consider selecting:
[[File:MemoryAnalysisOptions.jpg|850px]]
'''Remove Duplicates''' – When this setting is on, Intel Inspector will not display all incidents of detection in the Code Location
'''Stack frame depth''' – Sets the amount of context from the stack..Powerful setting for intricate object-oriented applications.
= Example: Finding a Memory Leak =
Intel Parallel Studio can help users detect a variety of threading errors such as data race conditions, deadlocks, lock hierarchy violations, and cross-thread stack access errors. These threading errors are usually non-deterministic and can be hard to reproduce.
==='''Race Condition'''=Levels of Threading Error Analysis: Speed vs Thoroughness == An Intel Inspector window will pop up, with different features. At the top, Intel Inspector lists 3 different types of analysis levels that can be selected.
[[File:NewThreadedAnalysis.jpg|1000px]]
This setting indicates a medium-scope threading error analysis. It will increase time, resources, and load on the system when performing the analysis. This is a deeper level of analysis to find memory issues but is slightly slower. This setting will include information on data race issues.
==='''Deadlock'''=Deadlocks ==
Deadlocks can potentially happen when dealing with multi-threads. When 2 threads or more are stuck waiting for each other and trying to access the recourse but are being locked by the previous threads. In case of a deadlock, the program may run fine on the first try but the lock will eventually come up and crash the program. The following program will demonstrate deadlock occurring. The code involves resources protected by mutex locks. Their orders are m1->m2 or m2->m1. In some cases, 2 threads may cause a deadlock when they are waiting for a mutex owned by the other.
The intel inspector allows us to quickly locate where the error occurs and we can move on to debug the program and find the optimal solution.
== Race Conditions ==
Intel Inspector can be used to detect race conditions in programs. The following code is an example of race conditions occurring. In it, 5 threads are created to increment the value of an object several times. A race condition occurs when the threads race for the same data, therefore the value will be inconsistent and output different results. Normally in a data race, it becomes hard to locate data manually but with the help of Intel Inspector, it is much faster.
[[File:RaceConditions.jpg|400px]]
[[File:RaceCondition_Output.jpg|500px]]
''Values below 20000 are caused by race conditions''
Using Intel Inspector we can see where the race condition occurs in the code
[[File:RaceCondition_Inspector.jpg|800px]]
''Indicating where the data race occurs''
= Resources =