这是一个关于如何确定CUDA网格,块和线程大小的问题.这是对此处发布的问题的另一个问题:
在此链接之后,talonmies的答案包含一个代码片段(见下文).我不理解评论"通常由调整和硬件约束选择的值".
我没有找到一个很好的解释或澄清,在CUDA文档中解释了这一点.总之,我的问题是如何在给定以下代码的情况下确定最佳块大小(=线程数):
const int n = 128 * 1024;
int blocksize = 512; // value usually chosen by tuning and hardware constraints
int nblocks = n / nthreads; // value determine by block size and total work
madd<<<nblocks,blocksize>>>mAdd(A,B,C,n);
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我从上面的链接开始我的问题,因为它部分回答了我的第一个问题.如果这不是在Stack Overflow上提问的正确方法,请原谅或建议我.
当我比较c源文件时,我想忽略换行符.例如,我想要跟随两个代码报告它们是相同的.
// codeA
int main(int argc, char *argv[])
{
// codeB
int main(int argc, char *argv[]) {
Run Code Online (Sandbox Code Playgroud)
我已经尝试过以下选项,但无法获得结果.
diff -b codeA codeB
diff -w codeA codeB
Run Code Online (Sandbox Code Playgroud) 在我的OpenCL代码中(它不是我自己编写的,它只是来自互联网的示例代码),有以下句子使用clamp的功能.
return clamp(color,0,1);
Run Code Online (Sandbox Code Playgroud)
但是,这似乎在编译期间产生错误,因此我通过使用clGetProgramBuildInfo中的CL_PROGRAM_BUILD_LOG获得了错误信息消息.
Error during compilation! (-11)
4483
build log
:211:9: error: call to 'clamp' is ambiguous
return clamp(color,0,1);
^~~~~
<built-in>:3558:26: note: candidate function
float4 __OVERLOADABLE__ clamp(float4 x, float min, float max) ;
^
<built-in>:3577:25: note: candidate function
float4 __OVERLOADABLE__ clamp(float4, float4, float4);
^
<built-in>:3556:26: note: candidate function
float3 __OVERLOADABLE__ clamp(float3 x, float min, float max) ;
^
<built-in>:3575:25: note: candidate function
float3 __OVERLOADABLE__ clamp(float3, float3, float3);
^
:296:52: error: address expression must be an lvalue or a function …Run Code Online (Sandbox Code Playgroud)