Clang 14.0.0 documentation

Clang Nvlink Wrapper

«  Clang Linker Wrapper   ::   Contents   ::   Clang Offload Bundler  »

Clang Nvlink Wrapper¶

  • Introduction

  • Use Case

  • Working

Introduction¶

This tool works as a wrapper over the nvlink program. It is required because nvlink does not support linking of archive files implicitly. It transparently passes every input option and object to nvlink except archive files. It reads each input archive file to extract the archived cubin files as temporary files. These temporary (*.cubin) files are passed to nvlink.

Use Case¶

During linking of heterogeneous device archive libraries with an OpenMP program, the Clang Offload Bundler creates a device specific archive of cubin files. Such an archive is then passed to this wrapper tool to extract cubin files before passing to nvlink.

Working¶

Inputs

A command line generated by the OpenMP-Clang driver targeting NVPTX, containing a set of flags, cubin object files, and zero or more archive files.

Example:

clang-nvlink-wrapper main.cubin /tmp/libTest-nvptx-sm_50.a -o main-linked.out

Processing

  1. From each archive file extract all cubin files as temporary files and store their names in a list, CubinFiles.

  2. Create a new command line, NVLinkCommand, such that * Program is nvlink * All input flags are transparently passed on as flags * All input archive file are replaced with CubinFiles

  3. Execute NVLinkCommand

1. Extract (libTest-nvptx-sm_50.a) => /tmp/a.cubin /tmp/b.cubin
2. nvlink -o a.out-openmp-nvptx64 main.cubin /tmp/a.cubin /tmp/b.cubin

Output

Output file generated by nvlink which links all cubin files.

«  Clang Linker Wrapper   ::   Contents   ::   Clang Offload Bundler  »

© Copyright 2007-2022, The Clang Team. Created using Sphinx 4.1.2.