小编use*_*579的帖子

CUDA网格跨越2D阵列

我试图有效地在CUDA上循环二维数组.在我的主机代码中

double **h_matrix; // Matrix on host of size Nx by Ny
double tmp;
...
for(i = 0; i < Nx; i++) {
    for(j = 0; j < Ny; j++) {
        tmp = h_matrix[i][j];
        ... // Perform some operation on tmp
        h_matrix[i][j] = tmp;
    }
}
Run Code Online (Sandbox Code Playgroud)

为了在CUDA中有效地执行类似的任务,我理解我必须使用cudaMallocPitch()为2D数组分配内存,如CUDA编程指南中所示(例如滚动一下).这个例子并没有多大帮助,因为该内核不使用有关网格,块或线程执行它的任何信息,即使它是作为启动它<<<100, 512>>>.

NVidia'a Parallel forall博客建议使用网格跨步循环来编写灵活且可扩展的内核,但是,他们的示例仅使用1D阵列.如何为使用cudaMallocPitch()上面显示的代码并行化分配的2D数组编写网格步幅循环?我应该使用2D dimGrid和dimBlock,如果是这样,怎么样?

arrays cuda

8
推荐指数
3
解决办法
3276
查看次数

CUDA映射内存会占用GPU RAM吗?

例如,如果我有一个2GB RAM的GPU,并且在我的应用程序中分配大型数组,如1GB,作为映射内存(映射到GPU地址空间的页锁定主机内存,分配cudaHostAlloc()),将是可用GPU内存量减少1GB的映射内存,或者我仍然有(接近)2GB,因为我在分配和使用之前?

memory-management cuda

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

使用cudaMemcpy3D传输***指针

我正在尝试使用cudaMemcpy3D来传输动态分配的 3d 矩阵(张量)。张量被分配为连续的内存块(参见下面的代码)。我尝试了cudaExtent和的各种组合cudaMemcpy3DParms,但是元素的顺序混淆了。我创建了以下示例来演示该问题:

#include <stdio.h>

int ***alloc_tensor(int Nx, int Ny, int Nz) {
   int i, j;
   int ***tensor;

   tensor = (int ***) malloc((size_t) (Nx * sizeof(int **)));
   tensor[0] = (int **) malloc((size_t) (Nx * Ny * sizeof(int *)));
   tensor[0][0] = (int *) malloc((size_t) (Nx * Ny * Nz * sizeof(int)));

   for(j = 1; j < Ny; j++)
      tensor[0][j] = tensor[0][j-1] + Nz;
   for(i = 1; i < Nx; i++) {
      tensor[i] = tensor[i - …
Run Code Online (Sandbox Code Playgroud)

cuda

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

将*指针转换为***指针

假设我有一个平坦的,动态分配的1d数组(我们称之为vector),它将包含一些3d数据.有没有办法创建另一个指针(让我们称之为tensor)"看到" vector为3d数组,所以我可以访问它tensor[i][j][k]

我尝试了以下,但它不起作用:

int x, y, z; //Number of rows, cols, ...
double *vector;
double ***tensor;

x = 10; y = 10; z = 10;
vector = (double *) malloc(x * y * z * sizeof(double));

tensor = (double ***) vector;
tensor[0] = (double **) vector;
tensor[0][0] = (double *) vector;

for(j = 1; j < y; j++) {
    tensor[0][j] = tensor[0][j-1] + z;
}
for(i = 1; i < x; i++) { …
Run Code Online (Sandbox Code Playgroud)

c pointers

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

标签 统计

cuda ×3

arrays ×1

c ×1

memory-management ×1

pointers ×1