尝试将cuda与其他应用程序链接的新手。我正在尝试编译一个Maya插件,并在插件中链接cuda 11。我得到了同样的错误,已经列出了很多次,但修复似乎不再有效。这是一个直接的插件。
我有一个displace.cuh文件,它包含在我的插件的.cu文件和.cpp文件中。
#include “cuda.h”
#include “cuda_runtime.h”
void cu_displace();
int cuda_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 coden”);
}
int cuda_displace() {
dim3 blocks(DIM/16,DIM/16);
dim3 threads(16,16);
//
displace<<<blocks, threads>>>();
return 0;
}
我得到了所有不同类型的错误,这些错误与Cuda中的错误相同。
C:Program FilesAutodeskMaya2021includemaya/MTypes.h(219): note: see declaration of ‘double4’
然而,尝试这个
namespace cuda {
#include “cuda.h”
#include “cuda_runtime.h”
}
给出这些错误。
C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.0includecuda_runtime.h(310): error C2039: ‘cudaEventCreateWithFlags’: is no
t a member of ‘global namespace'' C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.0includecuda_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})
如有任何帮助,我们将不胜感激。
我现在可以让它工作了。我删除了
#include "cuda.h"
#include "cuda_runtime.h"
来自.cuh文件。并将其添加到cmake文件中
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} ${CUDA_INCLUDE_DIRS})
link_directories(${MAYA_LIBRARY_DIR} ${CUDA_LIBS})
add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES})
target_link_libraries(${PROJECT_NAME} ${MAYA_LIBRARIES} ${CUDA_LIBRARIES})