如何更新纹理内存中的数据?

cudaBindTexture2D(NULL, texIniImg,
cuArrayIn,
channelDesc, 128, 128,
sizeof(float) * 128);
当更新cuArrayIn时,如何使绑定到的纹理内存texIniImg也相应的更新?

楼主您好:

只要对应的cuda array中的内容已经被改变,那么相应的纹理读取将自动改变。
(需要注意的是,改变将在下次kernel启动生效,而不是立即)

感谢来访。

谢谢版主,不过最近写程序的时候,因为需要更新纹理数据,所以就这样修改了下cuda array的数据cudaMemset(cuArrayIn, 0, 128128sizeof(float));

		cudaMemcpyToArray(cuArrayIn,
			0,
			0,
			pdInitImg,
			128*128*sizeof(float),
			cudaMemcpyHostToDevice);但核函数执行完后回返回invalid argument,这样的思路是不是不可行?

LZ您好:

invalid argument一般说明您使用API函数的时候,参数是不正确的,请您检查并修正。

祝您好运~

楼主你好,

cudaMemset不能给cuda array赋值的,整天乱用!你用之前看了手册中此函数的说明了么? 用一个东西前,你的知道这东西是干嘛的,写代码需要一定的逻辑性的,不可以根据自己的情绪变化就随便写。

此外,关于你的kernel,请连续给出此kernel启动语句附近的所有语句。
而不要节选你认为有问题的地方,因为你的知识层次不够,你节选可能会将问题所在给“节选”出去了。(不是说你发的此段代码无问题,而是说别的地方可能也有问题,建议发全)

感谢来访。

版主太犀利了,受教了,谢谢