簡體   English   中英

當我們有 2 個帶有 NVLink 硬件組件的 NVIDIA/CUDA GPU 卡時如何正確使用 -Xnvlink 編譯器選項

[英]How to properly use the -Xnvlink compiler options when we have 2 NVIDIA/CUDA GPU cards with NVLink hardware component

在 Debian 10 上,我有 2 個帶有 NVlink 硬件組件的 GPU 卡 RTX A6000,我希望受益於這兩張卡的潛在組合功能。

目前,我有以下由 Makefile 調用的 magma.make :

CXX = nvcc -std=c++17 -O3
LAPACK = /opt/intel/oneapi/mkl/latest
LAPACK_ANOTHER=/opt/intel/mkl/lib/intel64
MAGMA = /usr/local/magma
INCLUDE_CUDA=/usr/local/cuda/include
LIBCUDA=/usr/local/cuda/lib64

SEARCH_DIRS_INCL=-I${MAGMA}/include -I${INCLUDE_CUDA} -I${LAPACK}/include
SEARCH_DIRS_LINK=-L${LAPACK}/lib/intel64 -L${LAPACK_ANOTHER} -L${LIBCUDA} -L${MAGMA}/lib

CXXFLAGS = -c -DMAGMA_ILP64 -DMKL_ILP64 -m64 ${SEARCH_DIRS_INCL}

LDFLAGS = ${SEARCH_DIRS_LINK} -lmkl_intel_lp64 -lmkl_gnu_thread -lmkl_core -lgomp -lcuda -lcudart -lcublas -lmagma -lpthread -lm -ldl -Xnvlink

SOURCES = main_magma.cpp XSAF_C_magma.cpp
EXECUTABLE = main_magma.exe

如您所見,我使用了最后一個標志-Xnvlink但它在編譯時生成以下錯誤:

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
make: *** [Makefile:10: main_magma.exe] Error 1

如何使用正確的標志或選項將 2 GPU 與 NVLink 的組合電源調用包含在可執行文件中?

我使用了最后一個標志 -Xnvlink ...

讓我們查閱一些文檔

The following table lists some useful nvlink options which can be specified with nvcc option --nvlink-options.

4.2.9.2.1. --disable-warnings (-w)
Inhibit all warning messages.

4.2.9.2.2. --preserve-relocs (-preserve-relocs)
Preserve resolved relocations in linked executable.

4.2.9.2.3. --verbose (-v)
Enable verbose mode which prints code generation statistics.

4.2.9.2.4. --warning-as-error (-Werror)
Make all warnings into errors.

4.2.9.2.5. --suppress-arch-warning (-suppress-arch-warning)
Suppress the warning that otherwise is printed when object does not contain code for target arch.

4.2.9.2.6. --suppress-stack-size-warning (-suppress-stack-size-warning)
Suppress the warning that otherwise is printed when stack size cannot be determined.

4.2.9.2.7. --dump-callgraph (-dump-callgraph)
Dump information about the callgraph and register usage.

從該文本中可以明顯看出,該選項用於在編譯期間控制設備鏈接器的行為,而這與硬件互連技術NVLINK沒有任何關系。

如何使用正確的標志或選項將 2 GPU 與 NVLink 的組合電源調用包含在可執行文件中?

沒有標志或選項。 沒有編譯器輔助的多 GPU 支持。 您必須編寫自己的多 GPU 代碼,或者使用有人為您編寫的庫。 如果您的可執行文件中存在這樣的多 GPU 代碼,則它可以在編譯期間無需任何特殊的編譯器選項或標志即可工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM