- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我实际上正在学习CUDA和thrust,我正在尝试用.cpp
做一个项目,。 hpp
文件和 .cu
, .cuh
文件。因此,我做了第一个小实现(见下面的代码),但是我有一个编译错误。这是 output我的编译错误。
老实说,我不知道这种错误到底是什么意思,但我发现这是来自这一行:
thrust::device_vector<thrust::complex<T>> deviceVec_;
因为当我注释掉这一行时,就没有编译错误了。因此,我假设这是由于 thrust::device_vector
的实现内容以及我在 .hpp 中包含
文件,因为我的 .cuh
文件的事实main.cpp
由 g++
处理,所以预处理将由 g++
而不是 nvcc
.
main.cpp
文件的内容:#include "QGPU.hpp"
int main()
{
QGPU::GPU<double> gpu;
return (0);
}
.hpp
文件的内容:#pragma once
# include "QCUDA.cuh"
namespace QGPU {
template<typename T>
class GPU {
private:
QCUDA::CUDAGPU<T> cgpu_;
public:
GPU();
virtual ~GPU();
};
template<typename T>
GPU<T>::GPU()
{};
template<typename T>
GPU<T>::~GPU()
{};
};
.cuh
文件的内容:#pragma once
# include <thrust/host_vector.h>
# include <thrust/device_vector.h>
# include <thrust/complex.h>
namespace QCUDA {
template<typename T>
class CUDAGPU {
private:
thrust::host_vector<thrust::complex<T>> hostVec_;
thrust::device_vector<thrust::complex<T>> deviceVec_;
public:
CUDAGPU();
virtual ~CUDAGPU();
};
template<typename T>
CUDAGPU<T>::CUDAGPU()
{};
template<typename T>
CUDAGPU<T>::~CUDAGPU()
{};
};
因此,我的问题是:
有没有办法解决这个编译错误,从而维护这个实现?
或者我必须改变我对如何实现一个项目的看法,其中 .cpp
、.hpp
文件和 .cu
、.cuh
文件混合在一起?
如果我必须更改我的实现,是否有可能通过关注我的注意力获得一个类似的示例,说明什么是好的实现?
注意:我实际上使用的是带有 cuda 版本的 GTX 1060:
$nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Wed_Apr_11_23:16:29_CDT_2018
Cuda compilation tools, release 9.2, V9.2.88
最佳答案
您需要将 main.cpp
重命名为 main.cu
才能正常工作。否则,您会将 CUDA 代码导入普通的 .cpp
文件,而主机 C++ 将无法编译代码。
关于c++ - thrust::device_vector of thrust::complex 编译错误,可能是由于错误的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50974743/
我编写了一些以这种方式初始化成员指针的仿函数: struct A { A() { thust::device_vector d_vect(3); d_vect[
当我在main函数中使用thrust::device_vector时,可以正确的传递给内核函数,代码如下: thrust::device_vector device_a(2); thrust::h
我有一个需要在设备上多次引用的浮点数组,所以我相信存储它的最佳位置是 __ 常量 __ 内存(使用 this reference )。数组(或向量)在初始化时需要在运行时写入一次,但由多个不同的函数读
有没有办法确定 thrust::device_vector 的最大尺寸?您可以安全地分配? 最佳答案 据我所知,没有一种直接的方法。我通常的做法是做这样的事情: const size_t MB = 1
我在正确创建仿函数以访问设备 vector 时遇到了一些问题。基本上,我有两个我想在仿函数中使用的设备 vector 。在 for_each 期间调用仿函数。 这是我的仿函数: struct like
我正在尝试使用 thrust::transform从 device_vector 的每个元素中递减一个常数值.如您所见,最后一行是不完整的。我正在尝试从所有元素中减少常量 fLowestVal但不知
这个问题在这里已经有了答案: is there a better and a faster way to copy from CPU memory to GPU using thrust? (1 个回
推力::device_vector 值 推力::设备向量键; 初始化后,keys 包含一些等于 -1 的元素。我想删除键中的元素和值的相同位置。 但是不知道水货怎么处理呢? 最佳答案 可能有很多方法可
为什么下面的代码在主程序结束时会崩溃? #include thrust::device_vector v; int main(){ v.resize(1000); return 0;
我使用推力设备向量分配了一些空间,如下所示: thrust::device_vector s(10000000000); 我如何明确和正确地释放这个空间? 最佳答案 device_vector当超出范
我正在编写一个程序来计算三角形网格数据的许多属性。其中一些属性,我想使用 thrust::方法计算,其他属性需要使用 CUDA 内核中的原始内存指针来计算。 为了将数据传输到 GPU,我在 trans
我有一个推特device_vector。我想将其转换为原始指针,以便可以将其传递给内核。我该怎么办? thrust::device_vector dv(10); //CAST TO RAW kerne
我了解如何从 vector 到原始指针,但我跳过了如何向后的节拍。 // our host vector thrust::host_vector hVec; // pretend we put dat
我有一个 vector 的 vector : thrust::device_vector weights_; 这是一个连续的内存量,其中每 w 个项目,表示一个 vector 。 在我的一个函数中,我
我创建了一个结构来构造一个表,其中的列是 thrust::device_vectors 并且 gcc 提示我没有传递模板参数。 struct table { thrust::device_ve
这个问题在这里已经有了答案: Thrust inside user written kernels (4 个答案) 关闭 6 年前。 我是 CUDA 的新手,正在尝试学习用法。有人可以帮忙吗?我在主
我有一个定义为 typedef InitialState float[12] 的数据类型.我有一个包含由 std::vector h_initials 定义的几个初始状态的 vector . 我把它做
我目前正在将代码从本地 C++ 传输到 CUDA,同时使用 thrust::device_vector。现在有一个计算梯度的函数,我不仅需要访问当前元素,还需要访问周围的元素。在原始代码中我写了以下内
我正在尝试传递结构的device_vector struct point { unsigned int x; unsigned int y; } 以下列方式传递给一个函数: void
似乎在创建新的推力 vector 时默认情况下所有元素都为 0 - 我只是想确认情况总是如此。 如果是这样,是否还有一种方法可以绕过负责此行为的构造函数以提高速度(因为对于某些 vector 我不需要
我是一名优秀的程序员,十分优秀!