Мне сложно интегрировать CUDA в создателя Qt.CUDA, создатель Qt и Mac
Я уверен, что проблема связана с неправильной информацией в моем файле .pro. Я разместил свой текущий файл .pro, мой .cu-файл (DT_GPU.cu), а затем ошибки ниже этого.
Я пробовал много комбинаций файлов .pro, взятых из linux и windows, но ничего не работает. Кроме того, я никогда не видел файл Mac/CUDA .pro, так что это может быть полезным источником для будущих людей, надеющихся заставить всех трех работать вместе.
Заранее благодарим за любую помощь.
.pro файл:
CUDA_SOURCES += ../../Source/DT_GPU/DT_GPU.cu
CUDA_DIR = "/Developer/NVIDIA/CUDA-7.5"
SYSTEM_TYPE = 64 # '32' or '64', depending on your system
CUDA_ARCH = sm_21 # Type of CUDA architecture, for example 'compute_10', 'compute_11', 'sm_10'
NVCC_OPTIONS = --use_fast_math
# include paths
INCLUDEPATH += $$CUDA_DIR/include
# library directories
QMAKE_LIBDIR += $$CUDA_DIR/lib/
CUDA_OBJECTS_DIR = ./
# Add the necessary libraries
CUDA_LIBS = -lcublas_device \
-lcublas_static \
-lcudadevrt \
-lcudart_static \
-lcufft_static \
-lcufftw_static \
-lculibos \
-lcurand_static \
-lcusolver_static \
-lcusparse_static \
-lnppc_static \
-lnppi_static \
-lnpps_static
# The following makes sure all path names (which often include spaces) are put between quotation marks
CUDA_INC = $$join(INCLUDEPATH,'" -I"','-I"','"')
LIBS += $$join(CUDA_LIBS,'.so ', '', '.so')
#LIBS += $$CUDA_LIBS
# Configuration of the Cuda compiler
CONFIG(debug, debug|release) {
# Debug mode
cuda_d.input = CUDA_SOURCES
cuda_d.output = $$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}_cuda.o
cuda_d.commands = $$CUDA_DIR/bin/nvcc -D_DEBUG $$NVCC_OPTIONS $$CUDA_INC $$NVCC_LIBS --machine $$SYSTEM_TYPE -arch=$$CUDA_ARCH -c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}
cuda_d.dependency_type = TYPE_C
QMAKE_EXTRA_COMPILERS += cuda_d
}
else {
# Release mode
cuda.input = CUDA_SOURCES
cuda.output = $$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}_cuda.o
cuda.commands = $$CUDA_DIR/bin/nvcc $$NVCC_OPTIONS $$CUDA_INC $$NVCC_LIBS --machine $$SYSTEM_TYPE -arch=$$CUDA_ARCH -c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}
cuda.dependency_type = TYPE_C
QMAKE_EXTRA_COMPILERS += cuda
}
DT_GPU.cu
#include <cuda.h>
#include <cuda_runtime.h>
#include <device_launch_parameters.h>
__global__ void zero_GPU(double *l_p_array_gpu)
{
int i = threadIdx.x;
printf(" %i: Hello World!\n", i);
l_p_array_gpu[i] = 0.;
}
void zero(double *l_p_array, int a_numElements)
{
double *l_p_array_gpu;
int size = a_numElements * int(sizeof(double));
cudaMalloc((void**) &l_p_array_gpu, size);
cudaMemcpy(l_p_array_gpu, l_p_array, size, cudaMemcpyHostToDevice);
zero_GPU<<<size,1>>>(l_p_array_gpu);
cudaMemcpy(l_p_array, l_p_array_gpu, size, cudaMemcpyDeviceToHost);
cudaFree(l_p_array_gpu);
}
Предупреждения:
Makefile:848: warning: overriding commands for target `DT_GPU_cuda.o'
Makefile:792: warning: ignoring old commands for target `DT_GPU_cuda.o'
Makefile:848: warning: overriding commands for target `DT_GPU_cuda.o'
Makefile:792: warning: ignoring old commands for target `DT_GPU_cuda.o'
Ошибки:
In file included from ../SimplexSphereSource.cpp:8:
../../../Source/DT_GPU/DT_GPU.cu:75:19: error: expected expression
zero_GPU<<<size,1>>>(l_p_array_gpu);
^
../../../Source/DT_GPU/DT_GPU.cu:75:28: error: expected expression
zero_GPU<<<size,1>>>(l_p_array_gpu);
^
2 errors generated.
make: *** [SimplexSphereSource.o] Error 1
16:47:18: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project SimplexSphereSource (kit: Desktop Qt 5.4.0 clang 64bit)
When executing step "Make"
Большое спасибо за помощь, ваш пример работает в кратчайшие сроки! Теперь работаем над тем, как расширить этот пример для многих элементов (~ 10E8) вместо 5 ... – mbcx9rb9