Maya和Cuda 11类型重新声明错误

问题描述

在这里尝试将cuda与其他应用程序链接起来有点麻烦。我正在尝试编译Maya插件并在该插件链接cuda 11。我遇到了多次列出的相同错误,但是修复似乎不再起作用。这是一个简单易用的插件

我的插件的.cu文件和.cpp文件中都包含一个displace.cuh文件

#include “cuda.h”
#include “cuda_runtime.h”
void cu_displace();
int cuda_displace();

一个displace.cu

#include <stdio.h>
#include “dlCudadisplace.h”
__global __ void displace() {
int x = threadIdx.x + blockIdx.x * blockDim.x;
int offset = x * blockDim.x * gridDim.x;
printf(“running cuda code\n”);
}
int cuda_displace() {
dim3 blocks(DIM/16,DIM/16);
dim3 threads(16,16);
//
displace<<<blocks,threads>>>();
return 0;
}

对于与Cuda中相同的所有各种类型,我都会得到这些错误

C:\Program Files\Autodesk\Maya2021\include\maya/MTypes.h(219): note: see declaration of ‘double4’

但是,尝试一下

namespace cuda {
#include “cuda.h”
#include “cuda_runtime.h”
}

给出这些错误

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\include\cuda_runtime.h(310): error C2039: ‘cudaEventCreateWithFlags’: is no
t a member of ‘global namespace'' C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\include\cuda_runtime.h(376): error C2039: 'cudaHostAlloc': is not a member of 'global namespace’’

我正在使用CMake来构建带有这些cuda变量的插件

find_package(Maya required)
find_package(CUDA required)
enable_language(CUDA)
set(CMAKE_CUDA_FLAGS "{CMAKE_CUDA_FLAGS} -gencode arch=compute_50,code=sm_50 -lcuda -lcudart") include_directories({MAYA_INCLUDE_DIR})
link_directories({MAYA_LIBRARY_DIR}) add_library({PROJECT_NAME} SHARED {SOURCE_FILES}) target_link_libraries({PROJECT_NAME} ${MAYA_LIBRARIES})

任何帮助将不胜感激。

解决方法

我现在可以开始工作了。我删除了

run:
   python execute.py --filename {ANY FILENAME}
.ph文件中的

。并将其添加到cmake文件中

#include "cuda.h"
#include "cuda_runtime.h"