Summary

Source: https://github.com/kklmn/xrt

License: Open Source, MIT License

Path:  /opt/xray/xrt/<version> 

Documentation: https://xrt.readthedocs.io/

Citation: K. Klementiev and R. Chernikov, “Powerful scriptable ray tracing package xrt”, Proc. SPIE 9209, Advances in Computational Methods for X-Ray Optics III, 92090A;doi:10.1117/12.2061400.


Package xrt (XRayTracer) is a python software library for ray tracing and wave propagation in x-ray regime. It is primarily meant for modeling synchrotron sources, beamlines and beamline elements. Includes a GUI for creating a beamline and interactively viewing it in 3D.

Using XRT on Maxwell

To initialize the environment use the module command:

# For Version 1.3.2 or newer the module command will set the environment for AMD OpenCL on machines without Nvidia GPUs. 
#                                           and will use the Nvidia OpenCL on machines with Nvidia GPUs.
#
# For a specific version use module load xrt/<version>. For the most recent version module load xrt
#
[max-wgs]% module load xrt/1.3.2
Set CPU-only environment using AMD OpenCL for xrt v1.3.2

[max-gpu]% module load xrt
Set GPU enabled environment for xrt v1.3.2

[max]% xrtQook                   # to start the gui
[max]% python2 CoherenceBL.py    # to test one of the samples 
# --------------------------------------------------------------------------------------------------------------------------------
# For Version 1.3.0 or older you need to load the opencl module on non-gpu-nodes!
[max-wgs]% module load xrt/1.3.0 opencl/amd  

# on nodes with GPU
[max-gpu]% module load xrt/1.3.0

Using XRT with OpenCL

 XRT is capable of utilizing CPUs, GPUs as well as intels Xeon PHI via the OpenCL libraries.

  • AMD: AMDs OpenCL  works on all nodes, but can't make use of GPUs
  • INTEL: Intels OpenCL works on GPU nodes, but for XRT fails on CPU-only nodes.
  • POCL: The open source OpenCL implementation pocl is still kind of experimental and can NOT be used together with XRT.
  • NVIDIA: The Nvidia opencl implementation is only available on nodes with Nvidia graphics.

The different opencl implementations can perform quite differently on different hardware. Best way to figure the best choice is presumably by trying it out.