私はシミュレーション ソフトウェアで作業していますが、配列に対して行われる多くの操作の 1 つは、ベクトルを数値でスケーリングすることです。
次のようなコードがあります。
//Just some initialization code, don't bother about this part
int n = 10000;
std::vector<double> input(n, 42.0);
std::vector<double> output(input.size());
double alpha = 69.0;
//the actual calculation:
for (size_t i = 0; i < n; ++i) {
output[i] = input[i] * alpha;
}
MKL ライブラリを利用できるので、計算が「その場で」行われる場合、次のように記述できます。
cblas_dscal(n, alpha, &input[0], 1);
ただし、これによりinput
変数が変更されますが、これは私が望むものではありません。
を使用してみましたmkl_domatcopy()
が、この操作は非常に遅いです。