东方耀AI技术分享

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1523|回复: 1
打印 上一主题 下一主题

[C/C++] thrust简单示例:版本、主机与设备向量的定义、初始化、fi...

[复制链接]

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14439
QQ
跳转到指定楼层
楼主
发表于 2021-6-16 10:39:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
thrust简单示例:版本、主机与设备向量的定义、初始化、fill、copy


thrust入门指南(并行算法库,类似C++的STL)


Thrust: Code at the speed of light  推力:代码光速运行


https://github.com/NVIDIA/thrust


设置VScode支持.cu文件语法高亮及跳转的方法: 搜索插件cudacpp  


问题:*.cu在VScode不能像*.cc或*.cpp一样在c++及c++ intelligence插件有关键字的高亮以及go to definition等的操作
解决方案:添加*.cu与*.cpp文件的关联
在搜索框中输入 “files.associations”,得到查找结果  添加字典 好像不行!




可以通过nvcc --version在命令行上运行来确认已安装CUDA
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243




如果您使用的是CUDA 4.0或更高版本,那么您的系统上已经安装了Thrust








Thrust提供两个矢量容器,host_vector和device_vector


  1. #include <thrust/version.h>
  2. #include <thrust/host_vector.h>
  3. #include <thrust/device_vector.h>
  4. #include <thrust/copy.h>
  5. #include <thrust/fill.h>
  6. #include <thrust/sequence.h>
  7. #include <iostream>


  8. int main(void)
  9. {
  10.     int major = THRUST_MAJOR_VERSION;
  11.     int minor = THRUST_MINOR_VERSION;
  12.     int submimor = THRUST_SUBMINOR_VERSION;
  13.     int version = THRUST_VERSION;
  14.     //Thrust v1.9.6
  15.     //1.9.6        CUDA Toolkit 10.1 Update 2
  16.     std::cout << "Thrust v" << major << "." << minor<< "." << submimor << std::endl;

  17.     thrust::device_vector<int> D(10,1);  // 初始化长度为10的gpu设备向量D 值均是1

  18.     thrust::fill(D.begin(),D.begin()+7,9);  // 填充前7位的值为9

  19.     thrust::host_vector<int> H(D.begin(),D.begin()+5);  // 用D的前5个值初始化 主机向量H

  20.     thrust::sequence(H.begin(),H.end());  // 将主机向量H设置一个序列

  21.     thrust::copy(H.begin(),H.end(),D.begin()); // 向量之间的拷贝  H主机向量 到 D设备向量的开头

  22.     //该copy函数可用于将一系列主机或设备元素复制到另一个主机或设备向量


  23.     for(int i=0;i<D.size();i++){
  24.         //printf("值:%d,",int(D[i]));
  25.         std::cout << "d=" << D[i] << std::endl;
  26.     }

  27.     for(int i=0;i<H.size();i++){
  28.         std::cout << "h=" << H[i] << std::endl;
  29.     }


  30.     return 0;
  31. }

复制代码



让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

0

主题

98

帖子

200

积分

中级会员

Rank: 3Rank: 3

积分
200
沙发
发表于 2021-11-23 19:38:28 | 只看该作者
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|人工智能工程师的摇篮 ( 湘ICP备2020019608号-1 )

GMT+8, 2024-5-19 14:34 , Processed in 0.174372 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表