Пример #1
0
        public static void Multiple(TensorOld a, TensorOld b, TensorOld result)
        {
            var rows  = a.shape[0];
            var cols  = b.shape[1];
            var bStep = a.shape[1];

            Parallel.For(0, rows, i =>
            {
                var aStart      = a.GetRawOffset(i, 0);
                var resultStart = result.GetRawOffset(i, 0);
                Parallel.For(0, cols, j =>
                {
                    var sum    = 0d;
                    var bStart = b.GetRawOffset(0, j);
                    for (int k = 0; k < bStep; k++)
                    {
                        sum += a.values[aStart + k] * b.values[k * cols + j];
                    }
                    //result.values[i * cols + j] = sum;
                    result.SetValueFast(sum, i, j);
                });
            });
        }