Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static class BatchOperationsVector {
- public const int BATCHSIZE = 64;
- private static readonly int STRIDE = Vector<double>.Count;
- public static void Load(double[] a, double[] b) {
- Array.Copy(b, a, BATCHSIZE);
- }
- public static void Add(double[] a, double[] b) {
- for (int i = 0; i < BATCHSIZE; i += STRIDE) {
- var va = new Vector<double>(a, i);
- var vb = new Vector<double>(b, i);
- (va + vb).CopyTo(a, i);
- }
- }
- public static void Sub(double[] a, double[] b) {
- for (int i = 0; i < BATCHSIZE; i += STRIDE) {
- var va = new Vector<double>(a, i);
- var vb = new Vector<double>(b, i);
- (va - vb).CopyTo(a, i);
- }
- }
- public static void Div(double[] a, double[] b) {
- for (int i = 0; i < BATCHSIZE; i += STRIDE) {
- var va = new Vector<double>(a, i);
- var vb = new Vector<double>(b, i);
- (va / vb).CopyTo(a, i);
- }
- }
- public static void Mul(double[] a, double[] b) {
- for (int i = 0; i < BATCHSIZE; i += STRIDE) {
- var va = new Vector<double>(a, i);
- var vb = new Vector<double>(b, i);
- (va * vb).CopyTo(a, i);
- }
- }
- public static void Neg(double[] a, double[] b) {
- for (int i = 0; i < BATCHSIZE; i += STRIDE) {
- var vb = new Vector<double>(b, i);
- Vector.Negate(vb).CopyTo(a, i);
- }
- }
- public static void Inv(double[] a, double[] b) {
- for (int i = 0; i < BATCHSIZE; i += STRIDE) {
- var vb = new Vector<double>(b, i);
- (Vector<double>.One / vb).CopyTo(a, i);
- }
- }
- public static void Log(double[] a, double[] b) {
- for (int i = 0; i < BATCHSIZE; ++i)
- a[i] = Math.Log(b[i]);
- }
- public static void Exp(double[] a, double[] b) {
- for (int i = 0; i < BATCHSIZE; ++i)
- a[i] = Math.Exp(b[i]);
- }
- public static void Sin(double[] a, double[] b) {
- for (int i = 0; i < BATCHSIZE; ++i)
- a[i] = Math.Sin(b[i]);
- }
- public static void Cos(double[] a, double[] b) {
- for (int i = 0; i < BATCHSIZE; ++i)
- a[i] = Math.Cos(b[i]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement