小编Abh*_*nav的帖子

.cu(CUDA)文件的ctags + taglist

我使用vim编辑器(在Ubuntu上).最近,我一直在处理大型cuda项目,因此希望利用ctags实用程序进行代码浏览.exuberant-ctags [here](http://ctags.sourceforge.net/languages.html)支持的语言列表尚未包含CUDA.如果有人知道做同样的调整,我真的很感激帮助.

谢谢

编辑1:我发现了以下临时修复.

要为CUDA文件创建标记文件,请使用带有以下选项的ctags(假设您当前的目录包含所有cuda文件);

$ ctags --langmap = c ++:+.cu*

vim cuda ctags exuberant-ctags

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

为什么不能使静态数组的大小变量?

可能重复:
我们可以给静态数组的大小一个变量

我在其中一个子文件中定义一个数组,如下所示.

static int arr[siz];
Run Code Online (Sandbox Code Playgroud)

siz是子文件可用的全局变量.但是gcc编译器会产生以下错误:

<filename>: <line_num> : error : storage size of ‘arr’ isn’t constant
Run Code Online (Sandbox Code Playgroud)

为什么我不能定义一个static可变大小的数组?

编辑:这似乎只是static int类型的问题.如果我将变量类型arrfrom 更改static intint,则错误消失,即使数组的大小仍依赖于变量siz.

c arrays static gcc

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

cudaDeviceReset用于多个gpu

我目前正在开发一台拥有4台Tesla T10 gpu的gpu服务器.虽然我一直在测试内核并且必须经常使用ctrl-C终止进程,但我在简单设备查询代码的末尾添加了几行代码.代码如下:

#include <stdio.h>

 // Print device properties
 void printDevProp(cudaDeviceProp devProp)
{
    printf("Major revision number:         %d\n",  devProp.major);
    printf("Minor revision number:         %d\n",  devProp.minor);
    printf("Name:                          %s\n",  devProp.name);
    printf("Total global memory:           %u\n",  devProp.totalGlobalMem);
    printf("Total shared memory per block: %u\n",  devProp.sharedMemPerBlock);
    printf("Total registers per block:     %d\n",  devProp.regsPerBlock);
    printf("Warp size:                     %d\n",  devProp.warpSize);
    printf("Maximum memory pitch:          %u\n",  devProp.memPitch);
    printf("Maximum threads per block:     %d\n",  devProp.maxThreadsPerBlock);
    for (int i = 0; i < 3; ++i)
    printf("Maximum dimension %d of block:  %d\n", i, devProp.maxThreadsDim[i]);
    for (int i = …
Run Code Online (Sandbox Code Playgroud)

cuda

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

当遇到exit(1)时,malloc的内存会发生什么?

在C中,如果我使用malloc和在执行期间分配内存,程序遇到异常/错误并退出exit(1)程序中手动合并的语句,C编译器是否会在意外退出之前自动释放内存或者是否必须手动exit(1)在程序中的行之前执行此操作.

我在Ubuntu 32bit平台上使用gcc-4.5.2编译器.

c malloc free memory-leaks exit

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

NVIDIA GPU上的IEEE-754标准(sm_13)

如果我在主机和设备(GPU arch sm_13)上执行浮点(单精度)操作,那么值是否会不同?

floating-point cuda gpgpu ieee-754

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

将 malloc'ed 数组分配给 stack'ed 数组

我试图从child_prog() to返回一个数组main()。代码如下所示:

#include<stdio.h>
#include<stdlib.h>
int* child_prog(int some_input);

void main(void){
  int C[10];
  int some_input;
  C = child_prog(some_input);
}

int* child_prog(int some_input){
  static int out[10];
  // ...
  // ... some wizardry
  return out;
}
Run Code Online (Sandbox Code Playgroud)

现在编译器生成一个错误,说它不能分配给C(这是一种int[]类型)从child_prog(这是一种int*类型)返回的值。事实上,当我创建C一个int*malloc它 10ints个内存时,程序运行良好。但我不明白为什么编译器不能分配给C(定义为C[10]指针child_prog的数组)从(定义为static int out[10]指针的数组)返回的值。

c malloc pointers heap-memory stack-memory

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

尽管切片,为什么parfor缓慢?

我有一个简单的parfor循环给出如下.

% fileAddr is a cell array of (size N) of file-addresses
sIdx = nan(N,1);
eIdx = nan(N,1);
errMsg = cell(N,1);
parfor i=1:N
    [sIdx(i),eIdx(i),errMsg{i}] = myFunk(fileAddr{i});
end
Run Code Online (Sandbox Code Playgroud)

函数文件myFun()加载由给定的文件fileAddr{i},进行一些计算并返回结果.文件加载部分是最耗时的.我的机器有4个物理核心.我尝试parfor()了1,2,3和4名工人.每一次,时间消耗都在类似的范围内.我的理解是,如果不止一个工作者load()并行处理文件,程序运行速度会更快,但分析器结果会显示出来.

任何人都可以解释我在哪里犯了错误?

matlab parfor matlab-load

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