Home / Class/ mask Class — pytorch Architecture

mask Class — pytorch Architecture

Architecture documentation for the mask class in vec512_complex_double.h from the pytorch codebase.

Entity Profile

Source Code

aten/src/ATen/cpu/vec/vec512/vec512_complex_double.h lines 72–128

  template <int64_t mask>
  static Vectorized<c10::complex<double>> blend(
      const Vectorized<c10::complex<double>>& a,
      const Vectorized<c10::complex<double>>& b) {
    // convert c10::complex<V> index mask to V index mask: xy -> xxyy
    // NOLINTNEXTLINE(clang-diagnostic-warning)
    switch (mask) {
      case 0:
        return a;
      case 1:
        return _mm512_mask_blend_pd(
            0x03, a.values, b.values); // b0000 0001 = b0000 0011
      case 2:
        return _mm512_mask_blend_pd(
            0x0C, a.values, b.values); // b0000 0010 = b0000 1100
      case 3:
        return _mm512_mask_blend_pd(
            0x0F, a.values, b.values); // b0000 0011 = b0000 1111
      case 4:
        return _mm512_mask_blend_pd(
            0x30, a.values, b.values); // b0000 0100 = b0011 0000
      case 5:
        return _mm512_mask_blend_pd(
            0x33, a.values, b.values); // b0000 0101 = b0011 0011
      case 6:
        return _mm512_mask_blend_pd(
            0x3C, a.values, b.values); // b0000 0110 = b0011 1100
      case 7:
        return _mm512_mask_blend_pd(
            0x3F, a.values, b.values); // b0000 0111 = b0011 1111
      case 8:
        return _mm512_mask_blend_pd(
            0xC0, a.values, b.values); // b0000 1000 = b1100 0000
      case 9:
        return _mm512_mask_blend_pd(
            0xC3, a.values, b.values); // b0000 1001 = b1100 0011
      case 10:
        return _mm512_mask_blend_pd(
            0xCC, a.values, b.values); // b0000 1010 = b1100 1100
      case 11:
        return _mm512_mask_blend_pd(
            0xCF, a.values, b.values); // b0000 1011 = b1100 1111
      case 12:
        return _mm512_mask_blend_pd(
            0xF0, a.values, b.values); // b0000 1100 = b1111 0000
      case 13:
        return _mm512_mask_blend_pd(
            0xF3, a.values, b.values); // b0000 1101 = b1111 0011
      case 14:
        return _mm512_mask_blend_pd(
            0xFC, a.values, b.values); // b0000 1110 = b1111 1100
      case 15:
        return _mm512_mask_blend_pd(
            0xFF, a.values, b.values); // b0000 1111 = b1111 1111
    }
    return b;
  }

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free