小编ryc*_*ych的帖子

使用CUDA Thrust查找最大元素值及其位置

如何获得最大(最小)元素(res.valres.pos)的值以及位置?

thrust::host_vector<float> h_vec(100);
thrust::generate(h_vec.begin(), h_vec.end(), rand);
thrust::device_vector<float> d_vec = h_vec;

T res = -1;
res = thrust::reduce(d_vec.begin(), d_vec.end(), res, thrust::maximum<T>());
Run Code Online (Sandbox Code Playgroud)

cuda thrust

15
推荐指数
2
解决办法
8227
查看次数

如何将原始指针传递给Boost.Python?

我正在尝试使用Boost.Python作为接收指针的C++函数的包装器,修改数据(例如在Python端托管为numpy数组)并返回.我如何让Python numpy和Boost.Python进行协作并在函数内部给出原始指针?

#include <boost/python.hpp>
namespace
{
  char const *greet(double *p)
  {
    *p = 2.;
    return "hello world";
  }
}
BOOST_PYTHON_MODULE(module)
{
  boost::python::def("greet", &greet);
}
Run Code Online (Sandbox Code Playgroud)

在Python中,当我尝试时,

import numpy as np
a = np.empty([2], dtype=np.double)
raw_ptr = a.data
print cmod.greet(raw_ptr)
Run Code Online (Sandbox Code Playgroud)

我收到错误,

Boost.Python.ArgumentError: Python argument types in
<...>.module.greet(buffer)
did not match C++ signature:
greet(double*)
Run Code Online (Sandbox Code Playgroud)

python pointers numpy boost-python

7
推荐指数
1
解决办法
2167
查看次数

__device__ __constant__ const

有什么区别,在CUDA程序中定义设备常量的最佳方法是什么?在C++,主机/设备程序中,如果我想将常量定义为设备常量内存,我可以这样做

__device__ __constant__ float a = 5;
__constant__ float a = 5;
Run Code Online (Sandbox Code Playgroud)

问题1.在设备2.x和CUDA 4上,它是否相同,

__device__ const float a = 5;
Run Code Online (Sandbox Code Playgroud)

问题2.为什么在PyCUDA SourceModule("""......""")中,它只编译设备代码,甚至以下工作?

const float a = 5;
Run Code Online (Sandbox Code Playgroud)

cuda

4
推荐指数
1
解决办法
7796
查看次数

内核中的CUDA流ID

如何找出内核函数中的当前执行流ID?我期望一个类似于blockIdx或threadIdx的预定义变量,但是找不到任何提及"streamId"的东西.还有另外一种方法吗?

cuda

2
推荐指数
2
解决办法
2533
查看次数

双精度浮点数是两个双精度的总和

下列文件和两双算法的源代码有一段时间了,我仍然无法找出究竟是如何一个dd_real(定义为struct dd_real { double x[2];...}数量)分成两个双打.假如我用字符串初始化它,dd_real pi = "3.14159265358979323846264338327950";会是什么pi.x[0]pi.xi[1]?我需要理解它,然后编写一个希望小的Python函数来完成它.

我不只是想调用QD库的原因是我更喜欢在Python中重新实现正确的分割,以便我发送我的35位精度常量(以字符串形式给出),就像double2CUDA代码一样.被GQD库视为双重实物 - 似乎是唯一一个处理CUDA中扩展精度计算的库.不幸的是,在Python方面也排除了mpmath.

floating-point arbitrary-precision

1
推荐指数
1
解决办法
2819
查看次数