小编use*_*303的帖子

CUDA / CUDA Thrust 中的多态性和派生类

这是我在 Stack Overflow 上的第一个问题,这是一个很长的问题。thrust::device_vector<BaseClass>tl;dr 版本是:如果我希望 a 存储不同类型的对象,我该如何使用 aDerivedClass1DerivedClass2a ?

\n\n

我想利用 CUDA Thrust 的多态性。我正在编译一个-arch=sm_30GPU (GeForce GTX 670) 进行编译。

\n\n

让我们看一下下面的问题:假设镇上有 80 户家庭。其中60户是已婚夫妇,20户是单亲家庭。因此,每个家庭都有不同数量的成员。现在是人口普查时间,家庭必须说明父母的年龄和孩子的数量。Family因此,政府构建了一个对象数组,thrust::device_vector<Family> familiesInTown(80)即家庭信息familiesInTown[0]对应familiesInTown[59]为已婚夫妇,其余信息(familiesInTown[60]为 )familiesInTown[79] ) 为单亲家庭。

\n\n
    \n
  • Family是基类 - 家庭中父母的数量(单亲父母数量为 1,夫妻数量为 2)以及他们拥有的孩子数量作为成员存储在此处。
  • \n
  • SingleParent,派生自Family,包括一个新成员 - 单亲父母的年龄,unsigned int ageOfParent
  • \n
  • MarriedCouple,也源自Family,但是,引入了两个新成员 - 父母的年龄,unsigned int ageOfParent1以及unsigned int ageOfParent2

    \n\n …

polymorphism cuda thrust

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

CUDA:将 CPU 上动态创建的函数指针数组复制到 GPU 内存

我想在 CPU 上动态创建函数指针列表(使用push_back()从 调用的某种方法main())并将其复制到 GPU__constant____device__数组,而不需要诉诸静态__device__函数指针。我相信这个问题与我的问题有关;但是,我的目标是迭代地创建__host__函数指针数组,然后将其复制到__constant__函数指针数组,而不是在声明时初始化后者。

具有静态函数指针的工作代码示例(如此此处所示)将是:

常见的.h:

#ifndef COMMON_H
#define COMMON_H

#include <stdio.h>
#include <iostream>

#define num_functions 3

#define gpuErrchk(ans) { gpuAssert((ans), __FILE__, __LINE__); }
inline void gpuAssert(cudaError_t code, const char *file, int line, bool abort=true)
{
   if (code != cudaSuccess)
   {
      fprintf(stderr,"GPUassert: %s %s %d\n", cudaGetErrorString(code),     file, line);
      if (abort) exit(code);
   }
}

// fptr_t: Pointer to void function …
Run Code Online (Sandbox Code Playgroud)

cuda function-pointers

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

标签 统计

cuda ×2

function-pointers ×1

polymorphism ×1

thrust ×1