- 博客(48)
- 资源 (25)
- 收藏
- 关注
翻译 理解Vulkan中的各种对象
学习Vulkan API的一个重要部分是了解其中定义了哪些类型的对象,它们代表了什么,以及它们如何相互关联。为了帮助解决这个问题,创建了一个图表,展示了所有vulkan对象及其一些关系,尤其是从另一个对象创建对象的顺序。每个vulkan对象都是具有前缀Vk的特定类型的值。为了清楚起见,图表中省略了这些前缀,就像函数名vk前缀一样。例如图中的Sampler表示一个名为Vksampler的vulkan对象类型。这些类型不能当成指针或者普通的数值。不能以任何方式解释这些类型的值。只需将它们视为...
2022-03-08 09:54:10
1387
原创 SPIR-V教程 -- SPIRV变量
在GLSL中,一个浮点的全局变量的定义很简单,如下:float var;在SPIRV中,如何定义一个浮点的变量呢?SPIR-V中没有预定义任何类型,在定义一个变量之前,需要定义一个类型。浮点类型在SPIR-V手册中,浮点的类型的定义为:OpTypeFloat对于 OpTypeFloat 指令,文档中的指令格式为:3 22 Result<id> Literal Width 其...
2022-01-27 23:57:42
1760
原创 SPIR-V教程 -- SPIR-V介绍(一)
SPIR-V是描述vulkan使用的着色器的语言。通常,这些着色器用例如GLSL之类的高级语言编写,但有时可能需要查看、调试或修改相应的SPIR-V。这个教程目的在于一地的那点地介绍这些语言,使其更容易阅读。SPIR-V语言采用SSA(Static single assignment)格式,是一个非常抽象的语法树(带有标题)。这意味着每个中间结果只写入一次。将其视为一种语言,每个变量都是const,就想函数式语言一样。在七班几个教程中,将重点关注标题。 ...
2022-01-26 00:07:13
4183
原创 shader_subgroup_vote概述
工作上遇到vulkan的一个扩展“VK_EXT_shader_subgroup_vote”,很讨厌的是在安卓GPU上,不支持这个扩展。所以研究了下这个扩展到底是如何使用的。 根据vulkan文档和OpenGL文档描述,提供了内置函数来计算一个group中一组布尔条件的组合,涉及到三个函数: 1)OpSubgroupAnyKHR/anyInvocationARB(bool value) 对于这个函数,如果在group中,至少有一个线程对于value 的条件成立...
2022-01-20 11:34:11
464
原创 编译原理-1-词法分析
在上一篇文章中,大致介绍了下编译过程。从这篇文章开始,我们就开始逐步慢慢深入的学习编译过程中的步骤。今天我们就来具体看看词法分析到底是怎么回事。========================华丽丽的分割线============================================ int fun(int a,int c);int m=10;int main(){
2016-04-12 01:35:26
1068
原创 编译原理-0-编译过程概述
一直以来,都想好好学习学习编译原理。但是一直各种理由没有静下心来好好看看。现在就用博客的形式,记录自己学习编译原理的点点滴滴。如有错误之处,还请指出。 习惯糗事百科的分割,咱就先来一个华丽丽的分隔符 ===============================分隔符============================================= 对于我
2016-04-12 00:44:36
853
原创 OpenACC2.0标准中文版
OpenACC2.0标准中文版下载地址,请移步这里 昨天晚上睡前突然想到这茬,然后又从网盘里找出自己翻译的版本,上传至优快云上。 自己应该是2012年2~3月份开始接触的OpenACC,其实自己在看OpenACC1.0标准时就想过去翻译,在学校每天可干的事情太多了,自己也就想想而已。所以OpenACC1.0标准中文版的作者是小小河。 2013年5月份,2.
2015-07-13 16:19:28
1896
原创 OpenCL2.0特性之SVM
在OpenCL2.0中,增加了SVM(shared virtual memory)的特性。在开始讲解SVM之前,我们先用图片来看下OpenCL1.2中主机与设备端的地址空间: 图1 OpenCL1.2中主机与设备端地址空间 从图1可以看到,主机与设备具有不同的地址空间,各自
2015-06-04 16:02:03
7152
3
原创 安卓平台ARM Mali OpenCL例子-灰度转换
手头一块RK3288的板子,在板子上测试了1080p一个灰度转换的OpenCL例子。OpenCL没有任何优化。例子请移步这里。 该例子是编译成安卓平台下的可执行程序。 进入jni文件夹,进行如下操作 ndk-buildadb push ../libs/armeabi-v7a/opencl /mnt/sdcard/opencl/grayadb push kernel.cl
2015-04-09 00:50:53
4729
原创 安卓平台下ARM Mali OpenCL编程-GPU信息检测
对于ARM Mali GPU,目前是支持OpenCL1.1,所以我们可以利用OpenCL来计算我们的计算。 一直以来,对于Mali GPU的OpenCL编程,一直没有环境来测试。好不容易弄到一个华为Mate7,却因为华为没有提供OpenCL driver。目前测试过的手机有魅族MX4 pro T628是带有OpenCL Driver,这个还得多亏三星的猎户座芯片。对于
2015-04-08 01:14:28
12317
6
原创 巧用CUDA中的pinned memory
这几天看别人的论文,发现一个比较有意思的实现方式。巧用pinned memory,在GPU中实现类似pipeline的功能。在论文中pipeline中,有四个操作:地址生成,数据组装,数据拷贝和计算。对于地址生成和计算是在GPU中操作的。 详细的请看一个例子: 1、我们假设有两个thread block,对于第一个block计算地址空间(在例子中省略了),在第一个bloc
2015-03-25 00:53:44
2035
原创 GNU ARM汇编伪指令之循环
GNU ARM汇编中,支持如下形式的循环结构:.rept times code.endr code 表示一段代码,.rept和.endr都是汇编伪指令,times是一个数字,表示code这段代码要重复执行的次数。另一种循环的形式如下:.irp param,val1,val2... code.endr其中.irp也是汇编伪指令。param是一个参数名,其后的va
2015-02-13 09:36:13
3707
原创 Qt导出图片到Excel中
手头一个石油项目,需要把管柱序列中的工具信息导出到Excel中,遇到的难点是导出图片。现在给出自己的实现例子:QString filename = QFileDialog::getSaveFileName(this, tr("保存管柱序列"),"",tr("*.xls")); //选择路径 if(filename.isEmpty()) { QMe
2015-02-05 09:54:45
5384
2
原创 ARM C嵌套汇编&NEON运算小例子
#include #include #include int main(){ int x[10]={0}; int *x_value; x_value=x; int data; asm( " str fp, [sp, #-4]! \n\t" " add fp, sp, #0 \n\t" /*1-8*/ " mov r
2015-02-05 09:51:21
944
原创 账号被盗
几天没上博客,发现有几篇莫名其妙的文章,一一删除之后发现,我自己写的关于CUDA静态库的博客被删了,唯一庆幸的是用有道云笔记保存下来了。
2015-01-12 23:11:53
1536
原创 PowerVR 6系列架构分析
Imagination Technologies公司的PowerVR GPU在移动GPU端,还是老大位置。从PowerVR 6系列开始,越来越向GPU的通用计算靠齐了。以魅族MX4,苹果6的手机开始,6系列的GPU在市场上也慢慢铺开。现在我们就来解析下PowerVR 6序列GPU的架构吧。 从上图可以看出,6系列的GPU主要包含Compute Data Master, Coars
2014-11-27 17:38:44
1496
原创 CUDA Fortran不必要数据拷贝
首先请看下面的代码:module add use cudafor contains attributes(global) subroutine call_global(a) integer :: a(:) integer :: i i=threadIdx%x+(blockIdx%x-1)*blockDim%x a(i)=i end subroutine call_glo
2014-07-30 19:35:53
2582
2
原创 RenderScript控制并行化线程数量
在这里,我们只是把10个数组的计算展开。但是在实际得项目中,有时需要人为设定线程数量。此时,rs_script_call就可以发挥作用了。rs_script_call结构体定义如下:00110 typedef struct rs_script_call {00111 enum rs_for_each_strategy strategy;00112 uint32_t
2014-07-11 13:50:01
1016
转载 FFTW安卓平台下编译
借用http://he-kai.com/2014/01/16/%E7%BC%96%E8%AF%91%E4%B8%94%E7%A7%BB%E6%A4%8Dfftw3%E5%88%B0android%E6%89%8B%E6%9C%BA%E4%B8%8A2/中的内容。 编译
2014-06-27 14:15:42
1852
原创 CUDA Fortran for Scientists and Engineers第二版翻译
下午听朋友说,NV把CUDAFortran for Scientists and Engineers的出版权卖给了国内某出版商。第一反应是
2014-06-24 16:40:15
1684
原创 android NDK 小例子step by step
1、eclipse中设置NDK 打开eclipse,在window->preferences
2014-05-16 14:33:37
2303
原创 复数矩阵计算行列式
#include#include#include#include#include#include using namespace std;#define ROW 25#define COL 25typedef struct { float Real; float Image;}Complex;Complex add(Complex a,Complex b){
2014-05-09 16:42:52
11853
原创 clCompileProgram&clLinkProgram
在OpenCL1.1中,创建program,直接用clBuildProgram即可。 在OpenCL1.2中,新添加了一种方式:先compiler(clCompileProgram),再linker(clLinkProgram)。 具体用法,请看下面的例子: kernel.cl文件,调用了add.h中的add函数,#include"add.h"__kernel void
2014-03-13 12:02:24
1760
原创 OpenACC2.0-routine
对于OpenCC1.0中,没有定义函数调用,用户自定义的函数调用只能通过内联(inline)的方式,在编译时需要添加编译选项:-Minline.在OpenACC2.0中,新添加了routine导语,来实现用户自定义函数调用。下面我们来看一个例子:#include#pragma acc routine workerint sum(int n,float *A){
2014-03-12 22:35:28
1661
原创 clCreateBuffer参数说明
clCreateBuffer第二个参数可以有多种,详情请点击此次,对于前三个比较简单,在次就忽略。1、CL_MEM_USE_HOST_PTR 对于CL_MEM_USE_HOST_PTR,刚开始buffer object的值是来自于host_ptr,但buffer object处理之后,host_ptr中的值如何变化,这点在OpenCL中没有定义。那就看看A卡对次是如何处理,一个小程序
2014-02-21 13:45:10
7461
1
原创 hdfs c程序在hadoop伪分布式执行问题
采用C语言,利用libhdfs实现对hdfs的操作。但是在程序运行时报错:错误如下:hadoop@node1:~/hadoop-1.2.1/sample$ ./test 十二月 17, 2013 11:44:38 上午 org.apache.hadoop.ipc.Client$Connection handleConnectionFailure信息: Retrying connect
2013-12-17 12:51:20
1166
原创 Hadoop伪分布式安装体验
这段时间有空想研究MapReduce,于是选择安装Hadoop。只有一台机器,就选择了伪分布式安装。1、从官网下载Hadoop2.22、把安装包解压到当前用户名的主目录下。(也可以把Hadoop解压放置到其他地方,但是请确保该文件夹的所有者是执行hadoop操作的用户)3、设置ssh的无密码访问,详情请移步这里4、安装JAVA环境,详情请移步这里5、对Hadoop的设置:
2013-12-04 15:10:18
670
GPU高性能计算之CUDA实例
2011-11-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人