小编Ros*_*han的帖子

CUDA:合并全局内存访问速度比共享内存快吗?另外,分配大型共享内存阵列会减慢程序的速度吗?

我没有发现NVIDIA Tesla M2050的共享内存速度有所改善,每块大约有49K共享内存.实际上,如果我在共享内存中分配一个大的char数组,它会减慢我的程序.例如

__shared__ char database[49000];
Run Code Online (Sandbox Code Playgroud)

让我比较慢的运行时间

__shared__ char database[4900];
Run Code Online (Sandbox Code Playgroud)

程序只访问数据库的前100个字符,因此不需要额外的空间.我无法弄清楚为什么会这样.任何帮助,将不胜感激.谢谢.

cuda

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

CUDA程序中的性能受到影响,在for循环中重复调用内核

我有一个CUDA程序在for循环中重复调用内核.该代码通过使用前一个中计算的值来计算矩阵的所有行,直到完成整个矩阵.这基本上是一种动态编程算法.下面的代码与内核并行填充许多单独矩阵的(i,j)条目.

for(i = 1; i <=xdim; i++){

  for(j = 1; j <= ydim; j++){ 

    start3time = clock();
    assign5<<<BLOCKS, THREADS>>>(Z, i, j, x, y, z)
    end3time = clock(); 
    diff = static_cast<double>(end3time-start3time)/(CLOCKS_PER_SEC / 1000); 
    printf("Time for i=%d j=%d is %f\n", i, j, diff); 
  }

}
Run Code Online (Sandbox Code Playgroud)

内核assign5很简单

__global__ void assign5(float* Z, int i, int j, int x, int y, int z) {

  int id = threadIdx.x + blockIdx.x * blockDim.x;

  char ch = database[j + id];

  Z[i+id] = (Z[x+id] + Z[y+id] + Z[z+id])*dev_matrix[i][index[ch …
Run Code Online (Sandbox Code Playgroud)

for-loop cuda gpu dynamic-programming

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

C中size_t类型的malloc参数的限制是什么?Docs说它有UINT_MAX的上限但我不能超越INT_MAX

我想分配一个2.9GB的char数组

  database = (char*) malloc((2900 * 1000000 * sizeof(char)));
Run Code Online (Sandbox Code Playgroud)

这给出了整数溢出警告和malloc返回NULL.的 malloc参数的类型的size_t根据文档其是类型的 unsigned int.

所以最大应该UINT_MAX是至少2.9GB.但是,如果我尝试分配超过MAX_INTmalloc失败.这是否意味着 size_t我的系统是int类型?我该如何检查?我看了看

/usr/include/stdlib.h 
Run Code Online (Sandbox Code Playgroud)

./lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h 
Run Code Online (Sandbox Code Playgroud)

但找不到定义size_t.非常感谢

c malloc size-t limit

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

标签 统计

cuda ×2

c ×1

dynamic-programming ×1

for-loop ×1

gpu ×1

limit ×1

malloc ×1

size-t ×1