我正在自学如何编写高效,优化的深度学习代码;但是我对此非常新手。
例如:我读到numpy
使用vectorization来避免python loops。
根据该链接,他们还创造了broadcasting一词,TensorFlow,PyTorch等使用了该链接。
我做了一些挖掘,发现我的Debian盒子上的ldd
显示了multiarray.so
链接libopenblasp-r0-39a31c03.2.18.so
。
因此,让我们以矩阵减法为例。我想了解如何使用openBLAS改进这种非常幼稚的实现:
void matrix_sub(Matrix *a, Matrix *b, Matrix *res)
{
assert(a->cols == b->cols);
assert(a->rows == b->rows);
zero_out_data(res, a->rows, a->cols);
for (int i = 0; i < (a->rows*a->cols); i++)
{
res->data[i] = a->data[i] - b->data[i];
}
}
是明智的内部产品,还是附加产品?