问题
需要声明CUDA类型的变量,如 constant,device,shared等等
解决方案
调用get_declarationModifier().get_storageModifier().set
需要声明CUDA类型的变量,如 constant,device,shared等等
调用get_declarationModifier().get_storageModifier().set
用ROSE产生cuda代码时,为了性能需要,使用到了纹理存储器。但在纹理存储器变量声明的时候,遇到了点问题:纹理寄存器变量的类型是模板类实例,e.g,texture<DATATYPE,1,cudaReadModeElementType> t_a
,但是rose中模板类变量貌似不怎么好声明,尝试了半天都没有成功。
使用万金油式的buildOpaqueType直接创建模板类型,然后使用该类型创建纹理存储器变量
1 2 3 4 5 |
|
在使用cuda的纹理存储器时,编译器报错
1 2 3 4 |
|
经过研究,发现原来cuda的纹理存储器不能直接支持double
The type of a texel, which is restricted to the basic integer and single-precision floating-point types and any of the 1-, 2-, and 4-component vector types defined in char, short, int, long, longlong, float, double that are derived from the basic integer and single-precision floating-point types. 出处:cuda-c-programming-guide
非要加速的话,可以使用一个int2类型的向量拼接成一个double
1 2 3 4 5 6 7 |
|
函数 | 描述 |
---|---|
nchar(x) | 计算x中的字符数量 |
substr(x, start, stop) | 字符串截取 |
grep(pattern, x) | 字符串内的查找 |
paste(…, sep = “ ”, collapse = NULL) | 字符串连接 |
strsplit(x, split) | 字符串分割 |
tolower() | 把x变成小写 |
toupper(x) | 把x变成大写 |
casefold(x, upper = FALSE) | 通过指定upper,把x变成大写或者小写 |
chartr(old, new, x) | 把x中每个在old中出现的字符翻译成new中相应位置的字符 |
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 |
|
mydata[grep("^q", names(mydata))]
选择名称以“q”开头的数据列。1 2 |
|
1 2 3 4 5 6 |
|
这种错误一般是由于语法树具有环路造成的。造成环路的原因一般是因为一个astnode被多次使用,解决方法是利用deepcopy在多次使用的地方克隆。
下载miktex移植版本: http://miktex.org/download
解压
设置系统环境变量PATH。例如:
1
|
|
profile侧重结果,trace侧重过程。
对于两个不同类型的测试(profile or trace),需要指定不同的makefile文件,各类makefile文件在tau编译配置时根据参数指定生成。
添加或者设需要的makefile
根据待插桩的源码,设置相应的tau编译器(可在makefile中替换或者直接使用tau编译器编译)
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1
|
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
使用PAPI测量更多指标,首先下指定使用papi参数编译的tau ,makefile,其次,使用环境变量PAPI_EVENT
当一次要采集多个指标时,可以通过设置COUNT <1-25>来实现
1 2 3 |
|
1
|
|