Thrust

C++ 并行应用开发包
授权协议 Apache
开发语言 C/C++
所属分类 程序开发、 并发/并行处理框架
软件类型 开源软件
地区 不详
投 递 者 柯正谊
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Thrust 是一个开源的 C++ 库用于开发高性能并行应用程序,以 C++ 标准模板库为蓝本实现,Thrust 带来一系列并行计算领域的抽象层。Thrust的高级接口大大提高了程序员的工作效率,同时实现了GPU和多核CPU之间的性能移植。与成熟技术(如CUDA、TBB和OpenMP)的互操作性有利于与现有软件的集成。

下面示例代码用来并行结算 100 个随机数的和:

#include <thrust/host_vector.h>
#include <thrust/device_vector.h>
#include <thrust/generate.h>
#include <thrust/reduce.h>
#include <thrust/functional.h>
#include <algorithm>
#include <cstdlib>

int main(void)
{
  // generate random data serially
  thrust::host_vector<int> h_vec(100);
  std:generate(h_vec.begin(), h_vec.end(), rand);

  // transfer to device and compute sum
  thrust::device_vector<int> d_vec = h_vec;
  int x = thrust::reduce(d_vec.begin(), d_vec.end(), 0, thrust::plus<int>());
  return 0;
}
  •   (https://docs.nvidia.com/cuda/thrust/index.html) 简介     Thrust 是一个类似于STL的针对CUDA的C++模板库。Trust提供与CUDA C完全兼容的接口,可以使我们高效地编写高性能并行程序。 Thrust提供了丰富的数据并行算法,例如scan、sort、reduce等,可以简单快捷地构成复杂算法,并使得代码获得更高的可读性。使用这

  • 1.Thrust介绍        Thrust是一个C++模板库,为GPU计算提供高效的算法和数据结构。它是由NVIDIA开发的,旨在提供一个简单易用的接口来开发高性能GPU程序。        Thrust库基于CUDA,并且是在CUDA C++语言扩展的基础上构建的。Thrust为GPU编程提供了一种高级编程范式,使得开发人员可以使用类似于STL的算法和数据结构来加速应用程序。      

  • thrust快速入门指南 Introduction   Thrust是基于标准模板库(STL)的并行平台的C ++模板库。Thrust允许您通过高级接口以最少的编程工作实现高性能并行应用程序,该接口可与C ++,CUDA,OpenMP和TBB等技术完全互操作。   Thrust提供了丰富的数据并行原语集合,例如扫描,排序和缩减,它们可以组合在一起,通过简洁易读的源代码实现复杂的算法。通过根据这些高

  • 本人 CUDA小白一枚,要是有什么不对,还望各位大佬指点。 本文及后面的几篇将分别从几个方面来大概阐述一下Thrust的一些接口。原来的网址在这里。 1.Algorithms 1.5 Partitioning 1.5.1 partition template <typename DerivedPolicy, typename ForwardIterator, typename Predicate>

  • 本人 CUDA小白一枚,要是有什么不对,还望各位大佬指点。 本文及后面的几篇将分别从几个方面来大概阐述一下Thrust的一些接口。原来的网址在这里。 1.Algorithms 1.9 Transformations 1.9.1 fill template <typename DerivedPolicy, typename ForwardIterator, typename T> __host__

  • 本人 CUDA小白一枚,要是有什么不对,还望各位大佬指点。 Thrust是一种C++的并行算法库,thrust的接口大大提高了工作的效率,同时还实现了GPU和多核CPU之间的性能的可移植性。 本文及后面的几篇将分别从几个方面来大概阐述一下Thrust的一些接口。原来的网址在这里。 1.Algorithms 2.Container Classes 3.Containers 4.Function Ob

  • 本人 CUDA小白一枚,要是有什么不对,还望各位大佬指点。 本文及后面的几篇将分别从几个方面来大概阐述一下Thrust的一些接口。原来的网址在这里。 1.Algorithms 1.3 Prefix Sums 1.3.1 inclusive_scan template <typename DerivedPolicy, typename InputIterator, typename OutputIt

  • thrust Thrust是一个类似于STL的针对CUDA的C++模板库,能够使程序更简洁易读。Thrust提供与CUDA C完全兼容的接口,可以使我们高效地编写高性能并行程序。通过利用Thrust,程序员得以快速构建CUDA程序,并能够获得极高的稳定性和性能与精度,并行排序等例程的速度可提升5至100倍。 thrust :: sort_by_key 将keys 从小到大排序,同时按keys重排后

 相关资料
  • 应用开发 PDF版下载 第一步:创建应用 进入管理后台-服务商-应用管理-创建应用 应用的基本信息: 信息项 要求及说明 应用Logo 应用的Logo,小于5M,640 * 640,在授权页会被用于展示。 应用名称 应用的名称,建议包含品牌名,2-8个字内 AppID 应用ID,系统分配,用于调用第三方应用相关接口 功能分类 应用提供的服务类型,如客户关系、团队协同、文化建设等。一个应用只能拥有一

  • 1.1. 应用开发 1.2. 应用概述 1.3. 工程结构 1.4. 开发者工具 1.4.1. 安装 1.4.2. 调试 1.4.3. 测试 1.5. 教程 1.1. 应用开发 应用开发包括如下介绍: 应用概述 工程结构 开发者工具 教程 1.2. 应用概述 RokidOS 的本地技能分为两类: 轻应用(LightApp) 本地应用(NativeApp) 轻应用,直接通过语音交互的守护进程(vui

  • 前后端并行开发是很多工程师崇尚的开发方式,相信每个有规模的公司或者团队或多或少都有自己的理解和解决方案。 本文介绍如何使用 NEI 来实现真正的前后端并行开发。 背景 前端工程师在开发页面的时候,有个很实际的问题: 在后端接口还没开发完成时,前端怎么办? 一般有以下几种方式: 前端在代码中添加 mock 数据,上线时,切换配置项,使用真实接口的数据。这种做法需要编写额外的代码,并且有一定的风险。

  • Subversion 中的分支、标记和合并 虽然很多开发团队都使用版本控制系统管理代码变更,但当多个开发人员并行地使用不同的代码库进行编码时,还是会出现问题的。在本期的 让开发自动化 中,自动化专家 Paul Duvall 展示了如何运用开源的、免费的 Subversion 版本控制系统来有效地进行标记、分支和合并。 说到源代码分支,可以将大多数的软件开发团队大致划分为两大阵营:有些是根本不分支;

  • 浏览以下网页,帮助您快速了解 ThingJS 在线开发和离线开发方法,并带领您进入开发教程的学习,通过使用我们提供的 ThingJS API,来开发您自己的应用项目。文档内容适用于 3D 可视化场景开发人员、前端开发者、设计者和项目经理。 ThingJS 在线开发用户手册 ThingJS 离线开发用户手册 ThingJS 开发教程 ThingJS API 文档使用说明

  • 这是我第一次在世博会上开发,我正在构建跟踪位置的应用程序,并使用节点每5秒将数据发送到服务器。我使用的TaskManager API从博览会我会跟踪一切,它的工作原理我得到的数据。但是当我把我的应用放在后台时,它会停止。 这是否应该在后台任务中运行(),即使在使用世博开发工具的开发环境中也是如此,还是需要在工作之前将其置于生产模式? 当我像这样将应用程序转换为后台模式时,我的停止工作。 我的示例代

  • MVC 是很多应用开发时都会采用的一种「架构模式」,会把一个应用分成 Model-View-Controller,每一部分各自负责: Model - 应用的功能实现、数据库相关操作等 Controller - 负责转发请求,对请求进行处理等 View - 应用的界面部分,与用户的交互等 同样的,我们在开发Express应用的时候也可以采取这样的清晰明了的开发模式,所以我们可以先构建好应用的文件目录

  • Egg.js应用开发-本地开发 平台流程 本地开发 Egg.js应用开发-本地开发 更新时间:2018-08-09 18:40:14 本章讲解:Egg.js 应用如何开发, 待补充.. 平台流程 进入应用开发界面,可以在页面上看到应用的 AppKey、AppSecret 以及代码仓库信息。 本地开发 克隆代码 git clone git@code.aliyun.com:iot-a124labfag