checkGPU.cpp:
#include<iostream>
#include "cuda_runtime_api.h"
#include "device_launch_parameters.h"
#include <stdio.h>
int main()
{
cudaDeviceProp prop;
int count;
cudaGetDeviceCount(&count);
// cudaGetDeviceCount(&count);//获取设备数
for(int i=0;i<count;i++)
{
cudaGetDeviceProperties(&prop,i);//将第i个GPU数据放到prop中
std::cout<<"显卡名称:"<<prop.name<<std::endl;
std::cout<<"显存大小:"<<prop.totalGlobalMem/1024/1024<<" MB"<<std::endl;
std::cout<<"一个block的共享内存大小:"<<prop.sharedMemPerBlock/1024<<" KB"<<std::endl;
std::cout<<"block最大线程数:"<<prop.maxThreadsPerBlock<<std::endl;
}
system("pause");
return 0;
}
makefile是:
.PHONY: clean, all
CC=gcc
CXX=g++
CFLAGS=-Wall -g -O3
INCLUDE=-I./ \
-I/usr/local/cuda-9.0/include
LIBS =-L/usr/lib -lcuda
OBJS= checkGPU.o
all:
make checkGPU
checkGPU: checkGPU.o
$(CXX) -std=c++11 checkGPU.o -o checkGPU $(LIBS) $(OBJS)
.cpp.o:
$(CXX) -std=c++11 $(INCLUDE) -fPIC -c $< -o $@
clean:
-rm *.o
-rm checkGPU
最后,做到这一点,错误是:
Undefined reference to ‘cudaGetDeviceCount’ Undefined reference to ‘cudaGetDeviceProperties’
答案 0 :(得分:2)
cudaGetDeviceCount()
和cudaGetDeviceProperties()
是CUDA Runtime API的一部分。要使用这些,您必须链接libcudart。 libcuda是CUDA Driver API,基本上是使用CUDA的完全不同的方式。尽管it is possible to mix都是两个API,但只有在绝对必要时才是更好的选择。就您而言,您似乎只是打算只使用CUDA Runtime API。在这种情况下,只需链接-lcudart
而不是-lcuda
。
除此之外,请注意,system("pause");
很可能对您没有多大帮助,因为您似乎正在使用Linux…