我使用vim编辑器(在Ubuntu上).最近,我一直在处理大型cuda项目,因此希望利用ctags实用程序进行代码浏览.exuberant-ctags [here](http://ctags.sourceforge.net/languages.html)支持的语言列表尚未包含CUDA.如果有人知道做同样的调整,我真的很感激帮助.
谢谢
编辑1:我发现了以下临时修复.
要为CUDA文件创建标记文件,请使用带有以下选项的ctags(假设您当前的目录包含所有cuda文件);
$ ctags --langmap = c ++:+.cu*
可能重复:
我们可以给静态数组的大小一个变量
我在其中一个子文件中定义一个数组,如下所示.
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 int为int,则错误消失,即使数组的大小仍依赖于变量siz.
我目前正在开发一台拥有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) 在C中,如果我使用malloc和在执行期间分配内存,程序遇到异常/错误并退出exit(1)程序中手动合并的语句,C编译器是否会在意外退出之前自动释放内存或者是否必须手动exit(1)在程序中的行之前执行此操作.
我在Ubuntu 32bit平台上使用gcc-4.5.2编译器.
如果我在主机和设备(GPU arch sm_13)上执行浮点(单精度)操作,那么值是否会不同?
我试图从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]指针的数组)返回的值。
我有一个简单的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()并行处理文件,程序运行速度会更快,但分析器结果会显示出来.
任何人都可以解释我在哪里犯了错误?
c ×3
cuda ×3
malloc ×2
arrays ×1
ctags ×1
exit ×1
free ×1
gcc ×1
gpgpu ×1
heap-memory ×1
ieee-754 ×1
matlab ×1
matlab-load ×1
memory-leaks ×1
parfor ×1
pointers ×1
stack-memory ×1
static ×1
vim ×1