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’发布于 2018-11-27 10:45:09
cudaGetDeviceCount()和cudaGetDeviceProperties()是CUDA Runtime API的一部分。要使用它们,您必须链接libcudart。libcuda是CUDA Driver API,它基本上是一种完全不同的使用CUDA的方式。虽然it is possible to mix这两个API,但这是一个更好的东西,只有在绝对必要的时候。在您的例子中,您似乎只是打算使用CUDA Runtime API。在这种情况下,只需链接-lcudart而不是-lcuda。
除此之外,请注意,由于您似乎正在使用Linux…,因此system("pause");很可能不会为您做太多事情。
https://stackoverflow.com/questions/53491948
复制相似问题