This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGe15836361cdf: [clang-nvlink-wrapper] Add documentation in
clang docs (authored by saiislam).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D109225/new/
https://reviews.llvm.org/D109225
Files:
clang/docs/ClangNvlinkWrapper.rst
clang/docs/ReleaseNotes.rst
clang/docs/index.rst
clang/tools/clang-nvlink-wrapper/ClangNvlinkWrapper.cpp
Index: clang/tools/clang-nvlink-wrapper/ClangNvlinkWrapper.cpp
===================================================================
--- clang/tools/clang-nvlink-wrapper/ClangNvlinkWrapper.cpp
+++ clang/tools/clang-nvlink-wrapper/ClangNvlinkWrapper.cpp
@@ -13,7 +13,7 @@
/// These temp (*.cubin) files are passed to nvlink, because nvlink does not
/// support linking of archive files implicitly.
///
-/// During linking of heteregenous device archive libraries, the
+/// During linking of heterogeneous device archive libraries, the
/// clang-offload-bundler creates a device specific archive of cubin files.
/// Such an archive is then passed to this tool to extract cubin files before
/// passing to nvlink.
@@ -60,7 +60,7 @@
std::vector<std::unique_ptr<MemoryBuffer>> ArchiveBuffers;
ErrorOr<std::unique_ptr<MemoryBuffer>> BufOrErr =
- MemoryBuffer::getFileOrSTDIN(Filename, -1, false);
+ MemoryBuffer::getFileOrSTDIN(Filename, false, false);
if (std::error_code EC = BufOrErr.getError())
return createFileError(Filename, EC);
Index: clang/docs/index.rst
===================================================================
--- clang/docs/index.rst
+++ clang/docs/index.rst
@@ -80,6 +80,7 @@
ClangFormat
ClangFormatStyleOptions
ClangFormattedStatus
+ ClangNvlinkWrapper
ClangOffloadBundler
Design Documents
Index: clang/docs/ReleaseNotes.rst
===================================================================
--- clang/docs/ReleaseNotes.rst
+++ clang/docs/ReleaseNotes.rst
@@ -147,7 +147,8 @@
OpenMP Support in Clang
-----------------------
-- ...
+- ``clang-nvlink-wrapper`` tool introduced to support linking of cubin files archived in an archive. See :doc:`ClangNvlinkWrapper`.
+
CUDA Support in Clang
---------------------
Index: clang/docs/ClangNvlinkWrapper.rst
===================================================================
--- /dev/null
+++ clang/docs/ClangNvlinkWrapper.rst
@@ -0,0 +1,57 @@
+====================
+Clang Nvlink Wrapper
+====================
+
+.. contents::
+ :local:
+
+.. _clang-nvlink-wrapper:
+
+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 :doc:`ClangOffloadBundler` 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.
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits