我必须使用矩阵A(32 * 32)和B(32 * n),其中' n'是来自投入,并在2000至2000000之间。
我有两种输入,一种是0到255之间的整数,另一种是0,1。这个乘法是一个迭代3000次的循环。 B(32 * n)来自形式输入,并且在所有迭代中都是常量,但A(32 * 32)可以在每次迭代中改变。
//read B from file
//read A from file
double D[3000];
for(int i = 0; i < 3000; i++)
{
C = multiply(A, B);
// D[i] = mean of all elements in C
// build A from B using D[i] (this part is really complicated sequential process that contains lots of if and switches)
}
最快的方法是什么? 谢谢。
答案 0 :(得分:2)
这里没有人会为你编写代码,这不是Stack Overflow的目的。但是,似乎您应该利用这些问题的一些特性来提高代码的性能:
推力库中可能存在可用于原型设计的并行原语,并且最佳手写内核将旨在将操作的第一部分和大部分部分融合到单个内核中。