调用 CUDA 编译.dll从 R - .C 与 .叫
calling CUDA compiled .dll from R - .C vs .Call
通过遵循此NVidia博客条目,我在Windows 7 x64 dll下创建了一个CUDA函数。该函数定义如下:
extern "C" __declspec(dllexport) void gvectorAdd(double *A, double *B, double *C, int *n)
我可以使用以下命令从 R(v3.2.3 64 位)中成功调用它:
a <- c(1,2,3,4)
b <- c(5,6,7,8)
c <- c(0,0,0,0)
n <- length(c)
path.dll <- "cuda_r_1.dll"
dyn.load(path.dll)
c <- .C("gvectorAdd",
as.numeric(a),
as.numeric(b),
as.numeric(c),
as.integer(n),
PACKAGE="cuda_r_1"
)[[3]]
我相信我应该使用.Call
而不是.C
.但是,当我在上面的代码中将.C(...)
替换为.Call(...)
时,R 会话崩溃。
有人可以指出我正确的方向吗?
你应该
更喜欢使用.Call
,但.C
和.Call
接口是不同的 - .Call
期望所有参数都有SEXP。有关更多详细信息,请参阅 https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Interface-functions-_002eCall-and-_002eExternal。
换句话说,如果要移动到.Call
界面,则需要更改gvectorAdd
功能。
相关文章:
- 编译时未启用intel oneApi CUDA支持
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 编译 CUDA 与数学函数的叮当
- 通过Python Distutils(用于Python C扩展)使用可重定位的设备代码编译CUDA代码
- 如何在Visual Studio中为CUDA项目启用单独的编译
- 使用 msvc 15 在 Qt5.13 中编译 CUDA 代码
- Cuda 编译错误:已定义类模板
- CUDA 编译错误:未定义__hmul和__hneg
- 安装后CUDA编译错误
- OpenCV源与CUDA编译生成多个定义链接错误
- CUDA 8 编译错误与 -std=gnu++11
- 使用CUDA编译OpenCV示例程序时出错
- 调用 CUDA 编译.dll从 R - .C 与 .叫
- CUDA 编译错误在 Linux 上,但 Windows Visual Studio 成功了
- 如何将其他 .o、.so、.a 文件链接到当前的 cuda 编译
- 链接 CUDA 编译与使用提升的代码时出现问题
- CUDA编译问题
- 在Mavericks上用CUDA编译OpenCV 2.4.9
- 在一个简单的cuda编译中出错
- CUDA C编译错误:全局函数中不允许使用new操作符