KTL 一个支持C++14编辑公式的K线技术工具平台 - 第七版,体验GPGPU。
2022/6/27 14:20:23
本文主要是介绍KTL 一个支持C++14编辑公式的K线技术工具平台 - 第七版,体验GPGPU。,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
K,K线,Candle蜡烛图。
T,技术分析,工具平台
L,公式Language语言使用c++14,Lite小巧简易。
项目仓库:https://github.com/bbqz007/KTL
国内仓库:https://gitee.com/bbqz007/KTL
CoreAnimation for Windows: https://github.com/bbqz007/xw
zqt5 一个超简单的Qt5窗口语法: https://github.com/bbqz007/zhelper-qt5Widgets
zqlite3 一个超简单的流式语法,整合封装Sqlite3 capis 与 SQL 跟 c/c++程序绑定:https://github.com/bbqz007/sqlite3zz
zgl 一个对OpenGL常规功能api重新抽象封装。
KTL提供一个c++14编译平台,用户可以使用c++14编辑自定义技术指标等。
用户可以使用crt常用函数,c++标准库容器以及算法,c++14特性编程。
本期更新内容
体验GPGPU。
1. OpenGL 3.0 FragmentShader
2. OpenGL 4.3 ComputeShader
3. Dx11 DirectCompute
OpenGL3D 添加了mesh示例。
OpenGL需要编写glsl版本的kernel,Dx11需要编写hlsl版本的kernel。(kernel指的是computational kernel)
vmware 16支持Dx11以及OpenGL4.1,如果使用vmware16只能体验1,3。
软件实现的mesa opengl 12版本只支持到OpenGL 3.0。而OpenGL 3.0是支持浮点Texture的最低版本。
GPGPU分两个时期。
以OpenGL 4.3为分水岭。这个版本开始支持compute shader,对应DX11的DirectCompute。只要硬件支持,只需要编写compute shader。
在这之前,人们需要使用fragment shader去完成计算任务。这个链接介绍基于OpenGL 3.x的GPGPU编程。
在早期,人们利用fragment shader运算texture上的数据。并且fragment shader只能读取texture的数据,不能直接往texture写入数据,只能将结果写到framebuffer,然后再将结果从framebuffer复制到texture。终于发展出硬件支持的compute shader,可以直接将结果写到texture。思路还是一样,使用GPU的shader去运算texture的数据,将结果输出到texture。
所以抽象成4个概念:
1. Arrays = textures
2. Kernels = shaders
3. Computing = drawing
4. Feedback
最后的Feedback,可以理解成如何优化多阶流水,我们将任务分成加载,计算,输出,就像cpu指令一样,通过优化多阶流水提高吞吐提升速度。
另外还有一个概念就是全局不变量 Uniform。
是否使用了GPU就可以提升速度,如果你这样想,结果可能不会如你所愿。
GPU并不能简单地提升你所需要的运算速度。
GPU与CPU是异构两个Host,那么一个并不复杂也不庞大的运算任务,就必须徒劳经过CPU内存,CPU,总线,GPU内存,GPU shader运算,GPU内存,总线,CPU,CPU内存。
因此本次更新只能体验如何使用GPU来完成运算任务。
本次展示了如何使用OpenGL编写简单的GPGPU程序框架,以及使用GLSL编写运算kerenl。还有DX11的HLSL。
如何使用DX11编写简单的GPGPU程序框架,可以上微软文档官网查找如何编写DirectCompute。
本次更新的zgl,对Texture2D封装成一个搬运内存的对象GL3::GpuImage2D,可以alloc,copyFromCpuMemory,copyToCpuMemory。方便使用。
这篇关于KTL 一个支持C++14编辑公式的K线技术工具平台 - 第七版,体验GPGPU。的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享