CUDA - 交换两个 float* 数组
CUDA - swapping two float* arrays
我有两个 float* 类型的矩阵,大小为 B*B,存储在平面数组中。
我想在完成计算后交换它们。
这是我现在的代码:
Btemp = B0;
B0 = B2;
B2 = Btemp;*
当这段代码执行时,B0和B2的元素保持不变。我希望他们能互相交换。这是为什么,执行此交换的最佳方法是什么?
您需要交换内存地址B0 和B2 中的字节序列。您正在做的是交换变量 B0 和 B2 存储的地址。应该是吧。
像这样;
for (i=0; i < length(B0); ++i) {
float temp = B0[i];
B0[i] = B2[i];
B2[i] = temp;
}
这是假设它们具有相同的长度(也是伪代码)。使用 cuda,您可以使用该架构进行更好的实现。
我有两个 float* 类型的矩阵,大小为 B*B,存储在平面数组中。 我想在完成计算后交换它们。
这是我现在的代码:
Btemp = B0;
B0 = B2;
B2 = Btemp;*
当这段代码执行时,B0和B2的元素保持不变。我希望他们能互相交换。这是为什么,执行此交换的最佳方法是什么?
您需要交换内存地址B0 和B2 中的字节序列。您正在做的是交换变量 B0 和 B2 存储的地址。应该是吧。
像这样;
for (i=0; i < length(B0); ++i) {
float temp = B0[i];
B0[i] = B2[i];
B2[i] = temp;
}
这是假设它们具有相同的长度(也是伪代码)。使用 cuda,您可以使用该架构进行更好的实现。