小编Mik*_*l V的帖子

基本GPU应用程序,整数计算

长话短说,我已经完成了几个交互式软件的原型.我现在使用pygame(python sdl包装器),一切都在CPU上完成.我现在开始将它移植到C,同时寻找现有的可能性来使用一些GPU功能来从冗余操作中吸收CPU.但是,我找不到一个好的"指南",在我的情况下,我应该选择哪些确切的技术/工具.我只是阅读了大量的文档,它很快就耗尽了我的智力.我不确定它是否可能,所以我很困惑.
在这里,我对我开发的典型应用程序框架做了一个非常粗略的草图,但考虑到它现在使用GPU(注意,我几乎没有关于GPU编程的实用知识).仍然重要的是必须精确保留数据类型和功能.这里是:
在此输入图像描述

因此F(A,R,P)是一些自定义函数,例如元素替换,重复等.函数在程序生命周期中可能是恒定的,矩形的形状通常不等于A形状,因此它不是就地计算.所以它们只是根据我的功能生成的.F的例子:A的重复行和列; 用替换表中的值替换值; 将一些瓷砖组成单个阵列; 关于A值等的任何数学函数.如上所述,这一切都可以在CPU上轻松完成,但应用程序必须非常流畅.在纯Python中BTW在添加了几个基于numpy数组的视觉特性后变得无法使用.Cython有助于快速定制功能,但源代码已经是一种沙拉.

题:

  • 这个架构是否反映了一些(标准)技术/ dev.tools?

  • CUDA是我要找的吗?如果是,那么我的应用程序结构一致的一些链接/示例将是很好的.

我意识到,这是一个很大的问题,所以如果有帮助,我会提供更多细节.


更新

下面是我的位图编辑器原型的两个典型计算的具体示例.因此编辑器使用索引,数据包括具有相应位掩码的层.我可以确定图层和蒙版的大小与图层大小相同,例如,所有图层的大小相同(1024 ^ 2像素 = 32位值为4 MB).我的调色板就是1024个元素(4个千字节,32 bpp格式).
考虑我现在要做两件事:

第1步.我想将所有图层拼合在一起.假设A1是默认层(背景),层'A2'和'A3'有掩码'm2'和'm3'.在python我写道:

from numpy import logical_not
...
Result = (A1 * logical_not(m2) + A2 * m2) * logical_not(m3) + A3 * m3
Run Code Online (Sandbox Code Playgroud)

由于数据是独立的,我认为它必须与并行块的数量成比例加速.

第2步.现在我有一个数组,并希望用一些调色板"着色"它,所以它将是我的查找表.正如我现在看到的,查找表元素的同时读取存在问题. 在此输入图像描述

但我的想法是,可能只需复制所有块的调色板,因此每个块都可以读取自己的调色板?像这样: 在此输入图像描述

c gpu gpgpu

17
推荐指数
1
解决办法
715
查看次数

定义操作符的别名

在 C++ 中,我可以通过typedef语句定义现有类型的别名。但是可以为操作员创建别名吗?具体来说,我想选择一些 Unicode 符号并为<<操作符创建一个别名。

我想使用例如“垂直四点” U+205E

cout 
? endl ? "filename:      " ? cfgfilename
? endl ? "message:       " ? e.what() 
? endl ? "exception id:  " ? e.id
? endl ? "byte position: " ? e.byte ;   
Run Code Online (Sandbox Code Playgroud)

取而代之的是:

cout 
<< endl << "filename:      " << cfgfilename
<< endl << "message:       " << e.what() 
<< endl << "exception id:  " << e.id
<< endl << "byte position: " << e.byte ;   
Run Code Online (Sandbox Code Playgroud)

如果不能使用四点字符,但使用其他一些符号,它也可以是一个选项(尽管比基本 ASCII 有更多选项会更好)。

c++ syntax operators

0
推荐指数
1
解决办法
335
查看次数

标签 统计

c ×1

c++ ×1

gpgpu ×1

gpu ×1

operators ×1

syntax ×1