J'essaie d'utiliser __shfl_xor dans mon noyau mais quand j'essaie de le compiler, j'obtiens l'erreur "error: l'identificateur" __shfl_xor "est indéfini". Je suis conscient que vous devez définir le drapeau arch=compute_30,code=sm_30
pour l'utiliser, mais je l'ai déjà ajouté que dans mon CMakeLists.txtUtiliser __shfl_xor dans mon noyau CUDA mais obtenir une erreur lors de la compilation
Voici mon noyau:
__global__ void dummy_kernel()
{
int x = 5;
int y = 10;
__shfl_xor(x, y);
}
est ici la sortie du compilateur:
/filepath/kernel_file.cu(13): error: identifier "__shfl_xor" is undefined
Voici ce que mon CMakeLists.txt ressemble:
cmake_minimum_required(VERSION 3.1)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE)
endif()
find_package(CUDA REQUIRED)
cuda_add_executable(CasHashing3D
MatchPairGPU.cu
)
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_30,code=sm_30")
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_35,code=sm_35")
set_property(TARGET CasHashing3D PROPERTY CXX_STANDARD 11)
set_property(TARGET CasHashing3D PROPERTY CXX_STANDARD_REQUIRED ON)
configure_file(job.sh.in job.sh @ONLY)
Le Le fichier makefile généré par CMake est trop volumineux pour être collé dans la question, alors voici a link dans le fichier.
À quoi ressemble la version complète de 'CUDA_NVCC_FLAGS'? Vous ajoutez à eux, mais probablement vous avez déjà une architecture là-bas qui ne supporte pas les shuffle intrinsèques. – tera
@tera J'ai Tesla K20Xm qui est 3.5 donc ça devrait aller. 3 ou plus est requis. CMakeLists.txt définit 'CUDA_NVCC_FLAGS' à la valeur' -gencode arch = compute_30, code = sm_30'. – Rabee
@talonmies J'ai édité la réponse pour inclure un noyau simple et aussi l'erreur du compilateur. – Rabee