Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用像素着色器执行快速计算?_C++_Inline_Pixel Shader - Fatal编程技术网

C++ 使用像素着色器执行快速计算?

C++ 使用像素着色器执行快速计算?,c++,inline,pixel-shader,C++,Inline,Pixel Shader,我希望多次运行一个非常简单的函数。 起初我考虑内联函数,它只有四行长,所以我想把它放在页眉中会自动内联。gprof说这是个好主意。不过,我听说像素着色器为此目的进行了优化。我想知道这是不是真的?我有一个简单的函数,需要6个数字,我希望运行它N次。像素着色器会加快速度吗 也许GPU可以加速你的功能,也许不能。这在很大程度上取决于功能。GPU擅长并行执行。虽然消费级x86 CPU最多有8个核,但图形卡可以并行执行更多的计算。但瓶颈往往是GPU RAM和系统RAM之间的数据传输。当你的函数在计算上并没

我希望多次运行一个非常简单的函数。
起初我考虑内联函数,它只有四行长,所以我想把它放在页眉中会自动内联。gprof说这是个好主意。不过,我听说像素着色器为此目的进行了优化。我想知道这是不是真的?我有一个简单的函数,需要6个数字,我希望运行它N次。像素着色器会加快速度吗

也许GPU可以加速你的功能,也许不能。这在很大程度上取决于功能。GPU擅长并行执行。虽然消费级x86 CPU最多有8个核,但图形卡可以并行执行更多的计算。但瓶颈往往是GPU RAM和系统RAM之间的数据传输。当你的函数在计算上并没有那么昂贵时,这种开销可能会使它黯然失色

最后你可以自己试试,测量一下,看看哪个更快

您可能想看看,这是最广泛支持的将计算转移到图形卡的标准


<>当你生活在Windows Land中时,它也是DirectX的一部分,或者是C++的扩展。也有,但它只支持NVIDIA GPU。

像素着色器不适用于此,而计算着色器适用于此。如果没有这个函数的代码,很难判断。但是如果这是一个并行问题,那么是的,它很有可能会有所帮助。如果你至少发布一个函数的功能描述,最好是代码,再加上你的用例中“N”是什么,人们可能会给你一个有意义的答案。我会尝试这些建议,如果不起作用,我会详细说明。OpenCL根本不是一个事实上的标准。还有其他一些重要的努力,比如DX11中的DirectCompute,微软的AMP,还有一些其他的。@DeadMG更新了答案。@DeadMG,如果有人因为某个特定系统的历史而绑定到该系统,我会理解的,但是如果你是从一项新技术开始,那么选择一个特定于平台的库是没有意义的。事实上,OpenCL是一个标准,而CUDA或DirectCompute只是供应商库。所以在某种程度上,OpenCL是事实上的标准,因为其他选项不是标准。C++AMP是一个开放标准,现在有一个基于AMD Clang的非微软实现。OpenCL值得一看,但它的可移植性和广泛支持性不强,因此在许多情况下它都不是一个简单的选择。@Shahbaz OpenCL是事实上的标准,因为其他选项不是[法律上的]标准听起来并不正确。