有没有一种方法可以使用推力将数组的所有元素相乘?

阿尼克·乔杜里(Anik Chaudhuri)

假设我有一个数组,我想乘以该数组的所有元素并将其存储在变量中。我该怎么做?我想将A中的所有元素相乘并将结果存储在S中。这样做使我为零。

thrust::device_vector<double> A(10);
thrust::sequence(A.begin(), A.end(), 1);
double S = thrust::reduce(thrust::host, A.begin(), A.end(), 
                             0, thrust::multiplies<double>());
看守人

这里有两个问题:

  1. thrust::host执行策略的使用是没有意义的(实际上,如果您使用推力矢量作为输入,则没有执行策略是有意义的)。如果您实际尝试运行此代码,则可能会遇到某种segfault或运行时错误。改用基于标签的执行,即只删除第一个参数,推力将根据类型推断执行策略。
  2. thrust::reducein调用中的代码中的第四个参数是产品的初始值您将其设置为0。这意味着该代码计算的任何乘积将为零。大概您希望初始值为1。

解决这两个明显的问题可以使我得到:

#include <thrust/device_vector.h>
#include <thrust/reduce.h>
#include <thrust/sequence.h>

#include <iostream>
#include <iomanip>

int main()
{
    thrust::device_vector<double> A(10);
    thrust::sequence(A.begin(), A.end(), 1.0);

    for(auto p = A.begin(); p != A.end(); ++p) {
        double v = *p;
        std::cout << v << std::endl;
    }

    double S = thrust::reduce(A.begin(), A.end(), 1.0, thrust::multiplies<double>());

    std::cout << "S = " << std::fixed << std::setprecision(1) << S << std::endl;

    return 0;
}

编译并运行它使我得到:

$ nvcc -std=c++11 -o prodprob prodprob.cu 

$ ./prodprob 
1
2
3
4
5
6
7
8
9
10
S = 3628800.0

正确答案应该是10!= 3628800,所以我认为这工作正常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有一种方法可以使用bash读取数组的最后一个元素?

来自分类Dev

有没有一种方法可以使for循环沿列表的元素重复?

来自分类Dev

有没有一种方法可以使用Selenium / Web驱动程序在<div>中获取所有HTML元素ID?

来自分类Dev

有没有一种方法可以使用ID列表或ID数组查询MongoDB Rest API

来自分类Dev

有没有一种方法可以使用将<string,string>添加到字典的方法?

来自分类Dev

有没有一种方法可以使用Sass缩短此CSS?

来自分类Dev

有没有一种方法可以使TextView使用Spinner样式?

来自分类Dev

有没有一种方法可以使用JavaScript发送CoAP命令?

来自分类Dev

有没有一种方法可以使用ArrayAdapter更新多个TextView?

来自分类Dev

有没有一种方法可以使用Moment JS验证时间?

来自分类Dev

有没有一种方法可以使jQuery的.on()函数与promises配合使用?

来自分类Dev

有没有一种方法可以使用IPython隐藏显示的对象?

来自分类Dev

有没有一种方法可以使用javascript阻止javascript?

来自分类Dev

有没有一种方法可以使用c ++实时阅读文本?

来自分类Dev

有没有一种方法可以使GitLab缓存被使用而不被写入?

来自分类Dev

有没有一种方法可以使用多个值?

来自分类Dev

有没有一种方法可以使用Python从目录创建jar?

来自分类Dev

有没有一种方法可以使用HtmlAgilityPack检测404页?

来自分类Dev

有没有一种方法可以使用OneNote API标记页面?

来自分类Dev

有没有一种方法可以使用Smoke获得类的注释?

来自分类Dev

有没有一种方法可以使TextView使用Spinner样式?

来自分类Dev

有没有一种方法可以使使用HTML的markdown表溢出?

来自分类Dev

有没有一种方法可以选择单击时数组元素的索引?

来自分类Dev

有没有一种方法可以使用“使用”但将文件保持打开状态?

来自分类Dev

有没有一种方法可以使用Postgis Geometry类型将Spark连接到表?

来自分类Dev

有没有一种方法可以使用set / p将变量设置为转义字符?

来自分类Dev

有没有一种方法可以使用wrk将参数传递给GET请求?

来自分类Dev

有没有一种方法可以使用Gradle将Kotlin类编译为JavaScript?

来自分类Dev

有没有一种方法可以使用BeanUtils.copyProperties将Set映射到列表?

Related 相关文章

  1. 1

    有没有一种方法可以使用bash读取数组的最后一个元素?

  2. 2

    有没有一种方法可以使for循环沿列表的元素重复?

  3. 3

    有没有一种方法可以使用Selenium / Web驱动程序在<div>中获取所有HTML元素ID?

  4. 4

    有没有一种方法可以使用ID列表或ID数组查询MongoDB Rest API

  5. 5

    有没有一种方法可以使用将<string,string>添加到字典的方法?

  6. 6

    有没有一种方法可以使用Sass缩短此CSS?

  7. 7

    有没有一种方法可以使TextView使用Spinner样式?

  8. 8

    有没有一种方法可以使用JavaScript发送CoAP命令?

  9. 9

    有没有一种方法可以使用ArrayAdapter更新多个TextView?

  10. 10

    有没有一种方法可以使用Moment JS验证时间?

  11. 11

    有没有一种方法可以使jQuery的.on()函数与promises配合使用?

  12. 12

    有没有一种方法可以使用IPython隐藏显示的对象?

  13. 13

    有没有一种方法可以使用javascript阻止javascript?

  14. 14

    有没有一种方法可以使用c ++实时阅读文本?

  15. 15

    有没有一种方法可以使GitLab缓存被使用而不被写入?

  16. 16

    有没有一种方法可以使用多个值?

  17. 17

    有没有一种方法可以使用Python从目录创建jar?

  18. 18

    有没有一种方法可以使用HtmlAgilityPack检测404页?

  19. 19

    有没有一种方法可以使用OneNote API标记页面?

  20. 20

    有没有一种方法可以使用Smoke获得类的注释?

  21. 21

    有没有一种方法可以使TextView使用Spinner样式?

  22. 22

    有没有一种方法可以使使用HTML的markdown表溢出?

  23. 23

    有没有一种方法可以选择单击时数组元素的索引?

  24. 24

    有没有一种方法可以使用“使用”但将文件保持打开状态?

  25. 25

    有没有一种方法可以使用Postgis Geometry类型将Spark连接到表?

  26. 26

    有没有一种方法可以使用set / p将变量设置为转义字符?

  27. 27

    有没有一种方法可以使用wrk将参数传递给GET请求?

  28. 28

    有没有一种方法可以使用Gradle将Kotlin类编译为JavaScript?

  29. 29

    有没有一种方法可以使用BeanUtils.copyProperties将Set映射到列表?

热门标签

归档