# Parallelware Trainer¶

## Introduction¶

Parallelware Trainer is an Integrated Development Environment designed to facilitate the learning, usage, and implementation of OpenMP/OpenACC parallel programming, along with the ability to test the performance improvements of particular parallel implementations.

The tool detects candidate loops for parallelizeing with OpenMP and OpenACC and provides parallel constructs for such loops.

## Using Parallelware Trainer¶

Parallelware Trainer has a graphical user interface. Thus, you need to connect to a NERSC host either using the NoMachine client or enabling X11 forwarding (with -X or -Y) if you decide to use ssh.

You’ll need to load the pwtrainer module:

module load pwtrainer


Although it is not compulsory, most of the time you will want to build and run your code from Parallelware Trainer. Therefore, you should also load the modules required to build and run your code.

You need to run Parallelware Trainer on compute nodes in an interactive batch job. This is especially true when your code is using Cray MPI, Cray SHMEM, UPC, etc., as your code will fail to run on login nodes. Note also that it is against the NERSC policy to run compute-intensive work on login nodes.

Parallelware Trainer comes with bundled examples that you can use to get to know the tool and learn different parallelization strategies. You can install them through the 'Help > Install Examples' menu option:

You can open any folder containing code to start working right away without having to do any kind of project setup. Simply go to 'File > Open Project' and open either one of the examples you installed through the Install Examples menu option or any other folder with code:

You can then open a source code file by double-clicking it in the Project explorer panel on the left. Parallelization opportunities will be shown as green circles in the corresponding line number: