理解Vulkan中的各种对象 学习Vulkan API的一个重要部分是了解其中定义了哪些类型的对象,它们代表了什么,以及它们如何相互关联。为了帮助解决这个问题,创建了一个图表,展示了所有vulkan对象及其一些关系,尤其是从另一个对象创建对象的顺序。每个vulkan对象都是具有前缀Vk的特定类型的值。为了清楚起见,图表中省略了这些前缀,就像函数名vk前缀一样。例如图中的Sampler表示一个名为Vksampler的vulkan对象类型。这些类型不能当成指针或者普通的数值。不能以任何方式解释这些类型的值。只需将它们视为...
SPIR-V教程 -- SPIRV变量 在GLSL中,一个浮点的全局变量的定义很简单,如下:float var;在SPIRV中,如何定义一个浮点的变量呢?SPIR-V中没有预定义任何类型,在定义一个变量之前,需要定义一个类型。浮点类型在SPIR-V手册中,浮点的类型的定义为:OpTypeFloat对于 OpTypeFloat 指令,文档中的指令格式为:3 22 Result<id> Literal Width 其...
SPIR-V教程 -- SPIR-V介绍(一) SPIR-V是描述vulkan使用的着色器的语言。通常,这些着色器用例如GLSL之类的高级语言编写,但有时可能需要查看、调试或修改相应的SPIR-V。这个教程目的在于一地的那点地介绍这些语言,使其更容易阅读。SPIR-V语言采用SSA(Static single assignment)格式,是一个非常抽象的语法树(带有标题)。这意味着每个中间结果只写入一次。将其视为一种语言,每个变量都是const,就想函数式语言一样。在七班几个教程中,将重点关注标题。 ...
shader_subgroup_vote概述 工作上遇到vulkan的一个扩展“VK_EXT_shader_subgroup_vote”,很讨厌的是在安卓GPU上,不支持这个扩展。所以研究了下这个扩展到底是如何使用的。 根据vulkan文档和OpenGL文档描述,提供了内置函数来计算一个group中一组布尔条件的组合,涉及到三个函数: 1)OpSubgroupAnyKHR/anyInvocationARB(bool value) 对于这个函数,如果在group中,至少有一个线程对于value 的条件成立...
编译原理-1-词法分析 在上一篇文章中,大致介绍了下编译过程。从这篇文章开始,我们就开始逐步慢慢深入的学习编译过程中的步骤。今天我们就来具体看看词法分析到底是怎么回事。========================华丽丽的分割线============================================ int fun(int a,int c);int m=10;int main(){
编译原理-0-编译过程概述 一直以来,都想好好学习学习编译原理。但是一直各种理由没有静下心来好好看看。现在就用博客的形式,记录自己学习编译原理的点点滴滴。如有错误之处,还请指出。 习惯糗事百科的分割,咱就先来一个华丽丽的分隔符 ===============================分隔符============================================= 对于我
OpenACC2.0标准中文版 OpenACC2.0标准中文版下载地址,请移步这里 昨天晚上睡前突然想到这茬,然后又从网盘里找出自己翻译的版本,上传至CSDN上。 自己应该是2012年2~3月份开始接触的OpenACC,其实自己在看OpenACC1.0标准时就想过去翻译,在学校每天可干的事情太多了,自己也就想想而已。所以OpenACC1.0标准中文版的作者是小小河。 2013年5月份,2.
OpenCL2.0特性之SVM 在OpenCL2.0中,增加了SVM(shared virtual memory)的特性。在开始讲解SVM之前,我们先用图片来看下OpenCL1.2中主机与设备端的地址空间: 图1 OpenCL1.2中主机与设备端地址空间 从图1可以看到,主机与设备具有不同的地址空间,各自
安卓平台ARM Mali OpenCL例子-灰度转换 手头一块RK3288的板子,在板子上测试了1080p一个灰度转换的OpenCL例子。OpenCL没有任何优化。例子请移步这里。 该例子是编译成安卓平台下的可执行程序。 进入jni文件夹,进行如下操作 ndk-buildadb push ../libs/armeabi-v7a/opencl /mnt/sdcard/opencl/grayadb push kernel.cl
安卓平台下ARM Mali OpenCL编程-GPU信息检测 对于ARM Mali GPU,目前是支持OpenCL1.1,所以我们可以利用OpenCL来计算我们的计算。 一直以来,对于Mali GPU的OpenCL编程,一直没有环境来测试。好不容易弄到一个华为Mate7,却因为华为没有提供OpenCL driver。目前测试过的手机有魅族MX4 pro T628是带有OpenCL Driver,这个还得多亏三星的猎户座芯片。对于
巧用CUDA中的pinned memory 这几天看别人的论文,发现一个比较有意思的实现方式。巧用pinned memory,在GPU中实现类似pipeline的功能。在论文中pipeline中,有四个操作:地址生成,数据组装,数据拷贝和计算。对于地址生成和计算是在GPU中操作的。 详细的请看一个例子: 1、我们假设有两个thread block,对于第一个block计算地址空间(在例子中省略了),在第一个bloc
GNU ARM汇编伪指令之循环 GNU ARM汇编中,支持如下形式的循环结构:.rept times code.endr code 表示一段代码,.rept和.endr都是汇编伪指令,times是一个数字,表示code这段代码要重复执行的次数。另一种循环的形式如下:.irp param,val1,val2... code.endr其中.irp也是汇编伪指令。param是一个参数名,其后的va
Qt导出图片到Excel中 手头一个石油项目,需要把管柱序列中的工具信息导出到Excel中,遇到的难点是导出图片。现在给出自己的实现例子:QString filename = QFileDialog::getSaveFileName(this, tr("保存管柱序列"),"",tr("*.xls")); //选择路径 if(filename.isEmpty()) { QMe