offload-arch: Print offload architecture(s) for current system, or
print offload runtime capabilities of current system, or lookup information about offload architectures, or print offload requirements for an application binary
Usage:
offload-arch [ Options ] [ Optional lookup-value ] With no options, offload-arch prints the value for the first visible offload-arch in the system. This can be used by various clang frontends. For example, to compile for openmp offloading on your current system, invoke clang with the following command: clang -fopenmp -fopenmp-targets=`offload-arch` foo.c If an optional lookup-value is specified, offload-arch will check if the value is either a valid offload-arch or a codename and display associated values with that offload-arch or codename. For example, this provides all information for offload-arch gfx906: offload-arch gfx906 -v
Options:
-m Print device code name (often found in pci.ids file) -n Print numeric pci-id -t Print clang offload triple to use for the offload arch. -c Print offload capabilities of the current system. This option is used by the language runtime to select an image when multiple offload images are availble in the binary. A capability must exist for each requirement of the selected image. each compiled offload image built into an application binary file. -a Print values for all devices. Don't stop at first visible device. -v Verbose = -a -m -n -t For all devices, print codename, numeric value and triple The options -a and -v will show the offload-arch for all pci-ids that could offload, even if they are not visible. Otherwise, the options -m, -n, -t, or no option will only show information for the first visible device.
Other Options:
-h Print this help message -f <filename> Print offload requirements including offload-arch for each offload image compiled into an application binary file. There are aliases (symbolic links) 'amdgpu-arch', 'nvidia-arch', and 'intelhd-arch'to the offload-arch tool. These aliases return 1 if respectively, no AMD, no Nvidia, or no IntelHD GPUs are found. These aliases are useful to determine if architecture-specific offloading tests should be run, or to conditionally load archecture-specific software.
Originally authored by Greg Rodgers (@gregrodgers).
better to use LLVM or standard C++ functions for directory operations since dirent.h is not available in MSVC. Even though this utility only works on Linux for now, it is better to be platform-neutral to be ported to Windows.