Welcome back to the oneAPI channel.​
An easier ways to create a more powerful system is to cluster systems into a one big distributed
compute machine.​
It is easier to connect 10 systems into one than than build a 10x faster machine.​
​
Two issues here, ​
One is, can my application really scale out to 10 machines?
Some algorithms are pretty serial in nature​
The second is, if I can break my code into 10 pieces, how well can these pieces communicate
data with each other ​
across these 10 compute nodes?​
ITAC, Intel Trace Analyzer and Collector, is a great tool that can help you debug MPI,
message-passing interface applications​
Let me show you how.
In previous videos we have talked about the oneAPI components.
We mentioned the multi-device multi-vendor open spec libraries..
That can now work on multiple devices, CPU, GPU and others, what we call XPUs..
And are packed into toolkits..
​
One of them is the HPC toolkit
With everything High-performance computing engineers need.
One of the tools supplied with the HPC toolkit is Intel ITAC -- Trace Analyzer and Collector
It’s pretty easy to install and to use, on Linux or Windows.​
And it can help you analyze and detect the most common issues with MPI applications ​
like algorithm correctness, deadlocks, bad communication patterns, communication imbalances
and more​
You can try it with zero installation in the intel DevCloud​
But have just downloaded the base and the HPC toolkits, it took me few clicks​
Once you have the tool it is a matter of running your application, generate a trace and open
it in the tool
It has a nice GUI with many options and views​
so you can easily navigate the timeline and get all the statistics you need; I’ll show
you in a minute
It is highly scalable even to very large systems and number of processes​
​ You can run it to debug C, C++, Fortran or
OpenSHMEM applications, ​
And there are lot’s of options, for example you can insert directives in your code to
record only portions of it, ​
The portions that are of more interest to you and by that save a lot of time and space..
And more..
Google oneAPI HPC toolkit​
And you can of course look directly for the ITAC​
I’ll go to the toolkit itself​
And under what’s included you can find the Intel trace analyzer and collector​
You can use it in the dev-cloud here​
Or download the toolkit like I did​
And under documentations you can find the reference guide, installation guide, and how
to get started guide​
In the getting starting guide you can download an example trace, ​
and find the step by step for linux and windows to get started,​
Let me show you in how it looks like​
First of course we need to run the application and generate a trace..​
I will use the example traces supplied with the oneAPI package​
Don’t forget to source the oneapi setvars script under opt/intel/oneapi​
Let’s launch the ITAC GUI, the trace analyzer​
And open a trace file, there are 4 under example/traces ​
This one for example, has mostly serial code, the blue portion of the graph, and hardly
any MPI calls.​
So let move to another trace​
This trace is spending most of its time on MPI calls.
It is all red.​
A good candidate for a debug​
But I will open something in between,​
Here, 78% of the time is spent on serial code and 21 % on MPI calls.​
And you can see that most calls are the MPI-send-receive, 7% are all reduce and so on​
Here you can see that almost 12% of the time is spent on late sender , 6% at late at barrier,
explanations below​
And let’s open the event timeline​
You can see that we have here 16 processes communicating between them​
You can see the serial local code in blue.
And in red the time spent on MPI calls​
And we can zoom in to the range of our interest​
If you know this application you can now see and check if the communication patterns make
sense to you.​
Let’s open the messages profile ​
And zoom to a specific range in time, and see that the longest time spent is between
P7 to P8 and P3 to P4​
It is also possible to drill down to a specific MPI instruction but it requires some setting
which I’m sure you’ll find.
ITAC - Intel® Trace Analyzer and Collector​
An MPI profiling and tracing tool ​
-understand and visualize the behavior of MPI code​
-identify hotspots and reasons for poor MPI performance and parallel scaling ​
A simple, power tool for debugging ​
Use it on the dev-cloud, download it, or make sure your HPC provider has ITAC already installed
for you..​
Enjoy, subscribe, thank you.