CMake管理CUDA并使用cuSOLVER等

一、出现问题

我在使用官方案例的时候,使用VS2022+CMake管理编译的时候出现如下的错误:

在这里插入图片描述

官方CMakeLists.txt:


cmake_minimum_required(VERSION 3.9)set(ROUTINE bicgstab)project("${ROUTINE}_example"DESCRIPTION  "GPU-Accelerated Sparse Linear Algebra"HOMEPAGE_URL "https://docs.nvidia.com/cuda/cusparse/index.html"LANGUAGES    C CXX CUDA)find_package(CUDA REQUIRED)add_executable(${ROUTINE}_example)target_sources(${ROUTINE}_examplePUBLIC ${PROJECT_SOURCE_DIR}/${ROUTINE}_example.c
)target_include_directories(${ROUTINE}_examplePUBLIC ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}
)link_directories(${CUDA_LIB_PATH})
message(STATUS ${CUDA_LIB_PATH})
target_link_libraries(${ROUTINE}_examplePUBLIC cudart cusparse cublas
)

二、解决问题

开始我觉得是不是find_package(CUDA REQUIRED)这里有一些bug,不能将CUDA一些库的目录正确设置,所以我又添加了:

link_directories("C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\lib\x64")

然后无效!

我在互联网上查找原因,发现可能是由于目录有空格导致的,需要在空格前使用转移字符:\

link_directories("C:\Program/ Files\NVIDIA/ GPU/ Computing/ Toolkit\CUDA\v12.3\lib\x64")

然后仍然无效!!

关键方案


然后查找官方文档:(有这么一段)链接
CUDA Runtime Library
The CUDA Runtime library (cudart) are what most applications will typically need to link against to make any calls such as cudaMalloc, and cudaFree.
Targets Created:
CUDA::cudart
CUDA::cudart_static


于是最后我的CMakeLists.txt改写成如下:


cmake_minimum_required(VERSION 3.9)set(ROUTINE bicgstab)project("${ROUTINE}_example"DESCRIPTION  "GPU-Accelerated Sparse Linear Algebra"HOMEPAGE_URL "https://docs.nvidia.com/cuda/cusparse/index.html"LANGUAGES    C CXX CUDA)find_package(CUDAToolkit REQUIRED)add_executable(${ROUTINE}_example)target_sources(${ROUTINE}_examplePUBLIC ${PROJECT_SOURCE_DIR}/${ROUTINE}_example.c
)target_include_directories(${ROUTINE}_examplePUBLIC ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}
)link_directories(${CUDA_LIB_PATH})
message(STATUS ${CUDA_LIB_PATH})
target_link_libraries(${ROUTINE}_examplePUBLIC CUDA::cudart CUDA::cusparse CUDA::cublas
)

完成编译并运行!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/262755.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT plus 的平替:9个可以联网的免费AI搜索引擎

ChatGPT plus 的平替:9个可以联网的免费AI搜索引擎。 由于ChatGPT 训练数据截止到2021年9月,在该时间点之后发生的事件,ChatGPT均无法给出答复。所以,大家现在都非常期待ChatGPT能够联网,访问实时的信息。 ChatGPT pl…

Python爬虫-报错requests.exceptions.SSLError: HTTPSConnectionPool

在学习python爬虫,在公司运行代码没有问题,但是下班回来把代码拉下来运行,却出现问题。 问题: requests.exceptions.SSLError: HTTPSConnectionPool(host‘campusgateway.51job.com’, port443): Max retries exceeded with url…

【NodeRed】常用节点记录(loop、PostgreSQL、子流程、日志)

【NodeRed】常用节点记录(loop、PostgreSQL、子流程、日志) 前言loopPostgreSQLnumber of rows per messagesql 几种写法SQL query templateDynamic SQL queriesParameterized queries 子流程状态节点怎么用? 日志 前言 在看了公司nodeRed 系…

虚拟机Ubuntu系统上安装Pycharm(详细图文教程)

这里写目录标题 一、安装包下载二、安装Pycharm三、启动并配置Pycharm3.1 启动3.2 创建桌面快捷键3.2.1 打开工程后添加桌面快捷键 3.3 安装汉化包 四、创建新的工程项目五、总结 一、安装包下载 Pycharm的官网地址:Pycharm官网 打开官网后的样子如下:…

零基础备考PMP,需要多长时间?

PMP是一门专业性很强的项目管理知识,考试当然是有一定的难度,但是也没有难到让你怀疑人生的程度。 如果你在学习PMP之前,已经有一些经验,那么备考一个半月基本上是没多大问题的,如果你是零基础小白,那么备…

CSP-J 2023 复赛第4题:旅游巴士

【题目来源】https://www.luogu.com.cn/problem/P9751https://www.acwing.com/problem/content/description/5313/【题目描述】 小 Z 打算在国庆假期期间搭乘旅游巴士去一处他向往已久的景点旅游。 旅游景点的地图共有 n 处地点,在这些地点之间连有 m 条道路。 其中…

Linux设备模型(二) - kset/kobj/ktype APIs

一,kobject_init_and_add 1,kobject_init_and_add实现 /** * kobject_init_and_add() - Initialize a kobject structure and add it to * the kobject hierarchy. * kobj: pointer to the kobject to initialize * ktype: p…

【风格迁移】CAST:对比学习,从图像特征而非其二阶统计量(Gram矩阵)中学习风格

CAST:对比学习,从图像特征而非其二阶统计量(Gram矩阵)中学习风格 提出背景5 why 分析5 so分析 CAST 框架多层风格投影器领域增强模块生成网络 效果对比 StyleGAN 提出背景 论文:https://arxiv.org/pdf/2205.09542.pdf…

初始化(挂载)Linux数据盘(小于2TB)

本文中的操作系统以Linux CentOS 7.5 64位操作系统为例,采用fdisk分区工具为数据盘设置分区。 前提条件 已成功挂载云硬盘。 创建磁盘分区 如果数据盘对外呈现为一个磁盘,不需要分区,可以跳过此步骤。 1.登录Linux实例。 2.运行如下命令&…

QT中的多线程有什么作用?

概述 在学习QT线程的时候我们首先要知道的是QT的主线程,也叫GUI线程,意如其名,也就是我们程序的最主要的一个线程,主要负责初始化界面并监听事件循环,并根据事件处理做出界面上的反馈。但是当我们只限于在一个主线程上…

【Docker实操】部署php项目

概述 最终达成的容器部署结构和原理如下图: 一、获取nginx、php官方镜像 docker pull nginx //拉取nginx官方镜像 docker pull php:7.4-fpm //拉取php官方镜像需要获取其他可用的php版本,可以上【docker hub】搜索【php】,所有的【xxx-fp…

VSCODE使用Django 页面和渲染

https://code.visualstudio.com/docs/python/tutorial-django#_use-a-template-to-render-a-page 通过模板渲染页面 文件 实现步骤 1, 修改代码,hello的App名字增加到installed_apps表中。 2, hello子目录下,创建 .\templates\…

「C语言进阶1」动态内存分配

目录 一、动态内存分配是什么? 二、为什么需要动态内存分配? 三、怎么进行动态内存分配? 1. malloc 2. calloc 3. realloc a. realloc功能解析 b. 内存泄漏和内存块被截断问题 c. 总结 4. free 四、使用动态内存分配常见的问题 【面试题】 一…

Jenkins的使用GIT(4)

Jenkins的使用GIT 20211002 我们使用 Jenkins 集成外部 Git 仓库,实现对真实代码的拉取和构建。在这里,我们选用 Coding/Github/Gitee 等都可以作为我们的代码源 1 生成公钥私钥 首先,我们先来配置公钥和私钥。这是 Jenkins 访问 Git 私有库…

C#,计算几何,计算机图形学(Computer Graphics)洪水填充算法(Flood Fill Algorithm)与源代码

1 泛洪填充算法(Flood Fill Algorithm) 泛洪填充算法(Flood Fill Algorithm) ,又称洪水填充算法,是在很多图形绘制软件中常用的填充算法,最熟悉不过就是 windows 自带画图软件的油漆桶功能。 2 源程序 using System; using System.Collecti…

10. Linux系统中wifi适配器找不到的解决方案

1. 说明 在linux系统中开启一个热点,一般有两种方式。一种使用create_ap在命令行中进行创建,另一种就是在系统自带的操作界面中手动开启。当手动开启热点时,有时会遇到wifi适配器找不到的问题,本博客记录一种可解决此问题的参考方…

高速稳定、网络隔离,解析“向日葵控控”远控方案在医疗行业应用

在医疗大健康领域,依托高速发展的信息化技术加速布局智能化,通过远程手段提高医疗服务质量、促进医疗资源共享、提升医疗工作效率,已成为医院和各类社区诊所等提供关键医疗服务部门近年来的发展目标之一。 同时,根据医疗领域的特殊…

测试开源C#人脸识别模块DlibDotNet

百度“C# 换脸”找到参考文献4,发现其中使用DlibDotNet检测并识别人脸(之前主要用的是ViewFaceCore),DlibDotNet是Dlib的.net封装版本,后者为开源C工具包,支持机器学习算法、图像处理等算法以支撑各类高级应…

如何系统地自学 Python?

目录 Python 数据类型 控制结构 函数和模块 文件操作 异常处理 类和对象 列表推导式和生成器 匿名函数和高阶函数 面向对象编程 总结 Python Python是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行…

SQL库操作

1、创建数据库 概念 创建数据库:根据项目需求创建一个存储数据的仓库 使用create database 数据库名字创建 数据库层面可以指定字符集:charset/character set 数据库层面可以指定校对集:collate 创建数据库会在磁盘指定存放处产生一个文件夹 创建语法 create …