thrust STL 及 cub 官方测试用例的编译 build

2023-11-05

cub项目github网址:

GitHub - NVIDIA/cub: Cooperative primitives for CUDA C++.

1. 构建  thrust

# Clone Thrust and CUB from Github. CUB is located in Thrust's
# `dependencies/cub` submodule.
git clone --recursive https://github.com/NVIDIA/thrust.git
cd thrust

# Create build directory:
mkdir build
cd build

# Configure -- use one of the following:
cmake -DTHRUST_INCLUDE_CUB_CMAKE=ON ..   # Command line interface.


# Build:
#cmake --build . -j <num jobs>   # invokes make (or ninja, etc)
make -j16

# Run tests and examples:
ctest

2. 构建 cub

(1.)注意:

不要单独git clone  ...cub.git,而应该git clone ...thrust.git  后,在dependencies/ 目录中构建cub,否则,构建系统将会去包含 系统的thrust头文件(跟随 cuda Toolkits 一起安装的thrust,路径 $ ls /usr/local/cuda/targets/x86_64-linux/include/   即会显示 thrust 和 cub 文件夹)

(2.)构建方法

$ thrust$ cd dependencies/
$ ls
#显示的内容跟cub github上的一样,其中包含一个 CMakeLists.txt

$ mkdir build
$ cd build
$ cmake ..
$ make -j16

3.构建过程中可能遇到的问题

如果使用的是较新版本的cuda,那么,无论是编译 cub还是编译 thrust 的example 和 test 等,在执行 cmake 生成Makefile时,都有可能遇到如下2个错误:

问题1. CUDA architecture

Failed to detect a default CUDA architecture.

详细为:

CMake Error at /usr/local/share/cmake-3.23/Modules/CMakeDetermineCUDACompiler.cmake:601 (message):
  Failed to detect a default CUDA architecture.



  Compiler output:

Call Stack (most recent call first):
  cmake/CubCudaConfig.cmake:1 (enable_language)
  CMakeLists.txt:83 (include)

问题2. CUDA compiler

-- The CUDA compiler identification is unknown
CMake Error at cmake/CubCudaConfig.cmake:1 (enable_language):
  No CMAKE_CUDA_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CUDACXX" or the CMake cache entry CMAKE_CUDA_COMPILER to the full
  path to the compiler, or to the compiler name if it is in the PATH.
Call Stack (most recent call first):
  CMakeLists.txt:91 (include)

解决:

因为本机是Ampere 体系架构 2080ti,故为compute catibility = 7.5,那么

在 thrust 或 cub 的顶级 CMakeLists.txt 中,在适当的行处加入如下内容:

set(CMAKE_CUDA_ARCHITECTURES 75)
set(CMAKE_CUDA_COMPILER "/usr/local/cuda/bin/nvcc")

问题3. 链接失败  ld命令失败

错误提示类似:

collect2: fatal error: ld terminated with signal 9

这是执行 make -j16 时有可能遇到的链接错误,即,ld 环节报错,这是由于同时链接多个目标,使得内存不足,交换分区不足导致的:

解决:

    1. 首先尝试放弃多线程编译, 将 make -j16 命令改为 make

    2. 尝试增大交换分区的空间,类似如下这样

sudo mkdir swapfile
cd /swapfile
sudo dd if=/dev/zero of=swap bs=1024 count=20000000
sudo mkswap -f  swap
sudo swapon swap

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

thrust STL 及 cub 官方测试用例的编译 build 的相关文章

  • 将 Linq 函数存储到变量中并动态定义?

    我有一个像这样的 Linq 查询 var results StudentsList GroupBy x gt x GroupID GroupBy x gt x Any g gt g IsQualified true Select g gt
  • 无法在 R 中安装插入符号包(在我的 Linux 机器中)

    我在尝试在 R 中安装插入符号包时遇到以下错误 g error tmp Rtmp2Tos7n R INSTALL2e6e30153a74 nloptr nlopt 2 4 2 lib libnlopt cxx a No such file
  • 合并多个列表

    鉴于我有一个列表列表 List
  • Linq:Select 和Where 之间有什么区别

    The Select and WhereLinq 中提供了方法 对于这两种方法 每个开发人员都应该了解什么 例如 何时使用其中一种而不是另一种 使用一种相对于另一种的优势等 Where 查找匹配的项目并仅返回匹配的项目 过滤 gt IEnu
  • 更改数据网格列顺序或索引

    这是我无法相信我无法弄清楚的事情 请告诉我我错过了一些简单的事情 我有一个数据网格 我用 LINQ 填充它以及一个自定义类来向其中添加数据 之后 我需要按特定顺序排列数据 它似乎忽略了我 如何更改列属性 例如索引等 这是我正在使用的 LIN
  • ASP.NET 搜索表单 - 动态 Linq to SQL?

    我有一个搜索表单 允许用户以多种不同的方式搜索多个不同的字段 这是我的代码的示例 var claims from c in db Claims select c switch ddlSearchField Text case StartsW
  • 实体框架在连接后返回不同的记录

    考虑我们有这两个实体和一个自定义对象 public class Entiy1 public int Id get set public int DestinationId get set public string Name get set
  • LINQ 函数的顺序重要吗?

    基本上 正如问题所述 LINQ 函数的顺序是否重要 表现 显然 结果仍然必须相同 Example myCollection OrderBy item gt item CreatedDate Where item gt item Code g
  • LINQ 到实体日期时间比较

    我在将 LINQ 中的日期与实体表达式进行比较时遇到问题 我想检查一下是否DateTime DateTime whole day 我想这样做 return context Events Any x gt x UserId id x Date
  • linq 与 case 条件连接

    您好 我知道如何在使用 linq 时执行选择 case 条件吗 注释掉的代码是我的问题 我如何将条件放在那里 我的代码 var r from u in Users join p in Payments on u Id equals p Us
  • 如何在 mac 中使用“getopt”命令让 bash 处理长参数?

    我想让我的 bash 脚本处理长参数 我发现getopt 但 OS X 不支持它 谁能告诉我为什么getoptBSD 实现了 GNU 没有实现 我尝试构建getopt在 GNU C lib 中 但由于我对 Linux 的技能不佳而失败了 有
  • 如何根据当前日期时间发现财政年度?

    我需要基于当前或今天的日期时间的财政年度 假设我们认为今天的日期是10 April 2011 那么我需要输出为Financial Year 2012在某些情况下 我需要以短格式显示相同的输出FY12 我想以两种方式显示 在我们的要求中 考虑
  • Linq 在 .Substring() 上抛出异常

    我遇到了一种情况 我需要让 LINQ to Entities 查询根据字符串的长度返回一个子字符串 这是查询 var query from f in Context Files orderby f DateAdded descending
  • 如何为 CUDA 内核选择网格和块尺寸?

    这是一个关于如何确定CUDA网格 块和线程大小的问题 这是对已发布问题的附加问题here https stackoverflow com a 5643838 1292251 通过此链接 talonmies 的答案包含一个代码片段 见下文 我
  • 错误:表达式树可能不包含动态操作

    我使用 Asp Net 4 和 C 我使用 EF 4 我有这个查询 收到错误 An expression tree may not contain a dynamic operation dynamic o e Item DataItem
  • LINQ to SQL 特性

    我遇到了 LINQ to SQL 的一些特殊情况 通过一个相对简单的查询 我想选择一些字段 但将日期字段格式化为字符串 我首先是这样实现的 var list dataContext MyLists Single x gt x ID myId
  • LINQ:从类型 T 的列表中,仅检索某个子类 S 的对象

    给定一个简单的继承层次结构 人 gt 学生 教师 职员 假设我有一个人员列表 L 该列表中有一些学生 教师和工作人员 使用 LINQ 和 C 有没有办法编写一个只能检索特定类型人员的方法 我知道我可以做类似的事情 var peopleIWa
  • C# 中 LINQ 中的按多列分组

    我有一个类如下 public class ActualClass public string BookName get set public string IssuerName get set public DateTime DateOfI
  • VS 程序在调试模式下崩溃,但在发布模式下不崩溃?

    我正在 VS 2012 中运行以下程序来尝试 Thrust 函数查找 include cuda runtime h include device launch parameters h include
  • 通过另一个列表更新列表(linq)

    我有类 Data 的对象列表 如下所示 class Data int code string name DateTime date update 我还有另一个课程列表 例如 class RefCodes int old code int n

随机推荐

  • 房价预测(基于决策树算法)

    预测波士顿房价 第一步 导入数据 在这个项目中 将使用波士顿房屋信息数据来训练和测试一个模型 并对模型的性能和预测能力进行评估 我们希望可以通过该模型实现对房屋的价值预估 提高房地产经纪人的工作效率 此项目的数据集来自kaggle原始数据
  • Pyhton考单词程序_考单词工具

    说明 首先我们需要一个单词表的文本文档像这样 只要单词中没有空格就行 然后运行程序 选择单词表文件 开始考单词 正确会提示Right 错误提示Wrong 一秒钟后清屏 代码 main py from module opfile import
  • [1049]since it exceeds Excel‘s limit of 65,530 URLS per worksheet

    文章目录 since it exceeds Excel s limit of 65 530 URLS per worksheet pandas 写入excel 转换Url链接的两种方法 since it exceeds Excel s li
  • el-table 动态表格 + 动态合并多列单元格方法

    动态合并单元格 之前有篇文章写了 el table 通过 span method 方法实现合并单元格的方法 但是当时只写了合并第一列的 就有小伙伴询问 如果多列合并怎么办 刚好最近有个项目遇到了动态表格并且要合并多列单元格 在详细的记录一下
  • Ubuntu17.04禁用访客模式/忽略终端大小写

    在ubuntu17 04中禁用访客模式 只需一条命令就可以了 sudo sh c printf SeatDefaults nallow guest false n gt etc lightdm lightdm conf d 50 no gu
  • python matplotlib 画图参数简要说明

    文章目录 import matplotlib pyplot as plt 用来正常显示中文 否则中文是一堆方框 plt rcParams font sans serif SimHei 用来正常显示负号 plt rcParams axes u
  • 设计循环队列

    前言 队列中有一种特殊的存在 环形队列 其有一定的价值与意义 这篇文章主要由一道与其相关的例题来引出相关的知识内容 注 下述解题过程是用C语言实现 目录 一 题目简述 二 环形队列的简单介绍 三 环形队列的实现 1 数组实现 1 过程分析
  • java动态扩展_java栈内存动态扩展要怎么理解?要如何实现?

    小伙伴们知道如何在java栈中内存动态扩展吗 这是虚拟机中的一个概念 下面让我们一起来看看该如何实现吧 一 内存概念 在java中 我们一般会简单把java内存区域划为两种 堆内存与栈内存 其实这种划分是比较粗粒度的 其中栈内存就是指的是虚
  • 浅析C语言结构体及位段

    数据经常以组的形式存在 例如 学校需要了解每位学生的姓名 学号和成绩等 如果这些值储存在一起 访问起来会更加简单 但如果类型不同 就无法存储于同一个数组中 所以在C语言中可以使用结构把不同类型的值存储在一起 先来看看百度百科对结构体的定义
  • 数组小和问题

    描述 在一个数组中 每一个数左边比当前数小的数累加起来 叫做这个数组的小和 求一个数组的小和 例子 1 3 4 2 5 1左边比1小的数 没有 3左边比3小的数 1 4左边比4小的数 1 3 2左边比2小的数 1 5左边比5小的数 1 3
  • 【云原生之Docker实战】使用Docker部署Ferry开源工单系统

    云原生之Docker实战 使用Docker部署Ferry开源工单系统 一 Ferry介绍 1 Ferry简介 2 Ferry特点 3 Ferry系统功能 二 检查本地系统环境 1 检查docker版本 2 检查docker状态 3 检查do
  • thymeleaf 常量_thymeleaf全局常量定义

    微服务现在最流行的莫过于springboot 官方推荐两种模板语言 freemarker和thymeleaf 本文只介绍thymeleaf中如何定义全局常量 百度一搜thymeleaf的全局常量定义 都是让把常量写在 message 文件中
  • std::ifstream vShaderfile & vShaderfile.ifstream.exceptions(std::ifstream::badbit)

    一 利用 fstream ifstream类打开文件 string stringstream类读入流 写入string类 二 try catch 检测异常 1 Retrieve the vertex fragment source code
  • 与Power PMAC通讯

    与PMAC通讯 Power PMAC通讯 通用Internet协议套件概述 Power PMAC 网络协议套件的使用 启动Power PMAC SSH Telnet通讯 IDE通信与Power PMAC FTP访问Power PMAC 修改
  • 代码加密和反编译

    代码加密和反编译 概述 通过 NET编译的项目得到的dll文件 由于要翻译为虚拟机可以执行的中间语言IL 这种语言规则性比较强 很容易通过各种反编译软件翻译成源码 所以当部署到实际项目中就需要进行一些加密 公司的项目是 NET CORE框架
  • 谈谈自己对链表的理解

    先说一个大概念 物理结构区分数据结构 分为顺序存储 链式存储 逻辑上区分就是集合 线性 树形 图形 1 什么是链表 它是有数据域和和指针域组成 那么什么是数据域 就是存储数据的区域 那么什么是指针域 指针域其实就是指针 用来标记此数据的相邻
  • SaaSBase:最受欢迎的协同办公软件有哪些(上篇)

    在海量的协同办公软件中 企业该如何选择呢 不用担心 SaaSBase saasbase cn 来帮您 根据 SaaSBase saasbase cn 的数据统计 有较多的协同办公软件受到企业的欢迎 故小编将它们拆分为两篇为您揭晓 先看今天第
  • HTTPS 客户端与服务端的交互过程

    一 客户端向服务端发起 HTTPS 请求 请求中包含了请求头 请求主体等信息 1 这一步就是 tcp 的三次握手 二 服务端接收到请求后 发送数字证书给客户端 以便客户端验证服务端身份 1 这一步是 SSL TLS 协议的握手过程 其目的是
  • 关于mysql的mycat中间件安装配置与python使用mycat例子

    关于mysql的mycat中间件安装配置与python使用mycat例子 MyCAT是mysql中间件 Mycat数据库分库分表中间件国内最活跃的 性能最好的开源数据库中间件 它是一款开源的Mysql企业级集群应用 前身是阿里大名鼎鼎的Co
  • thrust STL 及 cub 官方测试用例的编译 build

    cub项目github网址 GitHub NVIDIA cub Cooperative primitives for CUDA C 1 构建 thrust Clone Thrust and CUB from Github CUB is lo