我想弄明白为什么cudaMemcpyFromSymbol()存在.似乎'符号'func可以做的一切,nonSymbol cmds可以做到.
符号func似乎可以轻松移动数组或索引的一部分,但这可以很容易地使用nonSymbol函数完成.我怀疑nonSymbol方法会运行得更快,因为不需要符号查找.(目前尚不清楚符号查找计算是在编译还是运行时完成.)
我为什么要用cudaMemcpyFromSymbol()vs cudaMemcpy()?
用于CUDA构建的NPP库是仅使用freeImage还是我可以使用其他结构或仅使用unsigned char*image作为NPP函数中的输入.
我提出这个问题的原因是NPP的所有样本都有freeImage的大包装器.
我已经仔细研究了NVIDIA Performance Primitives(NPP),但是只提到了一个图像,而不是特别使用哪种图像格式.
如果你有一个如何在没有freeImage的情况下使用NPP的例子,或者只是没有从磁盘加载图像,那么我会谨慎开心.
我想使用__constant__内存,这些内存将被我所有内核中的所有线程访问.
声明是这样的
extern __constant__ float smooth [8 * 1024];
Run Code Online (Sandbox Code Playgroud)
我正在使用数据将数据复制到此变量
cudaMemcpyToSymbol("smooth", smooth_local, smooth_size, 0, cudaMemcpyHostToDevice);
Run Code Online (Sandbox Code Playgroud)
smooth_size = 7K字节
它给了我不正确的输出
但是当我在-deviceemu模式下运行它并试图在内核中打印这两个变量的内容时,我得到了所有零的平滑和smooth_local是正确的.
我尝试打印输出后cudaMemcpyToSymbol仍然给它0.
你们有人能说清楚我的问题吗?
我有 Visual Studio 2010 Ultimate 和 cuda 工具包 5.0。样品工作完美。VS 识别 cuda 的语言、语法并且工作正常。但是当我尝试这样的事情时:
#include <helper_functions.h>
#include <stdio.h>
#include <stdio.h>
int main()
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译器找不到helper_functions.h(这个头文件随示例一起提供,并且在C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.0\common\inc我的程序和示例不在同一目录中。)
当我尝试使用绝对路径时:
#include <C:\ProgramData\NVIDIACorporation\CUDASamples\v5.0\common\inc\helper_functions.h>
#include <stdio.h>
int main()
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译器:exception.h 没有这样的文件或目录
helper_functions.h并且exception.h都在同一个目录下。
我知道我必须链接它们,但我不知道如何使用 VS