我正在运行/usr/local/cuda-11.8/extras/CUPTI/samples/callback_profiling中Nvidia CUDA CUPTI可用的示例代码。这里有一个Makefile,但是我想使用单个命令(没有Makefile)来运行它,因为它给了我使用Makefile的权限错误。基于Makefile,这是我正在编写的命令:
nvcc --generate-line-info callback_profiling.cu -o callback_profiling -lnvperf_host -lnvperf_target -lcuda -lcupti -I/usr/local/cuda-11.8/extras/CUPTI/samples/callback_profiling/../extensions/include/profilerhost_util -I/usr/local/cuda-11.8/extras/CUPTI/samples/callback_profiling/../extensions/include/c_util -I/usr/local/cuda-11.8/extras/CUPTI/samples/callback_profiling/../../include -L /usr/local/cuda-11.8/extras/CUPTI/samples/callback_profiling/../extensions/src/profilerhost_util我收到错误了
/usr/bin/ld: /tmp/tmpxft_00005e71_00000000-11_callback_profiling.o: in function `setupProfiling(ProfilingData_t*)':
tmpxft_00005e71_00000000-6_callback_profiling.cudafe1.cpp:(.text+0xe48): undefined reference to `NV::Metric::Config::GetConfigImage(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::vector<unsigned char, std::allocator<unsigned char> >&, unsigned char const*)'
/usr/bin/ld: tmpxft_00005e71_00000000-6_callback_profiling.cudafe1.cpp:(.text+0xed3): undefined reference to `NV::Metric::Config::GetCounterDataPrefixImage(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::vector<unsigned char, std::allocator<unsigned char> >&, unsigned char const*)'
/usr/bin/ld: /tmp/tmpxft_00005e71_00000000-11_callback_profiling.o: in function `main':
tmpxft_00005e71_00000000-6_callback_profiling.cudafe1.cpp:(.text+0x2751): undefined reference to `NV::Metric::Eval::PrintMetricValues(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<unsigned char, std::allocator<unsigned char> > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, unsigned char const*)'
collect2: error: ld returned 1 exit status有人能帮我运行应用程序的正确命令吗?我有一台Ubuntu机器,带有CUDA 11.8
发布于 2022-11-19 15:45:57
有一个库(libprofilerHostUtil.a)不是作为您需要手动构建的示例构建过程的一部分构建的。
在典型的linux安装上,构建库的Makefile在/usr/local/cuda/extras/CUPTI/samples/extensions/src/profilerhost_util中。作为根用户,您应该能够进入该目录并键入make,然后构建必要的库。
一旦您这样做了,作为一个普通的用户,您应该能够像这样构建您要问的代码:
nvcc callback_profiling.cu -o callback_profiling -I/usr/local/cuda/extras/CUPTI/samples/callback_profiling/../extensions/include/profilerhost_util -I/usr/local/cuda/extras/CUPTI/samples/callback_profiling/../extensions/include/c_util -I/usr/local/cuda/extras/CUPTI/samples/callback_profiling/../../include -L /usr/local/cuda/extras/CUPTI/samples/callback_profiling/../extensions/src/profilerhost_util -L/usr/local/cuda/extras/CUPTI/lib64 -lcupti -lnvperf_host -lnvperf_target -lprofilerHostUtil -lcuda在上面的路径中看到/cuda/的任何地方,如果您还没有设置CUDA安装程序要求设置的符号链接,则可能需要将其更改为/cuda-11.8/或与安装匹配所需的任何东西。
如果您想要构建我提到的其他地方的库,请手动构建,您将需要这样做。首先,切换到指定的目录(cd /usr/local/cuda/extras/CUPTI/samples/extensions/src/profilerhost_util),然后使用这些命令,将/my/build/dir/替换为您可以写访问的位置的路径:
nvcc -c --std=c++11 -Xcompiler -fPIC -I../../../../include -I../../../../../../include -I../../include/profilerhost_util -I../../include/c_util List.cpp -o /my/build/dir/List.o
nvcc -c --std=c++11 -Xcompiler -fPIC -I../../../../include -I../../../../../../include -I../../include/profilerhost_util -I../../include/c_util Metric.cpp -o /my/build/dir/Metric.o
nvcc -c --std=c++11 -Xcompiler -fPIC -I../../../../include -I../../../../../../include -I../../include/profilerhost_util -I../../include/c_util Eval.cpp -o /my/build/dir/Eval.o
nvcc -o /my/build/dir/libprofilerHostUtil.a -lib /my/build/dir/List.o /my/build/dir/Metric.o /my/build/dir/Eval.o -lcuda -L ../../../../../../lib64 -lnvperf_host -lnvperf_target如果使用该路由,则需要将-L.添加到命令中以构建可执行文件。
https://stackoverflow.com/questions/74476105
复制相似问题