【发布时间】:2011-08-26 04:58:01
【问题描述】:
我有一个 10 个元素长的列向量 A。我有一个矩阵 B,它是 10 乘 10。B 的内存存储主要是列。我想用列向量 A 覆盖 B 中的第一个 行。
显然,我可以做到:
for ( int i=0; i < 10; i++ )
{
B[0 + 10 * i] = A[i];
}
我在0 + 10 * i 中留下零以突出显示 B 使用列主要存储(零是行索引)。
今晚在 CUDA 领域的一些恶作剧之后,我想到可能有一个 CPU 函数来执行跨步 memcpy??我猜在低级别上,性能将取决于是否存在跨步加载/存储指令,我不记得在 x86 程序集中存在?
【问题讨论】:
-
也许你应该考虑为这个矩阵切换存储策略,或者存储它的转置。