This tool displays process and thread binding in an interative web page.


1) Basic Usage

Run the hwloc-ps tool in JSON server mode:

    $ hwloc-ps --json-server
    server running on port 8888...

Export the topology as a SVG file using the native backend:

    $ lstopo filename.svg --of nativesvg

Now run the client side for displaying the binding:

    $ cd /path/to/hwloc-ps.www/
    $ node client.js /path/to/filename.svg

This should open a webpage in your browser.
Otherwise add -u to see the URL that you should open (usually http://localhost:3000).


2) Installing node.js and JS dependencies

The "node" command is available in the "nodejs" package in most Linux distributions,
but you should rather install the "npm" package to get additional utilities:

    # apt instal npm
    # yum install npm

Then install the dependencies needed by client.js:

    $ cd /path/to/hwloc-ps.www/
    $ npm install

If you don't have write-access to the hwloc-ps.www/ directory,
copy it somewhere else, run "npm install" from there,
and then run the client from there:

   $ cp -a /path/to/hwloc-ps.www/ $HOME/myhwloc-ps.www/
   $ cd $HOME/myhwloc-ps.www/
   $ npm install
   $ node client.js /path/to/filename.svg


3) Running on a remote server

This tool is often useful for debugging process placement on remote servers, hence:

* hwloc-ps and lstopo should run on that remote server
  (this requires a recent hwloc on the remote side).

* you must copy the SVG file back to your machine:

    $ scp target:/path/to/filename.svg .

* if the target machine port 8888 is not directly accessible, you may
  have to forward its 8888 port:

    $ ssh target -L 8888:localhost:8888 -Nf
