태그: CUDA

A weird problem when using CUDA

다음은 CUDA by Example 책의 p.67에 있는 예제를 기반으로 작성한 코드이다. #include <iostream> using namespace std; #include <cuda.h> #include <cuda_runtime.h> __global__ void Add( int* a, int* b, int* c, int N ) { int idx = threadIdx.x + blockIdx.x * blockDim.x; while( idx < N ) { c[idx] = a[idx] + b[idx]; idx += blockDim.x

Conflict problem between Cuda and Maya

Maya는 MTypes.h에 short2, short3, long2, long3, int2, int3, float2, float3, double2, double3, double4 등의 자료형을 정의하여 사용한다. 용감하게도 어떠한 prefix나 namespace도 사용하지 않는다. Cuda는 vector_types.h에 int2, int3, float2, float3 등의 자료형을 정의하여 사용한다. Cuda 또한 용감하게도 어떠한 prefix나 namespace소 사용하지 않는다. Maya plug-in에서 사용하는 헤더파일(.h)에서 #include <cuda_runtime.h> 이나 #include <vector_types.h> 을 해주면 자연스럽게 충돌이 일어난다.

CUDA error: identifier “atomicAdd” is undefined

컴파일시 error: identifier “atomicAdd” is undefined와 같은 에러가 발생한다면 다음과 같이 GPU architecture 옵션을 주면 된다. Windows Visual Studio: 속성 -> CUDA Runtime API -> GPU 에서 GPU Architecture (1)에서 sm_20으로 설정 Linux: nvcc에서 -arch sm_20 옵션을 준다.