标签: nvcc

编译GPU的C++程序的一部分

是否可以将带有nvcc的GPU编译(C++)代码转换为共享对象(.so文件)并从C++程序动态加载它(在本例中,Cern的ROOT,它本质上是一个C++解释器("CINT")) ).

我想要运行的一个简单示例是:

extern "C"
void TestCompiled() {
  printf("test\n");
  exit(0); 
}
Run Code Online (Sandbox Code Playgroud)

这段代码是用nvcc --compiler-options '-fPIC' -o TestCompiled_C.so --shared TestCompiled.cu.编译的.使用以下命令将共享对象加载到ROOT:

{ // Test.C program
  int error, check;
  check = gROOT->LoadMacro("TestCompiled_C.so", &error);
  cout << "check " << check << " " << " error: " << error << endl;
  TestCompiled();  // run macro
  exit(0); 
}
Run Code Online (Sandbox Code Playgroud)

加载库好,但找不到TestCompiled():

$ root -b -l Test.C
root [0] 
Processing Test.C...
check 0  error: 0
Error: Function Hello() is not defined …
Run Code Online (Sandbox Code Playgroud)

c++ dynamic-linking nvcc

8
推荐指数
1
解决办法
1381
查看次数

cuda与mingw - 更新

我们一直在linux中开发代码,但是想编译一个windows可执行文件.旧的非gpu版本与windows中的mingw编译得很好,所以我希望我能够用CUDA版本做同样的事情.

策略是在visual studio中使用nvcc编译内核代码,其余部分在mingw中使用gcc编译.

到目前为止,我们在visual studio中轻松编译了.cu文件(内核和内核启动).但是,我们仍然无法在mingw中编译c代码.c代码包含cuda api调用,例如cudaMalloccuda类型cudaEvent_t,因此我们必须包括cuda.h和cuda_runtime.h.但是,gcc会为这些标头提供警告和错误,例如:

../include/host_defines.h:57:0: warning: "__cdecl" redefined
Run Code Online (Sandbox Code Playgroud)

../include/vector_functions.h:127:14: error: 'short_4' has no member named 'x'
Run Code Online (Sandbox Code Playgroud)

关于如何包含这些头文件并编译代码的c部分的任何想法?

cuda mingw nvcc

7
推荐指数
1
解决办法
7921
查看次数

NVCC 5.0和OpenACC

根据NVIDIA网站:

"CUDA工具包补充并完全支持使用OpenACC指令进行编程."

这是否意味着可以使用编译nvcc器编译OpenACC程序(pargma和API)?或者它意味着只支持运行时例程调用?

不幸的是,我现在无法安装CUDA Toolkit 5.0来获得我的答案.谢谢!

cuda nvcc openacc

7
推荐指数
1
解决办法
2080
查看次数

如何在可分离编译后将主机代码与静态CUDA库链接?

好吧,我有一个非常令人不安的CUDA 5.0问题,关于如何正确地链接事物.我真的很感激任何帮助!

使用CUDA 5.0的可分离编译功能,我生成了一个静态库(*.a).当通过nvcc运行时,这与其他*.cu文件很好地链接,我已经多次这样做了.

我现在想要获取一个*.cpp文件,并使用g ++或其他方法将其链接到此静态库中的主机代码,但不是nvcc.如果我尝试这个,我会遇到编译错误

对__cudaRegisterLinkedBinary的未定义引用

我正在使用两者-lcuda并且据-lcudart我所知,库的顺序正确(含义-lmylib -lcuda -lcudart).我不认为这是一个问题.也许我错了,但我觉得我错过了一步,我需要对我的静态库(设备链接?)做一些其他事情才能使用g ++.

我错过了至关重要的事吗?这甚至可能吗?

奖金问题:我希望最终结果是一个动态库.我怎样才能做到这一点?

cuda g++ dynamic-linking nvcc static-linking

7
推荐指数
1
解决办法
1万
查看次数

nvcc.exe链接错误无法找到Microsoft Visual Studio配置文件'vcvars64.bat'

我想nvcc -ptx从Windows命令行使用,但我总是收到此错误消息:nvcc:致命错误:无法找到Microsoft Visual Studio配置文件'vcvars64.bat'安装在'C:\ Program Files(x86)\ Microsoft Visual S tudio 11.0\VC\bin /../ ..'

我正在使用vs 2012快递版.什么可以解决方案?

cuda nvcc visual-studio-2012

7
推荐指数
2
解决办法
9531
查看次数

如何在Ipython Notebook上使用我的GPU?

操作系统:Ubuntu 14.04LTS
语言:Python Anaconda 2.7(keras,theano)
GPU:GTX980Ti CUDA:CUDA 7.5

我想通过使用我的GPU(GTX980Ti)在IPython Notebook上运行keras python代码
但是我找不到它.

我想测试下面的代码.当我把它运行到Ubuntu终端时,我命令如下(它使用GPU很好.它没有任何问题)

首先,我设置如下的路径

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH 
Run Code Online (Sandbox Code Playgroud)

其次,我运行如下代码

THEANO_FLAGS='floatX=float32,device=gpu0,nvcc.fastmath=True'  python myscript.py
Run Code Online (Sandbox Code Playgroud)


它运行良好.

但是当我在pycharm(python IDE)上运行代码或者当我在Ipython Notebook上运行它时,它不使用gpu.它只使用CPU

myscript.py代码如下.

from theano import function, config, shared, sandbox
import theano.tensor as T
import numpy
import time
vlen = 10 * 30 * 768  # 10 x #cores x # threads per core
iters = 1000
rng = numpy.random.RandomState(22)
x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
f = function([], T.exp(x))
print(f.maker.fgraph.toposort())
t0 = time.time()
for i in xrange(iters): …
Run Code Online (Sandbox Code Playgroud)

ipython nvcc theano keras

7
推荐指数
1
解决办法
8605
查看次数

CUDA 版本不匹配

我尝试卸载 CUDA 10 并安装 9.2。现在nvcc -V返回 9.2,但显示nvidia-smiCUDA 10.0。

知道为什么会发生这种情况或如何解决吗?在我的系统上找不到与 10.0 相关的任何其他内容。

编辑:添加了截图作为对 nvidia 员工的回复,显示nvidia-smi清楚地说明了 CUDA 版本..

在此处输入图片说明

cuda nvidia multiple-versions nvcc ubuntu-16.04

7
推荐指数
0
解决办法
2964
查看次数

在 cuda 的 nvcc 编译器中使用 C++20

我正在尝试使用库std::countr_zero()中的函数<bitset>,但我不确定应该如何配置我的 nvcc 编译器,因为我确定它没有使用 C++20 版本。

cuda nvcc c++20

7
推荐指数
1
解决办法
4495
查看次数

OS X 10.9.5上的nvcc + c2hs

我正在构建一个需要nvcc编译的软件.我没有支持CUDA的GPU,但实际上我并不需要它 - 朋友正在Linux上构建完全相同的软件,他没有CUDA GPU,但一切都很好.

我从https://developer.nvidia.com/cuda-downloads(cuda_6.5.14_mac_64.pkg)安装了最新的CUDA工具包,没有任何问题.但是当我构建软件时,我遇到了问题.

我能够以较小的规模重现这个问题:

$ mkdir temp; cd temp; cabal sandbox init


$ cabal get cuda
Unpacking to cuda-0.6.5.0/


$ cd cuda-0.6.5.0/Foreign/CUDA/Analysis


$ c2hs -d trace --cpp=/Developer/NVIDIA/CUDA-6.5/bin/nvcc --cppopts=-ccbin --cppopts=/usr/bin/clang --cppopts=-Xcompiler --cppopts=--stdlib=libstdc++ Device.chs
Attempting to read file `Device.chs'...
...parsing `Device'...
...successfully loaded `Device'.
Invoking cpp as `/Developer/NVIDIA/CUDA-6.5/bin/nvcc -E -x c -ccbin /usr/bin/clang -Xcompiler --stdlib=libstdc++ -U__BLOCKS__ -DC2HS_MIN_VERSION(mj,mn,rv)=(mj<=0&&mn<=18&&rv<=2) Device.chs.h'...
In file included from <built-in>:170:
<command line>:3:29: error: …
Run Code Online (Sandbox Code Playgroud)

haskell cuda nvidia nvcc c2hs

6
推荐指数
1
解决办法
341
查看次数

CMake:通过 NVCC 传递编译器标志列表

我正在尝试编译一些 CUDA,并且希望显示编译器警告。相当于:

g++ fish.cpp -Wall -Wextra
Run Code Online (Sandbox Code Playgroud)

除了 NVCC 不理解这些,你必须通过它们:

nvcc fish.cu --compiler-options -Wall --compiler-options -Wextra
nvcc fish.cu --compiler-options "-Wall -Wextra"
Run Code Online (Sandbox Code Playgroud)

(我喜欢后一种形式,但最终,这并不重要。)

鉴于此 CMakeLists.txt (一个非常精简的示例):

cmake_minimum_required(VERSION 3.9)
project(test_project LANGUAGES CUDA CXX)

list(APPEND cxx_warning_flags "-Wall" "-Wextra") # ... maybe others

add_compile_options("$<$<COMPILE_LANGUAGE:CUDA>:--compiler-options ${cxx_warning_flags}>")
add_executable(test_cuda fish.cu)
Run Code Online (Sandbox Code Playgroud)

但这扩展到:

nvcc "--compiler-options  -Wall" -Wextra   ...
Run Code Online (Sandbox Code Playgroud)

这显然是错误的。(省略生成器表达式周围的引号只会让我们陷入破碎的扩展地狱。)

...跳过蒙特卡洛编程的数千次迭代...

我已经到达了这个宝石:

set( temp ${cxx_warning_flags} )
string (REPLACE ";" " " temp "${temp}")
set( temp2 "--compiler-options \"${temp}\"" )
message( "${temp2}" )
Run Code Online (Sandbox Code Playgroud)

打印出看起来令人鼓舞的

--compiler-options "-Wall -Wextra"
Run Code Online (Sandbox Code Playgroud)

但是之后

add_compile_options("$<$<COMPILE_LANGUAGE:CUDA>:${temp2}>")
Run Code Online (Sandbox Code Playgroud)

扩展到:

nvcc "--compiler-options \"-Wall …
Run Code Online (Sandbox Code Playgroud)

cuda cmake nvcc

6
推荐指数
1
解决办法
3108
查看次数