首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义对“cudaGetDeviceCount”的引用未定义对“cudaGetDeviceProperties”的引用

未定义对“cudaGetDeviceCount”的引用未定义对“cudaGetDeviceProperties”的引用
EN

Stack Overflow用户
提问于 2018-11-27 10:37:02
回答 1查看 2.1K关注 0票数 0

checkGPU.cpp:

代码语言:javascript
复制
#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是:

代码语言:javascript
复制
.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

最后,成功,错误是:

代码语言:javascript
复制
Undefined reference to ‘cudaGetDeviceCount’ Undefined reference to ‘cudaGetDeviceProperties’
EN

回答 1

Stack Overflow用户

发布于 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");很可能不会为您做太多事情。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53491948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档