을 찾을 수없는이 내 첫 번째 질문 ;-)NVCC는 gcc가 내장 내장 함수
내가 CUDA 응용 프로그램 (ccminer)에서 AVX를 사용하려고하지만, NVCC는 오류가 표시됩니다
/usr/local/cuda/bin/nvcc -Xcompiler "-Wall -mavx" -O3 -I . -Xptxas "-abi=no -v" -gencode=arch=compute_50,code=\"sm_50,compute_50\" --maxrregcount=80 --ptxas-options=-v -I./compat/jansson -o x11/x11.o -c x11/x11.cu
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/avxintrin.h(118): error: identifier "__builtin_ia32_addpd256" is undefined
[가. ..]
이것은 첫 번째 오류 일뿐입니다. 많은 '정의되지 않은'내장 함수가 있습니다 :-(
'C/C++'프로그램의 경우 .c 또는 .cpp 확장자를 사용하는 것이 좋습니다. 그러나 .cu-error :-(내가 뭘 잘못 했습니까? . ccminer를 컴파일하지만 파일 .CU하는 AVX의 내장 함수에 추가 할 수 없습니다 -... 내가 인텔 내장 함수를 사용하는 경우에만이 .c 파일을하지 GCC
어떤 도움이 크게 감사합니다 감사합니다 사전에
리눅스 민트 (우분투 13) 64 비트, gcc 4.8.1, cuda 6.5.
AVX가 GPU에서 작동하지 않을 것으로 예상하고 있습니다 .cu 파일에는 벡터화 할 작은 부분의 CPU 기반 코드가 있습니다.
다음은 오류를 재현하는 예입니다. 가지고 오류
nvcc cudahello.cu -Xcompiler -mavx
:
을 http://computer-graphics.se/hello-world-for-cuda.html 시작 부분에/usr/lib/gcc/x86_64-linux-gnu/4.8/include/avxintrin.h(118): error: identifier "__builtin_ia32_addpd256" is undefined
추가 된 행 : 나는에서 간단한 예제를했다
#include <immintrin.h>
와 명령으로 컴파일 시도
동일한 코드가없는 #include <immintrin.h>
은 문제없이 컴파일됩니다. 오류를 얻을 수
nvcc cudahello.cu -Xcompiler -mavx
와
#include <stdio.h>
#if defined(__AVX__)
#include <immintrin.h>
#endif
const int N = 16;
const int blocksize = 16;
__global__
void hello(char *a, int *b)
{
a[threadIdx.x] += b[threadIdx.x];
}
int main()
{
char a[N] = "Hello \0\0\0\0\0\0";
int b[N] = {15, 10, 6, 0, -11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
char *ad;
int *bd;
const int csize = N*sizeof(char);
const int isize = N*sizeof(int);
printf("%s", a);
cudaMalloc((void**)&ad, csize);
cudaMalloc((void**)&bd, isize);
cudaMemcpy(ad, a, csize, cudaMemcpyHostToDevice);
cudaMemcpy(bd, b, isize, cudaMemcpyHostToDevice);
dim3 dimBlock(blocksize, 1);
dim3 dimGrid(1, 1);
hello<<<dimGrid, dimBlock>>>(ad, bd);
cudaMemcpy(a, ad, csize, cudaMemcpyDeviceToHost);
cudaFree(ad);
cudaFree(bd);
printf("%s\n", a);
return EXIT_SUCCESS;
}
컴파일 또는
nvcc cudahello.cu
것은 깨끗한 컴파일하기로 : 여기
는 전체 코드입니다.
Intel AVX 명령어가 nVidia GPU에서 어떻게 작동 할 것으로 기대합니까? –
조금 더 명확하게하기 위해 질문을 편집 한 것을 볼 수 있습니다. CPU 특정 코드를 .cu 파일에서 .c/.cpp 파일로 이동하거나 CPU 전용으로 조건부로 컴파일해야합니다. –
@ PaulR 일반적인 조언입니다. 답변을 제공하고 싶습니까 (나는 upvote). –