Hey,
I’m having trouble understanding why I can’t get a simple device information CUDA program to run? I added a line that returns my device’s compute capability, and the linker is complaining that is it an undefined reference. I checked my $PATH and $LD_LIBRARY_PATH, and rgrep returns matches of cuDeviceComputeCapability in libcudart.so, which is in the path variables…
echo $PATH → /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/cuda/bin
echo $LD_LIBRARY_PATH → /usr/local/cuda/lib
rgrep cuDeviceComputeCapability /usr/local/cuda/lib →
Binary file /usr/local/cuda/lib/libcudart.so matches
Binary file /usr/local/cuda/lib/libcudart.so.2 matche…
Help would be appreciated thanks!
Spiff
#include <stdio.h>
#include "cuda.h"
int main(void)
{
struct cudaDeviceProp deviceProp;
int device = 0;
char *test;
int m, n;
if(cudaGetDeviceProperties(&deviceProp,device) == cudaSuccess)
{
cuDeviceComputeCapability(&m, &n, device);
unsigned long memory = (unsigned long)deviceProp.totalGlobalMem;
memory = memory / 1024;
memory = memory / 1024;
printf("Device Name: %s", deviceProp.name);
printf("Device Computer Capability: %d.%d", m, n);
printf("\nMem Size: %lu \n", memory);
printf("Max Threads: %d\n", deviceProp.maxThreadsPerBlock);
printf("Max Threads Dim[x?]: %d\n", deviceProp.maxThreadsDim[0]);
printf("Max Threads Dim[y?]: %d\n", deviceProp.maxThreadsDim[1]);
printf("Max Threads Dim[z?]: %d\n", deviceProp.maxThreadsDim[2]);
printf("Max Grid Size[x?]: %d\n", deviceProp.maxGridSize[0]);
printf("Max Grid Size[y?]: %d\n", deviceProp.maxGridSize[1]);
printf("Max Grid Size[z?]: %d\n", deviceProp.maxGridSize[2]);
}
}
error msg:
/tmp/tmpxft_00006a8d_00000000-11_deviceInfo.o: In function `main':
tmpxft_00006a8d_00000000-10_deviceInfo.ii:(.text+0x18c): undefined reference to `cuDeviceComputeCapability'
collect2: ld returned 1 exit status