diff --git a/CMakeLists.txt b/CMakeLists.txt index 157c38b2..8fa64994 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,4 @@ -# TODO: check the minimum cmake version -cmake_minimum_required(VERSION 3.9) # Required by find_package(OpenMP) +cmake_minimum_required(VERSION 3.10) # Required by CMAKE_CUDA_HOST_COMPILER include(CMakeDependentOption) project(InfiniTensor C CXX) @@ -16,6 +15,7 @@ set(DEFAULT_BUILD_TYPE "RelWithDebInfo") set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_EXTENSIONS OFF) # -std=gnu++11 when on, -std=c++11 when off + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall -Werror -Wno-error=deprecated-declarations") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -UNDEBUG") # Enable assertion set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -UNDEBUG") # Enable assertion @@ -67,11 +67,12 @@ if(USE_BACKTRACE) endif() if(USE_CUDA) - # set(CUDA_HOST_COMPILER /home/spack/spack/opt/spack/linux-ubuntu22.04-broadwell/gcc-9.4.0/gcc-9.4.0-st36klijpsnquihiy463hmedsyhoc3g6/bin/gcc) + # Since enable_language only executes once, rerun cmake is required if CMAKE_CUDA_HOST_COMPILER is wrong + set(CMAKE_CUDA_HOST_COMPILER + ${CMAKE_CXX_COMPILER} + CACHE STRING "Set cuda host compiler path") enable_language(CUDA) - # TODO: how to set option for CUDA_HOST_COMPILER. Now env var CUDAHOSTCXX=/home/spack/spack/opt/spack/linux-ubuntu22.04-broadwell/gcc-9.4.0/gcc-9.4.0-st36klijpsnquihiy463hmedsyhoc3g6/bin/gcc takes effect. - # option(CUDA_HOST_COMPILER "" ${CMAKE_C_COMPILER}) - # TODO: find_package seems unnecessary for CMake >= 3.8 + # TODO: find_package seems unnecessary for CMake >= 3.8 find_package(CUDA REQUIRED) # message("CUBLAS_LIBRARIES: ${CUDA_LIBRARIES}") target_link_libraries(InfiniTensor cudnn curand cublas ${CUDA_LIBRARIES}) diff --git a/include/core/operator.h b/include/core/operator.h index 0575f705..79e880cf 100644 --- a/include/core/operator.h +++ b/include/core/operator.h @@ -10,7 +10,7 @@ enum class OpType { Matmul, ConvTrans, G2BMM, - GBMML, + GBMM, Pad, Slice, Concat, @@ -53,7 +53,7 @@ class OpRegistry { FOP(Matmul); FOP(ConvTrans); FOP(G2BMM); - FOP(GBMML); + FOP(GBMM); FOP(Pad); FOP(Slice); FOP(Concat); diff --git a/include/custom_ops.cuh b/include/custom_ops.cuh new file mode 100644 index 00000000..d3d00e94 --- /dev/null +++ b/include/custom_ops.cuh @@ -0,0 +1,5802 @@ +#ifndef CUSTOM_OPS_CUH +#define CUSTOM_OPS_CUH + +#include + +namespace infini { + +#ifdef _WIN32 +using uint = unsigned int; +using uchar = unsigned char; +using ushort = unsigned short; +using int64_t = long long; +using uint64_t = unsigned long long; +#else +#define uint unsigned int +#define uchar unsigned char +#define ushort unsigned short +#define int64_t long long +#define uint64_t unsigned long long +#endif + +__global__ void __launch_bounds__(58) + sg2bmm_bs1_n10000_m64_w1000_d1_kernel0(float *__restrict__ q, + float *__restrict__ k, + float *__restrict__ SG2BMM) { + float SG2BMM_local[120]; + __shared__ float q_shared[320]; + __shared__ float Kpad_shared[664]; + SG2BMM_local[(0)] = 0.000000e+00f; + SG2BMM_local[(3)] = 0.000000e+00f; + SG2BMM_local[(6)] = 0.000000e+00f; + SG2BMM_local[(9)] = 0.000000e+00f; + SG2BMM_local[(12)] = 0.000000e+00f; + SG2BMM_local[(15)] = 0.000000e+00f; + SG2BMM_local[(18)] = 0.000000e+00f; + SG2BMM_local[(21)] = 0.000000e+00f; + SG2BMM_local[(24)] = 0.000000e+00f; + SG2BMM_local[(27)] = 0.000000e+00f; + SG2BMM_local[(30)] = 0.000000e+00f; + SG2BMM_local[(33)] = 0.000000e+00f; + SG2BMM_local[(36)] = 0.000000e+00f; + SG2BMM_local[(39)] = 0.000000e+00f; + SG2BMM_local[(42)] = 0.000000e+00f; + SG2BMM_local[(45)] = 0.000000e+00f; + SG2BMM_local[(48)] = 0.000000e+00f; + SG2BMM_local[(51)] = 0.000000e+00f; + SG2BMM_local[(54)] = 0.000000e+00f; + SG2BMM_local[(57)] = 0.000000e+00f; + SG2BMM_local[(60)] = 0.000000e+00f; + SG2BMM_local[(63)] = 0.000000e+00f; + SG2BMM_local[(66)] = 0.000000e+00f; + SG2BMM_local[(69)] = 0.000000e+00f; + SG2BMM_local[(72)] = 0.000000e+00f; + SG2BMM_local[(75)] = 0.000000e+00f; + SG2BMM_local[(78)] = 0.000000e+00f; + SG2BMM_local[(81)] = 0.000000e+00f; + SG2BMM_local[(84)] = 0.000000e+00f; + SG2BMM_local[(87)] = 0.000000e+00f; + SG2BMM_local[(90)] = 0.000000e+00f; + SG2BMM_local[(93)] = 0.000000e+00f; + SG2BMM_local[(96)] = 0.000000e+00f; + SG2BMM_local[(99)] = 0.000000e+00f; + SG2BMM_local[(102)] = 0.000000e+00f; + SG2BMM_local[(105)] = 0.000000e+00f; + SG2BMM_local[(108)] = 0.000000e+00f; + SG2BMM_local[(111)] = 0.000000e+00f; + SG2BMM_local[(114)] = 0.000000e+00f; + SG2BMM_local[(117)] = 0.000000e+00f; + SG2BMM_local[(1)] = 0.000000e+00f; + SG2BMM_local[(4)] = 0.000000e+00f; + SG2BMM_local[(7)] = 0.000000e+00f; + SG2BMM_local[(10)] = 0.000000e+00f; + SG2BMM_local[(13)] = 0.000000e+00f; + SG2BMM_local[(16)] = 0.000000e+00f; + SG2BMM_local[(19)] = 0.000000e+00f; + SG2BMM_local[(22)] = 0.000000e+00f; + SG2BMM_local[(25)] = 0.000000e+00f; + SG2BMM_local[(28)] = 0.000000e+00f; + SG2BMM_local[(31)] = 0.000000e+00f; + SG2BMM_local[(34)] = 0.000000e+00f; + SG2BMM_local[(37)] = 0.000000e+00f; + SG2BMM_local[(40)] = 0.000000e+00f; + SG2BMM_local[(43)] = 0.000000e+00f; + SG2BMM_local[(46)] = 0.000000e+00f; + SG2BMM_local[(49)] = 0.000000e+00f; + SG2BMM_local[(52)] = 0.000000e+00f; + SG2BMM_local[(55)] = 0.000000e+00f; + SG2BMM_local[(58)] = 0.000000e+00f; + SG2BMM_local[(61)] = 0.000000e+00f; + SG2BMM_local[(64)] = 0.000000e+00f; + SG2BMM_local[(67)] = 0.000000e+00f; + SG2BMM_local[(70)] = 0.000000e+00f; + SG2BMM_local[(73)] = 0.000000e+00f; + SG2BMM_local[(76)] = 0.000000e+00f; + SG2BMM_local[(79)] = 0.000000e+00f; + SG2BMM_local[(82)] = 0.000000e+00f; + SG2BMM_local[(85)] = 0.000000e+00f; + SG2BMM_local[(88)] = 0.000000e+00f; + SG2BMM_local[(91)] = 0.000000e+00f; + SG2BMM_local[(94)] = 0.000000e+00f; + SG2BMM_local[(97)] = 0.000000e+00f; + SG2BMM_local[(100)] = 0.000000e+00f; + SG2BMM_local[(103)] = 0.000000e+00f; + SG2BMM_local[(106)] = 0.000000e+00f; + SG2BMM_local[(109)] = 0.000000e+00f; + SG2BMM_local[(112)] = 0.000000e+00f; + SG2BMM_local[(115)] = 0.000000e+00f; + SG2BMM_local[(118)] = 0.000000e+00f; + SG2BMM_local[(2)] = 0.000000e+00f; + SG2BMM_local[(5)] = 0.000000e+00f; + SG2BMM_local[(8)] = 0.000000e+00f; + SG2BMM_local[(11)] = 0.000000e+00f; + SG2BMM_local[(14)] = 0.000000e+00f; + SG2BMM_local[(17)] = 0.000000e+00f; + SG2BMM_local[(20)] = 0.000000e+00f; + SG2BMM_local[(23)] = 0.000000e+00f; + SG2BMM_local[(26)] = 0.000000e+00f; + SG2BMM_local[(29)] = 0.000000e+00f; + SG2BMM_local[(32)] = 0.000000e+00f; + SG2BMM_local[(35)] = 0.000000e+00f; + SG2BMM_local[(38)] = 0.000000e+00f; + SG2BMM_local[(41)] = 0.000000e+00f; + SG2BMM_local[(44)] = 0.000000e+00f; + SG2BMM_local[(47)] = 0.000000e+00f; + SG2BMM_local[(50)] = 0.000000e+00f; + SG2BMM_local[(53)] = 0.000000e+00f; + SG2BMM_local[(56)] = 0.000000e+00f; + SG2BMM_local[(59)] = 0.000000e+00f; + SG2BMM_local[(62)] = 0.000000e+00f; + SG2BMM_local[(65)] = 0.000000e+00f; + SG2BMM_local[(68)] = 0.000000e+00f; + SG2BMM_local[(71)] = 0.000000e+00f; + SG2BMM_local[(74)] = 0.000000e+00f; + SG2BMM_local[(77)] = 0.000000e+00f; + SG2BMM_local[(80)] = 0.000000e+00f; + SG2BMM_local[(83)] = 0.000000e+00f; + SG2BMM_local[(86)] = 0.000000e+00f; + SG2BMM_local[(89)] = 0.000000e+00f; + SG2BMM_local[(92)] = 0.000000e+00f; + SG2BMM_local[(95)] = 0.000000e+00f; + SG2BMM_local[(98)] = 0.000000e+00f; + SG2BMM_local[(101)] = 0.000000e+00f; + SG2BMM_local[(104)] = 0.000000e+00f; + SG2BMM_local[(107)] = 0.000000e+00f; + SG2BMM_local[(110)] = 0.000000e+00f; + SG2BMM_local[(113)] = 0.000000e+00f; + SG2BMM_local[(116)] = 0.000000e+00f; + SG2BMM_local[(119)] = 0.000000e+00f; + for (int p_outer_outer = 0; p_outer_outer < 16; ++p_outer_outer) { + __syncthreads(); + q_shared[(((int)threadIdx.x))] = + q[((((((((int)blockIdx.x) / 23) * 5120) + + ((((int)threadIdx.x) >> 2) * 64)) + + (p_outer_outer * 4)) + + (((int)threadIdx.x) & 3)))]; + q_shared[((((int)threadIdx.x) + 58))] = + q[((((((((int)blockIdx.x) / 23) * 5120) + + (((((int)threadIdx.x) + 58) >> 2) * 64)) + + (p_outer_outer * 4)) + + ((((int)threadIdx.x) + 2) & 3)))]; + q_shared[((((int)threadIdx.x) + 116))] = + q[(((((((((int)blockIdx.x) / 23) * 5120) + + ((((int)threadIdx.x) >> 2) * 64)) + + (p_outer_outer * 4)) + + (((int)threadIdx.x) & 3)) + + 1856))]; + q_shared[((((int)threadIdx.x) + 174))] = + q[((((((((int)blockIdx.x) / 23) * 5120) + + (((((int)threadIdx.x) + 174) >> 2) * 64)) + + (p_outer_outer * 4)) + + ((((int)threadIdx.x) + 2) & 3)))]; + q_shared[((((int)threadIdx.x) + 232))] = + q[(((((((((int)blockIdx.x) / 23) * 5120) + + ((((int)threadIdx.x) >> 2) * 64)) + + (p_outer_outer * 4)) + + (((int)threadIdx.x) & 3)) + + 3712))]; + if (((int)threadIdx.x) < 30) { + q_shared[((((int)threadIdx.x) + 290))] = + q[((((((((int)blockIdx.x) / 23) * 5120) + + (((((int)threadIdx.x) + 290) >> 2) * 64)) + + (p_outer_outer * 4)) + + ((((int)threadIdx.x) + 2) & 3)))]; + } + Kpad_shared[(((int)threadIdx.x))] = + (((1000 <= ((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + (((int)threadIdx.x) >> 2))) && + (((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + (((int)threadIdx.x) >> 2)) < 11000)) + ? k[((((((((((int)blockIdx.x) % 23) * 5568) + + ((((int)blockIdx.x) / 23) * 5120)) + + ((((int)threadIdx.x) >> 2) * 64)) + + (p_outer_outer * 4)) + + (((int)threadIdx.x) & 3)) - + 64000))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 58))] = + (((1000 <= ((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + ((((int)threadIdx.x) + 58) >> 2))) && + (((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + ((((int)threadIdx.x) + 58) >> 2)) < 11000)) + ? k[((((((((((int)blockIdx.x) % 23) * 5568) + + ((((int)blockIdx.x) / 23) * 5120)) + + (((((int)threadIdx.x) + 58) >> 2) * 64)) + + (p_outer_outer * 4)) + + ((((int)threadIdx.x) + 2) & 3)) - + 64000))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 116))] = + (((971 <= ((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + (((int)threadIdx.x) >> 2))) && + (((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + (((int)threadIdx.x) >> 2)) < 10971)) + ? k[((((((((((int)blockIdx.x) % 23) * 5568) + + ((((int)blockIdx.x) / 23) * 5120)) + + ((((int)threadIdx.x) >> 2) * 64)) + + (p_outer_outer * 4)) + + (((int)threadIdx.x) & 3)) - + 62144))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 174))] = + (((1000 <= ((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + ((((int)threadIdx.x) + 174) >> 2))) && + (((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + ((((int)threadIdx.x) + 174) >> 2)) < 11000)) + ? k[((((((((((int)blockIdx.x) % 23) * 5568) + + ((((int)blockIdx.x) / 23) * 5120)) + + (((((int)threadIdx.x) + 174) >> 2) * 64)) + + (p_outer_outer * 4)) + + ((((int)threadIdx.x) + 2) & 3)) - + 64000))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 232))] = + (((942 <= ((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + (((int)threadIdx.x) >> 2))) && + (((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + (((int)threadIdx.x) >> 2)) < 10942)) + ? k[((((((((((int)blockIdx.x) % 23) * 5568) + + ((((int)blockIdx.x) / 23) * 5120)) + + ((((int)threadIdx.x) >> 2) * 64)) + + (p_outer_outer * 4)) + + (((int)threadIdx.x) & 3)) - + 60288))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 290))] = + (((1000 <= ((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + ((((int)threadIdx.x) + 290) >> 2))) && + (((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + ((((int)threadIdx.x) + 290) >> 2)) < 11000)) + ? k[((((((((((int)blockIdx.x) % 23) * 5568) + + ((((int)blockIdx.x) / 23) * 5120)) + + (((((int)threadIdx.x) + 290) >> 2) * 64)) + + (p_outer_outer * 4)) + + ((((int)threadIdx.x) + 2) & 3)) - + 64000))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 348))] = + (((913 <= ((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + (((int)threadIdx.x) >> 2))) && + (((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + (((int)threadIdx.x) >> 2)) < 10913)) + ? k[((((((((((int)blockIdx.x) % 23) * 5568) + + ((((int)blockIdx.x) / 23) * 5120)) + + ((((int)threadIdx.x) >> 2) * 64)) + + (p_outer_outer * 4)) + + (((int)threadIdx.x) & 3)) - + 58432))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 406))] = + (((1000 <= ((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + ((((int)threadIdx.x) + 406) >> 2))) && + (((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + ((((int)threadIdx.x) + 406) >> 2)) < 11000)) + ? k[((((((((((int)blockIdx.x) % 23) * 5568) + + ((((int)blockIdx.x) / 23) * 5120)) + + (((((int)threadIdx.x) + 406) >> 2) * 64)) + + (p_outer_outer * 4)) + + ((((int)threadIdx.x) + 2) & 3)) - + 64000))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 464))] = + (((884 <= ((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + (((int)threadIdx.x) >> 2))) && + (((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + (((int)threadIdx.x) >> 2)) < 10884)) + ? k[((((((((((int)blockIdx.x) % 23) * 5568) + + ((((int)blockIdx.x) / 23) * 5120)) + + ((((int)threadIdx.x) >> 2) * 64)) + + (p_outer_outer * 4)) + + (((int)threadIdx.x) & 3)) - + 56576))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 522))] = + (((1000 <= ((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + ((((int)threadIdx.x) + 522) >> 2))) && + (((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + ((((int)threadIdx.x) + 522) >> 2)) < 11000)) + ? k[((((((((((int)blockIdx.x) % 23) * 5568) + + ((((int)blockIdx.x) / 23) * 5120)) + + (((((int)threadIdx.x) + 522) >> 2) * 64)) + + (p_outer_outer * 4)) + + ((((int)threadIdx.x) + 2) & 3)) - + 64000))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 580))] = + (((855 <= ((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + (((int)threadIdx.x) >> 2))) && + (((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + (((int)threadIdx.x) >> 2)) < 10855)) + ? k[((((((((((int)blockIdx.x) % 23) * 5568) + + ((((int)blockIdx.x) / 23) * 5120)) + + ((((int)threadIdx.x) >> 2) * 64)) + + (p_outer_outer * 4)) + + (((int)threadIdx.x) & 3)) - + 54720))] + : 0.000000e+00f); + if (((int)threadIdx.x) < 26) { + Kpad_shared[((((int)threadIdx.x) + 638))] = + (((1000 <= ((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + ((((int)threadIdx.x) + 638) >> 2))) && + (((((((int)blockIdx.x) % 23) * 87) + + (((((int)blockIdx.x) % 2875) / 23) * 80)) + + ((((int)threadIdx.x) + 638) >> 2)) < 11000)) + ? k[((((((((((int)blockIdx.x) % 23) * 5568) + + ((((int)blockIdx.x) / 23) * 5120)) + + (((((int)threadIdx.x) + 638) >> 2) * 64)) + + (p_outer_outer * 4)) + + ((((int)threadIdx.x) + 2) & 3)) - + 64000))] + : 0.000000e+00f); + } + __syncthreads(); + SG2BMM_local[(0)] = + (SG2BMM_local[(0)] + + (q_shared[(((((int)threadIdx.x) / 29) * 160))] * + Kpad_shared[((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)))])); + SG2BMM_local[(3)] = + (SG2BMM_local[(3)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 4))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 4))])); + SG2BMM_local[(6)] = + (SG2BMM_local[(6)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 8))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 8))])); + SG2BMM_local[(9)] = + (SG2BMM_local[(9)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 12))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 12))])); + SG2BMM_local[(12)] = + (SG2BMM_local[(12)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 16))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 16))])); + SG2BMM_local[(15)] = + (SG2BMM_local[(15)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 20))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 20))])); + SG2BMM_local[(18)] = + (SG2BMM_local[(18)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 24))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 24))])); + SG2BMM_local[(21)] = + (SG2BMM_local[(21)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 28))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 28))])); + SG2BMM_local[(24)] = + (SG2BMM_local[(24)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 32))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 32))])); + SG2BMM_local[(27)] = + (SG2BMM_local[(27)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 36))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 36))])); + SG2BMM_local[(30)] = + (SG2BMM_local[(30)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 40))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 40))])); + SG2BMM_local[(33)] = + (SG2BMM_local[(33)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 44))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 44))])); + SG2BMM_local[(36)] = + (SG2BMM_local[(36)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 48))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 48))])); + SG2BMM_local[(39)] = + (SG2BMM_local[(39)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 52))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 52))])); + SG2BMM_local[(42)] = + (SG2BMM_local[(42)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 56))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 56))])); + SG2BMM_local[(45)] = + (SG2BMM_local[(45)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 60))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 60))])); + SG2BMM_local[(48)] = + (SG2BMM_local[(48)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 64))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 64))])); + SG2BMM_local[(51)] = + (SG2BMM_local[(51)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 68))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 68))])); + SG2BMM_local[(54)] = + (SG2BMM_local[(54)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 72))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 72))])); + SG2BMM_local[(57)] = + (SG2BMM_local[(57)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 76))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 76))])); + SG2BMM_local[(60)] = + (SG2BMM_local[(60)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 80))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 80))])); + SG2BMM_local[(63)] = + (SG2BMM_local[(63)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 84))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 84))])); + SG2BMM_local[(66)] = + (SG2BMM_local[(66)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 88))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 88))])); + SG2BMM_local[(69)] = + (SG2BMM_local[(69)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 92))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 92))])); + SG2BMM_local[(72)] = + (SG2BMM_local[(72)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 96))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 96))])); + SG2BMM_local[(75)] = + (SG2BMM_local[(75)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 100))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 100))])); + SG2BMM_local[(78)] = + (SG2BMM_local[(78)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 104))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 104))])); + SG2BMM_local[(81)] = + (SG2BMM_local[(81)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 108))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 108))])); + SG2BMM_local[(84)] = + (SG2BMM_local[(84)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 112))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 112))])); + SG2BMM_local[(87)] = + (SG2BMM_local[(87)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 116))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 116))])); + SG2BMM_local[(90)] = + (SG2BMM_local[(90)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 120))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 120))])); + SG2BMM_local[(93)] = + (SG2BMM_local[(93)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 124))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 124))])); + SG2BMM_local[(96)] = + (SG2BMM_local[(96)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 128))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 128))])); + SG2BMM_local[(99)] = + (SG2BMM_local[(99)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 132))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 132))])); + SG2BMM_local[(102)] = + (SG2BMM_local[(102)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 136))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 136))])); + SG2BMM_local[(105)] = + (SG2BMM_local[(105)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 140))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 140))])); + SG2BMM_local[(108)] = + (SG2BMM_local[(108)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 144))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 144))])); + SG2BMM_local[(111)] = + (SG2BMM_local[(111)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 148))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 148))])); + SG2BMM_local[(114)] = + (SG2BMM_local[(114)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 152))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 152))])); + SG2BMM_local[(117)] = + (SG2BMM_local[(117)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 156))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 156))])); + SG2BMM_local[(0)] = + (SG2BMM_local[(0)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 1))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 1))])); + SG2BMM_local[(3)] = + (SG2BMM_local[(3)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 5))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 5))])); + SG2BMM_local[(6)] = + (SG2BMM_local[(6)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 9))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 9))])); + SG2BMM_local[(9)] = + (SG2BMM_local[(9)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 13))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 13))])); + SG2BMM_local[(12)] = + (SG2BMM_local[(12)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 17))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 17))])); + SG2BMM_local[(15)] = + (SG2BMM_local[(15)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 21))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 21))])); + SG2BMM_local[(18)] = + (SG2BMM_local[(18)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 25))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 25))])); + SG2BMM_local[(21)] = + (SG2BMM_local[(21)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 29))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 29))])); + SG2BMM_local[(24)] = + (SG2BMM_local[(24)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 33))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 33))])); + SG2BMM_local[(27)] = + (SG2BMM_local[(27)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 37))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 37))])); + SG2BMM_local[(30)] = + (SG2BMM_local[(30)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 41))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 41))])); + SG2BMM_local[(33)] = + (SG2BMM_local[(33)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 45))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 45))])); + SG2BMM_local[(36)] = + (SG2BMM_local[(36)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 49))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 49))])); + SG2BMM_local[(39)] = + (SG2BMM_local[(39)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 53))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 53))])); + SG2BMM_local[(42)] = + (SG2BMM_local[(42)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 57))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 57))])); + SG2BMM_local[(45)] = + (SG2BMM_local[(45)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 61))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 61))])); + SG2BMM_local[(48)] = + (SG2BMM_local[(48)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 65))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 65))])); + SG2BMM_local[(51)] = + (SG2BMM_local[(51)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 69))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 69))])); + SG2BMM_local[(54)] = + (SG2BMM_local[(54)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 73))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 73))])); + SG2BMM_local[(57)] = + (SG2BMM_local[(57)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 77))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 77))])); + SG2BMM_local[(60)] = + (SG2BMM_local[(60)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 81))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 81))])); + SG2BMM_local[(63)] = + (SG2BMM_local[(63)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 85))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 85))])); + SG2BMM_local[(66)] = + (SG2BMM_local[(66)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 89))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 89))])); + SG2BMM_local[(69)] = + (SG2BMM_local[(69)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 93))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 93))])); + SG2BMM_local[(72)] = + (SG2BMM_local[(72)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 97))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 97))])); + SG2BMM_local[(75)] = + (SG2BMM_local[(75)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 101))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 101))])); + SG2BMM_local[(78)] = + (SG2BMM_local[(78)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 105))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 105))])); + SG2BMM_local[(81)] = + (SG2BMM_local[(81)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 109))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 109))])); + SG2BMM_local[(84)] = + (SG2BMM_local[(84)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 113))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 113))])); + SG2BMM_local[(87)] = + (SG2BMM_local[(87)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 117))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 117))])); + SG2BMM_local[(90)] = + (SG2BMM_local[(90)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 121))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 121))])); + SG2BMM_local[(93)] = + (SG2BMM_local[(93)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 125))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 125))])); + SG2BMM_local[(96)] = + (SG2BMM_local[(96)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 129))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 129))])); + SG2BMM_local[(99)] = + (SG2BMM_local[(99)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 133))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 133))])); + SG2BMM_local[(102)] = + (SG2BMM_local[(102)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 137))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 137))])); + SG2BMM_local[(105)] = + (SG2BMM_local[(105)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 141))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 141))])); + SG2BMM_local[(108)] = + (SG2BMM_local[(108)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 145))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 145))])); + SG2BMM_local[(111)] = + (SG2BMM_local[(111)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 149))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 149))])); + SG2BMM_local[(114)] = + (SG2BMM_local[(114)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 153))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 153))])); + SG2BMM_local[(117)] = + (SG2BMM_local[(117)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 157))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 157))])); + SG2BMM_local[(0)] = + (SG2BMM_local[(0)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 2))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 2))])); + SG2BMM_local[(3)] = + (SG2BMM_local[(3)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 6))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 6))])); + SG2BMM_local[(6)] = + (SG2BMM_local[(6)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 10))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 10))])); + SG2BMM_local[(9)] = + (SG2BMM_local[(9)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 14))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 14))])); + SG2BMM_local[(12)] = + (SG2BMM_local[(12)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 18))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 18))])); + SG2BMM_local[(15)] = + (SG2BMM_local[(15)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 22))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 22))])); + SG2BMM_local[(18)] = + (SG2BMM_local[(18)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 26))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 26))])); + SG2BMM_local[(21)] = + (SG2BMM_local[(21)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 30))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 30))])); + SG2BMM_local[(24)] = + (SG2BMM_local[(24)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 34))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 34))])); + SG2BMM_local[(27)] = + (SG2BMM_local[(27)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 38))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 38))])); + SG2BMM_local[(30)] = + (SG2BMM_local[(30)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 42))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 42))])); + SG2BMM_local[(33)] = + (SG2BMM_local[(33)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 46))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 46))])); + SG2BMM_local[(36)] = + (SG2BMM_local[(36)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 50))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 50))])); + SG2BMM_local[(39)] = + (SG2BMM_local[(39)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 54))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 54))])); + SG2BMM_local[(42)] = + (SG2BMM_local[(42)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 58))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 58))])); + SG2BMM_local[(45)] = + (SG2BMM_local[(45)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 62))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 62))])); + SG2BMM_local[(48)] = + (SG2BMM_local[(48)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 66))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 66))])); + SG2BMM_local[(51)] = + (SG2BMM_local[(51)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 70))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 70))])); + SG2BMM_local[(54)] = + (SG2BMM_local[(54)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 74))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 74))])); + SG2BMM_local[(57)] = + (SG2BMM_local[(57)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 78))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 78))])); + SG2BMM_local[(60)] = + (SG2BMM_local[(60)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 82))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 82))])); + SG2BMM_local[(63)] = + (SG2BMM_local[(63)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 86))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 86))])); + SG2BMM_local[(66)] = + (SG2BMM_local[(66)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 90))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 90))])); + SG2BMM_local[(69)] = + (SG2BMM_local[(69)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 94))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 94))])); + SG2BMM_local[(72)] = + (SG2BMM_local[(72)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 98))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 98))])); + SG2BMM_local[(75)] = + (SG2BMM_local[(75)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 102))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 102))])); + SG2BMM_local[(78)] = + (SG2BMM_local[(78)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 106))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 106))])); + SG2BMM_local[(81)] = + (SG2BMM_local[(81)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 110))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 110))])); + SG2BMM_local[(84)] = + (SG2BMM_local[(84)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 114))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 114))])); + SG2BMM_local[(87)] = + (SG2BMM_local[(87)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 118))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 118))])); + SG2BMM_local[(90)] = + (SG2BMM_local[(90)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 122))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 122))])); + SG2BMM_local[(93)] = + (SG2BMM_local[(93)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 126))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 126))])); + SG2BMM_local[(96)] = + (SG2BMM_local[(96)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 130))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 130))])); + SG2BMM_local[(99)] = + (SG2BMM_local[(99)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 134))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 134))])); + SG2BMM_local[(102)] = + (SG2BMM_local[(102)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 138))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 138))])); + SG2BMM_local[(105)] = + (SG2BMM_local[(105)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 142))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 142))])); + SG2BMM_local[(108)] = + (SG2BMM_local[(108)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 146))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 146))])); + SG2BMM_local[(111)] = + (SG2BMM_local[(111)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 150))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 150))])); + SG2BMM_local[(114)] = + (SG2BMM_local[(114)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 154))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 154))])); + SG2BMM_local[(117)] = + (SG2BMM_local[(117)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 158))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 158))])); + SG2BMM_local[(0)] = + (SG2BMM_local[(0)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 3))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 3))])); + SG2BMM_local[(3)] = + (SG2BMM_local[(3)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 7))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 7))])); + SG2BMM_local[(6)] = + (SG2BMM_local[(6)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 11))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 11))])); + SG2BMM_local[(9)] = + (SG2BMM_local[(9)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 15))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 15))])); + SG2BMM_local[(12)] = + (SG2BMM_local[(12)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 19))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 19))])); + SG2BMM_local[(15)] = + (SG2BMM_local[(15)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 23))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 23))])); + SG2BMM_local[(18)] = + (SG2BMM_local[(18)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 27))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 27))])); + SG2BMM_local[(21)] = + (SG2BMM_local[(21)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 31))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 31))])); + SG2BMM_local[(24)] = + (SG2BMM_local[(24)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 35))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 35))])); + SG2BMM_local[(27)] = + (SG2BMM_local[(27)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 39))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 39))])); + SG2BMM_local[(30)] = + (SG2BMM_local[(30)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 43))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 43))])); + SG2BMM_local[(33)] = + (SG2BMM_local[(33)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 47))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 47))])); + SG2BMM_local[(36)] = + (SG2BMM_local[(36)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 51))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 51))])); + SG2BMM_local[(39)] = + (SG2BMM_local[(39)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 55))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 55))])); + SG2BMM_local[(42)] = + (SG2BMM_local[(42)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 59))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 59))])); + SG2BMM_local[(45)] = + (SG2BMM_local[(45)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 63))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 63))])); + SG2BMM_local[(48)] = + (SG2BMM_local[(48)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 67))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 67))])); + SG2BMM_local[(51)] = + (SG2BMM_local[(51)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 71))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 71))])); + SG2BMM_local[(54)] = + (SG2BMM_local[(54)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 75))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 75))])); + SG2BMM_local[(57)] = + (SG2BMM_local[(57)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 79))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 79))])); + SG2BMM_local[(60)] = + (SG2BMM_local[(60)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 83))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 83))])); + SG2BMM_local[(63)] = + (SG2BMM_local[(63)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 87))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 87))])); + SG2BMM_local[(66)] = + (SG2BMM_local[(66)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 91))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 91))])); + SG2BMM_local[(69)] = + (SG2BMM_local[(69)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 95))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 95))])); + SG2BMM_local[(72)] = + (SG2BMM_local[(72)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 99))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 99))])); + SG2BMM_local[(75)] = + (SG2BMM_local[(75)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 103))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 103))])); + SG2BMM_local[(78)] = + (SG2BMM_local[(78)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 107))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 107))])); + SG2BMM_local[(81)] = + (SG2BMM_local[(81)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 111))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 111))])); + SG2BMM_local[(84)] = + (SG2BMM_local[(84)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 115))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 115))])); + SG2BMM_local[(87)] = + (SG2BMM_local[(87)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 119))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 119))])); + SG2BMM_local[(90)] = + (SG2BMM_local[(90)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 123))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 123))])); + SG2BMM_local[(93)] = + (SG2BMM_local[(93)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 127))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 127))])); + SG2BMM_local[(96)] = + (SG2BMM_local[(96)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 131))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 131))])); + SG2BMM_local[(99)] = + (SG2BMM_local[(99)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 135))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 135))])); + SG2BMM_local[(102)] = + (SG2BMM_local[(102)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 139))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 139))])); + SG2BMM_local[(105)] = + (SG2BMM_local[(105)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 143))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 143))])); + SG2BMM_local[(108)] = + (SG2BMM_local[(108)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 147))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 147))])); + SG2BMM_local[(111)] = + (SG2BMM_local[(111)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 151))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 151))])); + SG2BMM_local[(114)] = + (SG2BMM_local[(114)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 155))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 155))])); + SG2BMM_local[(117)] = + (SG2BMM_local[(117)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 159))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 159))])); + SG2BMM_local[(1)] = (SG2BMM_local[(1)] + + (q_shared[(((((int)threadIdx.x) / 29) * 160))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 4))])); + SG2BMM_local[(4)] = + (SG2BMM_local[(4)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 4))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 8))])); + SG2BMM_local[(7)] = + (SG2BMM_local[(7)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 8))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 12))])); + SG2BMM_local[(10)] = + (SG2BMM_local[(10)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 12))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 16))])); + SG2BMM_local[(13)] = + (SG2BMM_local[(13)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 16))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 20))])); + SG2BMM_local[(16)] = + (SG2BMM_local[(16)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 20))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 24))])); + SG2BMM_local[(19)] = + (SG2BMM_local[(19)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 24))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 28))])); + SG2BMM_local[(22)] = + (SG2BMM_local[(22)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 28))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 32))])); + SG2BMM_local[(25)] = + (SG2BMM_local[(25)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 32))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 36))])); + SG2BMM_local[(28)] = + (SG2BMM_local[(28)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 36))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 40))])); + SG2BMM_local[(31)] = + (SG2BMM_local[(31)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 40))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 44))])); + SG2BMM_local[(34)] = + (SG2BMM_local[(34)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 44))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 48))])); + SG2BMM_local[(37)] = + (SG2BMM_local[(37)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 48))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 52))])); + SG2BMM_local[(40)] = + (SG2BMM_local[(40)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 52))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 56))])); + SG2BMM_local[(43)] = + (SG2BMM_local[(43)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 56))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 60))])); + SG2BMM_local[(46)] = + (SG2BMM_local[(46)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 60))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 64))])); + SG2BMM_local[(49)] = + (SG2BMM_local[(49)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 64))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 68))])); + SG2BMM_local[(52)] = + (SG2BMM_local[(52)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 68))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 72))])); + SG2BMM_local[(55)] = + (SG2BMM_local[(55)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 72))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 76))])); + SG2BMM_local[(58)] = + (SG2BMM_local[(58)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 76))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 80))])); + SG2BMM_local[(61)] = + (SG2BMM_local[(61)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 80))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 84))])); + SG2BMM_local[(64)] = + (SG2BMM_local[(64)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 84))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 88))])); + SG2BMM_local[(67)] = + (SG2BMM_local[(67)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 88))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 92))])); + SG2BMM_local[(70)] = + (SG2BMM_local[(70)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 92))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 96))])); + SG2BMM_local[(73)] = + (SG2BMM_local[(73)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 96))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 100))])); + SG2BMM_local[(76)] = + (SG2BMM_local[(76)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 100))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 104))])); + SG2BMM_local[(79)] = + (SG2BMM_local[(79)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 104))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 108))])); + SG2BMM_local[(82)] = + (SG2BMM_local[(82)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 108))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 112))])); + SG2BMM_local[(85)] = + (SG2BMM_local[(85)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 112))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 116))])); + SG2BMM_local[(88)] = + (SG2BMM_local[(88)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 116))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 120))])); + SG2BMM_local[(91)] = + (SG2BMM_local[(91)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 120))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 124))])); + SG2BMM_local[(94)] = + (SG2BMM_local[(94)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 124))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 128))])); + SG2BMM_local[(97)] = + (SG2BMM_local[(97)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 128))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 132))])); + SG2BMM_local[(100)] = + (SG2BMM_local[(100)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 132))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 136))])); + SG2BMM_local[(103)] = + (SG2BMM_local[(103)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 136))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 140))])); + SG2BMM_local[(106)] = + (SG2BMM_local[(106)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 140))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 144))])); + SG2BMM_local[(109)] = + (SG2BMM_local[(109)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 144))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 148))])); + SG2BMM_local[(112)] = + (SG2BMM_local[(112)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 148))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 152))])); + SG2BMM_local[(115)] = + (SG2BMM_local[(115)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 152))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 156))])); + SG2BMM_local[(118)] = + (SG2BMM_local[(118)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 156))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 160))])); + SG2BMM_local[(1)] = + (SG2BMM_local[(1)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 1))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 5))])); + SG2BMM_local[(4)] = + (SG2BMM_local[(4)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 5))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 9))])); + SG2BMM_local[(7)] = + (SG2BMM_local[(7)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 9))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 13))])); + SG2BMM_local[(10)] = + (SG2BMM_local[(10)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 13))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 17))])); + SG2BMM_local[(13)] = + (SG2BMM_local[(13)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 17))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 21))])); + SG2BMM_local[(16)] = + (SG2BMM_local[(16)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 21))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 25))])); + SG2BMM_local[(19)] = + (SG2BMM_local[(19)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 25))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 29))])); + SG2BMM_local[(22)] = + (SG2BMM_local[(22)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 29))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 33))])); + SG2BMM_local[(25)] = + (SG2BMM_local[(25)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 33))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 37))])); + SG2BMM_local[(28)] = + (SG2BMM_local[(28)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 37))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 41))])); + SG2BMM_local[(31)] = + (SG2BMM_local[(31)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 41))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 45))])); + SG2BMM_local[(34)] = + (SG2BMM_local[(34)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 45))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 49))])); + SG2BMM_local[(37)] = + (SG2BMM_local[(37)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 49))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 53))])); + SG2BMM_local[(40)] = + (SG2BMM_local[(40)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 53))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 57))])); + SG2BMM_local[(43)] = + (SG2BMM_local[(43)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 57))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 61))])); + SG2BMM_local[(46)] = + (SG2BMM_local[(46)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 61))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 65))])); + SG2BMM_local[(49)] = + (SG2BMM_local[(49)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 65))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 69))])); + SG2BMM_local[(52)] = + (SG2BMM_local[(52)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 69))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 73))])); + SG2BMM_local[(55)] = + (SG2BMM_local[(55)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 73))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 77))])); + SG2BMM_local[(58)] = + (SG2BMM_local[(58)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 77))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 81))])); + SG2BMM_local[(61)] = + (SG2BMM_local[(61)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 81))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 85))])); + SG2BMM_local[(64)] = + (SG2BMM_local[(64)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 85))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 89))])); + SG2BMM_local[(67)] = + (SG2BMM_local[(67)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 89))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 93))])); + SG2BMM_local[(70)] = + (SG2BMM_local[(70)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 93))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 97))])); + SG2BMM_local[(73)] = + (SG2BMM_local[(73)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 97))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 101))])); + SG2BMM_local[(76)] = + (SG2BMM_local[(76)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 101))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 105))])); + SG2BMM_local[(79)] = + (SG2BMM_local[(79)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 105))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 109))])); + SG2BMM_local[(82)] = + (SG2BMM_local[(82)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 109))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 113))])); + SG2BMM_local[(85)] = + (SG2BMM_local[(85)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 113))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 117))])); + SG2BMM_local[(88)] = + (SG2BMM_local[(88)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 117))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 121))])); + SG2BMM_local[(91)] = + (SG2BMM_local[(91)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 121))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 125))])); + SG2BMM_local[(94)] = + (SG2BMM_local[(94)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 125))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 129))])); + SG2BMM_local[(97)] = + (SG2BMM_local[(97)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 129))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 133))])); + SG2BMM_local[(100)] = + (SG2BMM_local[(100)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 133))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 137))])); + SG2BMM_local[(103)] = + (SG2BMM_local[(103)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 137))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 141))])); + SG2BMM_local[(106)] = + (SG2BMM_local[(106)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 141))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 145))])); + SG2BMM_local[(109)] = + (SG2BMM_local[(109)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 145))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 149))])); + SG2BMM_local[(112)] = + (SG2BMM_local[(112)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 149))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 153))])); + SG2BMM_local[(115)] = + (SG2BMM_local[(115)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 153))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 157))])); + SG2BMM_local[(118)] = + (SG2BMM_local[(118)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 157))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 161))])); + SG2BMM_local[(1)] = + (SG2BMM_local[(1)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 2))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 6))])); + SG2BMM_local[(4)] = + (SG2BMM_local[(4)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 6))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 10))])); + SG2BMM_local[(7)] = + (SG2BMM_local[(7)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 10))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 14))])); + SG2BMM_local[(10)] = + (SG2BMM_local[(10)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 14))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 18))])); + SG2BMM_local[(13)] = + (SG2BMM_local[(13)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 18))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 22))])); + SG2BMM_local[(16)] = + (SG2BMM_local[(16)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 22))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 26))])); + SG2BMM_local[(19)] = + (SG2BMM_local[(19)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 26))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 30))])); + SG2BMM_local[(22)] = + (SG2BMM_local[(22)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 30))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 34))])); + SG2BMM_local[(25)] = + (SG2BMM_local[(25)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 34))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 38))])); + SG2BMM_local[(28)] = + (SG2BMM_local[(28)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 38))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 42))])); + SG2BMM_local[(31)] = + (SG2BMM_local[(31)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 42))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 46))])); + SG2BMM_local[(34)] = + (SG2BMM_local[(34)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 46))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 50))])); + SG2BMM_local[(37)] = + (SG2BMM_local[(37)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 50))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 54))])); + SG2BMM_local[(40)] = + (SG2BMM_local[(40)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 54))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 58))])); + SG2BMM_local[(43)] = + (SG2BMM_local[(43)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 58))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 62))])); + SG2BMM_local[(46)] = + (SG2BMM_local[(46)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 62))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 66))])); + SG2BMM_local[(49)] = + (SG2BMM_local[(49)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 66))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 70))])); + SG2BMM_local[(52)] = + (SG2BMM_local[(52)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 70))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 74))])); + SG2BMM_local[(55)] = + (SG2BMM_local[(55)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 74))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 78))])); + SG2BMM_local[(58)] = + (SG2BMM_local[(58)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 78))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 82))])); + SG2BMM_local[(61)] = + (SG2BMM_local[(61)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 82))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 86))])); + SG2BMM_local[(64)] = + (SG2BMM_local[(64)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 86))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 90))])); + SG2BMM_local[(67)] = + (SG2BMM_local[(67)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 90))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 94))])); + SG2BMM_local[(70)] = + (SG2BMM_local[(70)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 94))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 98))])); + SG2BMM_local[(73)] = + (SG2BMM_local[(73)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 98))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 102))])); + SG2BMM_local[(76)] = + (SG2BMM_local[(76)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 102))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 106))])); + SG2BMM_local[(79)] = + (SG2BMM_local[(79)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 106))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 110))])); + SG2BMM_local[(82)] = + (SG2BMM_local[(82)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 110))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 114))])); + SG2BMM_local[(85)] = + (SG2BMM_local[(85)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 114))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 118))])); + SG2BMM_local[(88)] = + (SG2BMM_local[(88)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 118))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 122))])); + SG2BMM_local[(91)] = + (SG2BMM_local[(91)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 122))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 126))])); + SG2BMM_local[(94)] = + (SG2BMM_local[(94)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 126))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 130))])); + SG2BMM_local[(97)] = + (SG2BMM_local[(97)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 130))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 134))])); + SG2BMM_local[(100)] = + (SG2BMM_local[(100)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 134))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 138))])); + SG2BMM_local[(103)] = + (SG2BMM_local[(103)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 138))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 142))])); + SG2BMM_local[(106)] = + (SG2BMM_local[(106)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 142))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 146))])); + SG2BMM_local[(109)] = + (SG2BMM_local[(109)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 146))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 150))])); + SG2BMM_local[(112)] = + (SG2BMM_local[(112)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 150))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 154))])); + SG2BMM_local[(115)] = + (SG2BMM_local[(115)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 154))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 158))])); + SG2BMM_local[(118)] = + (SG2BMM_local[(118)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 158))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 162))])); + SG2BMM_local[(1)] = + (SG2BMM_local[(1)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 3))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 7))])); + SG2BMM_local[(4)] = + (SG2BMM_local[(4)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 7))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 11))])); + SG2BMM_local[(7)] = + (SG2BMM_local[(7)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 11))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 15))])); + SG2BMM_local[(10)] = + (SG2BMM_local[(10)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 15))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 19))])); + SG2BMM_local[(13)] = + (SG2BMM_local[(13)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 19))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 23))])); + SG2BMM_local[(16)] = + (SG2BMM_local[(16)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 23))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 27))])); + SG2BMM_local[(19)] = + (SG2BMM_local[(19)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 27))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 31))])); + SG2BMM_local[(22)] = + (SG2BMM_local[(22)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 31))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 35))])); + SG2BMM_local[(25)] = + (SG2BMM_local[(25)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 35))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 39))])); + SG2BMM_local[(28)] = + (SG2BMM_local[(28)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 39))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 43))])); + SG2BMM_local[(31)] = + (SG2BMM_local[(31)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 43))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 47))])); + SG2BMM_local[(34)] = + (SG2BMM_local[(34)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 47))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 51))])); + SG2BMM_local[(37)] = + (SG2BMM_local[(37)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 51))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 55))])); + SG2BMM_local[(40)] = + (SG2BMM_local[(40)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 55))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 59))])); + SG2BMM_local[(43)] = + (SG2BMM_local[(43)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 59))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 63))])); + SG2BMM_local[(46)] = + (SG2BMM_local[(46)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 63))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 67))])); + SG2BMM_local[(49)] = + (SG2BMM_local[(49)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 67))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 71))])); + SG2BMM_local[(52)] = + (SG2BMM_local[(52)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 71))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 75))])); + SG2BMM_local[(55)] = + (SG2BMM_local[(55)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 75))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 79))])); + SG2BMM_local[(58)] = + (SG2BMM_local[(58)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 79))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 83))])); + SG2BMM_local[(61)] = + (SG2BMM_local[(61)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 83))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 87))])); + SG2BMM_local[(64)] = + (SG2BMM_local[(64)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 87))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 91))])); + SG2BMM_local[(67)] = + (SG2BMM_local[(67)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 91))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 95))])); + SG2BMM_local[(70)] = + (SG2BMM_local[(70)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 95))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 99))])); + SG2BMM_local[(73)] = + (SG2BMM_local[(73)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 99))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 103))])); + SG2BMM_local[(76)] = + (SG2BMM_local[(76)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 103))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 107))])); + SG2BMM_local[(79)] = + (SG2BMM_local[(79)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 107))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 111))])); + SG2BMM_local[(82)] = + (SG2BMM_local[(82)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 111))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 115))])); + SG2BMM_local[(85)] = + (SG2BMM_local[(85)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 115))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 119))])); + SG2BMM_local[(88)] = + (SG2BMM_local[(88)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 119))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 123))])); + SG2BMM_local[(91)] = + (SG2BMM_local[(91)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 123))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 127))])); + SG2BMM_local[(94)] = + (SG2BMM_local[(94)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 127))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 131))])); + SG2BMM_local[(97)] = + (SG2BMM_local[(97)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 131))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 135))])); + SG2BMM_local[(100)] = + (SG2BMM_local[(100)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 135))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 139))])); + SG2BMM_local[(103)] = + (SG2BMM_local[(103)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 139))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 143))])); + SG2BMM_local[(106)] = + (SG2BMM_local[(106)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 143))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 147))])); + SG2BMM_local[(109)] = + (SG2BMM_local[(109)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 147))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 151))])); + SG2BMM_local[(112)] = + (SG2BMM_local[(112)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 151))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 155))])); + SG2BMM_local[(115)] = + (SG2BMM_local[(115)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 155))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 159))])); + SG2BMM_local[(118)] = + (SG2BMM_local[(118)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 159))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 163))])); + SG2BMM_local[(2)] = (SG2BMM_local[(2)] + + (q_shared[(((((int)threadIdx.x) / 29) * 160))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 8))])); + SG2BMM_local[(5)] = + (SG2BMM_local[(5)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 4))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 12))])); + SG2BMM_local[(8)] = + (SG2BMM_local[(8)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 8))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 16))])); + SG2BMM_local[(11)] = + (SG2BMM_local[(11)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 12))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 20))])); + SG2BMM_local[(14)] = + (SG2BMM_local[(14)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 16))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 24))])); + SG2BMM_local[(17)] = + (SG2BMM_local[(17)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 20))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 28))])); + SG2BMM_local[(20)] = + (SG2BMM_local[(20)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 24))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 32))])); + SG2BMM_local[(23)] = + (SG2BMM_local[(23)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 28))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 36))])); + SG2BMM_local[(26)] = + (SG2BMM_local[(26)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 32))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 40))])); + SG2BMM_local[(29)] = + (SG2BMM_local[(29)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 36))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 44))])); + SG2BMM_local[(32)] = + (SG2BMM_local[(32)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 40))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 48))])); + SG2BMM_local[(35)] = + (SG2BMM_local[(35)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 44))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 52))])); + SG2BMM_local[(38)] = + (SG2BMM_local[(38)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 48))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 56))])); + SG2BMM_local[(41)] = + (SG2BMM_local[(41)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 52))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 60))])); + SG2BMM_local[(44)] = + (SG2BMM_local[(44)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 56))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 64))])); + SG2BMM_local[(47)] = + (SG2BMM_local[(47)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 60))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 68))])); + SG2BMM_local[(50)] = + (SG2BMM_local[(50)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 64))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 72))])); + SG2BMM_local[(53)] = + (SG2BMM_local[(53)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 68))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 76))])); + SG2BMM_local[(56)] = + (SG2BMM_local[(56)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 72))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 80))])); + SG2BMM_local[(59)] = + (SG2BMM_local[(59)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 76))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 84))])); + SG2BMM_local[(62)] = + (SG2BMM_local[(62)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 80))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 88))])); + SG2BMM_local[(65)] = + (SG2BMM_local[(65)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 84))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 92))])); + SG2BMM_local[(68)] = + (SG2BMM_local[(68)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 88))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 96))])); + SG2BMM_local[(71)] = + (SG2BMM_local[(71)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 92))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 100))])); + SG2BMM_local[(74)] = + (SG2BMM_local[(74)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 96))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 104))])); + SG2BMM_local[(77)] = + (SG2BMM_local[(77)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 100))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 108))])); + SG2BMM_local[(80)] = + (SG2BMM_local[(80)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 104))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 112))])); + SG2BMM_local[(83)] = + (SG2BMM_local[(83)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 108))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 116))])); + SG2BMM_local[(86)] = + (SG2BMM_local[(86)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 112))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 120))])); + SG2BMM_local[(89)] = + (SG2BMM_local[(89)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 116))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 124))])); + SG2BMM_local[(92)] = + (SG2BMM_local[(92)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 120))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 128))])); + SG2BMM_local[(95)] = + (SG2BMM_local[(95)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 124))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 132))])); + SG2BMM_local[(98)] = + (SG2BMM_local[(98)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 128))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 136))])); + SG2BMM_local[(101)] = + (SG2BMM_local[(101)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 132))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 140))])); + SG2BMM_local[(104)] = + (SG2BMM_local[(104)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 136))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 144))])); + SG2BMM_local[(107)] = + (SG2BMM_local[(107)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 140))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 148))])); + SG2BMM_local[(110)] = + (SG2BMM_local[(110)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 144))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 152))])); + SG2BMM_local[(113)] = + (SG2BMM_local[(113)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 148))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 156))])); + SG2BMM_local[(116)] = + (SG2BMM_local[(116)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 152))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 160))])); + SG2BMM_local[(119)] = + (SG2BMM_local[(119)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 156))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 164))])); + SG2BMM_local[(2)] = + (SG2BMM_local[(2)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 1))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 9))])); + SG2BMM_local[(5)] = + (SG2BMM_local[(5)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 5))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 13))])); + SG2BMM_local[(8)] = + (SG2BMM_local[(8)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 9))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 17))])); + SG2BMM_local[(11)] = + (SG2BMM_local[(11)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 13))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 21))])); + SG2BMM_local[(14)] = + (SG2BMM_local[(14)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 17))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 25))])); + SG2BMM_local[(17)] = + (SG2BMM_local[(17)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 21))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 29))])); + SG2BMM_local[(20)] = + (SG2BMM_local[(20)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 25))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 33))])); + SG2BMM_local[(23)] = + (SG2BMM_local[(23)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 29))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 37))])); + SG2BMM_local[(26)] = + (SG2BMM_local[(26)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 33))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 41))])); + SG2BMM_local[(29)] = + (SG2BMM_local[(29)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 37))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 45))])); + SG2BMM_local[(32)] = + (SG2BMM_local[(32)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 41))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 49))])); + SG2BMM_local[(35)] = + (SG2BMM_local[(35)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 45))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 53))])); + SG2BMM_local[(38)] = + (SG2BMM_local[(38)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 49))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 57))])); + SG2BMM_local[(41)] = + (SG2BMM_local[(41)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 53))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 61))])); + SG2BMM_local[(44)] = + (SG2BMM_local[(44)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 57))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 65))])); + SG2BMM_local[(47)] = + (SG2BMM_local[(47)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 61))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 69))])); + SG2BMM_local[(50)] = + (SG2BMM_local[(50)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 65))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 73))])); + SG2BMM_local[(53)] = + (SG2BMM_local[(53)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 69))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 77))])); + SG2BMM_local[(56)] = + (SG2BMM_local[(56)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 73))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 81))])); + SG2BMM_local[(59)] = + (SG2BMM_local[(59)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 77))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 85))])); + SG2BMM_local[(62)] = + (SG2BMM_local[(62)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 81))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 89))])); + SG2BMM_local[(65)] = + (SG2BMM_local[(65)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 85))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 93))])); + SG2BMM_local[(68)] = + (SG2BMM_local[(68)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 89))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 97))])); + SG2BMM_local[(71)] = + (SG2BMM_local[(71)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 93))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 101))])); + SG2BMM_local[(74)] = + (SG2BMM_local[(74)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 97))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 105))])); + SG2BMM_local[(77)] = + (SG2BMM_local[(77)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 101))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 109))])); + SG2BMM_local[(80)] = + (SG2BMM_local[(80)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 105))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 113))])); + SG2BMM_local[(83)] = + (SG2BMM_local[(83)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 109))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 117))])); + SG2BMM_local[(86)] = + (SG2BMM_local[(86)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 113))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 121))])); + SG2BMM_local[(89)] = + (SG2BMM_local[(89)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 117))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 125))])); + SG2BMM_local[(92)] = + (SG2BMM_local[(92)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 121))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 129))])); + SG2BMM_local[(95)] = + (SG2BMM_local[(95)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 125))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 133))])); + SG2BMM_local[(98)] = + (SG2BMM_local[(98)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 129))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 137))])); + SG2BMM_local[(101)] = + (SG2BMM_local[(101)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 133))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 141))])); + SG2BMM_local[(104)] = + (SG2BMM_local[(104)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 137))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 145))])); + SG2BMM_local[(107)] = + (SG2BMM_local[(107)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 141))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 149))])); + SG2BMM_local[(110)] = + (SG2BMM_local[(110)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 145))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 153))])); + SG2BMM_local[(113)] = + (SG2BMM_local[(113)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 149))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 157))])); + SG2BMM_local[(116)] = + (SG2BMM_local[(116)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 153))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 161))])); + SG2BMM_local[(119)] = + (SG2BMM_local[(119)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 157))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 165))])); + SG2BMM_local[(2)] = + (SG2BMM_local[(2)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 2))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 10))])); + SG2BMM_local[(5)] = + (SG2BMM_local[(5)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 6))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 14))])); + SG2BMM_local[(8)] = + (SG2BMM_local[(8)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 10))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 18))])); + SG2BMM_local[(11)] = + (SG2BMM_local[(11)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 14))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 22))])); + SG2BMM_local[(14)] = + (SG2BMM_local[(14)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 18))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 26))])); + SG2BMM_local[(17)] = + (SG2BMM_local[(17)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 22))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 30))])); + SG2BMM_local[(20)] = + (SG2BMM_local[(20)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 26))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 34))])); + SG2BMM_local[(23)] = + (SG2BMM_local[(23)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 30))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 38))])); + SG2BMM_local[(26)] = + (SG2BMM_local[(26)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 34))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 42))])); + SG2BMM_local[(29)] = + (SG2BMM_local[(29)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 38))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 46))])); + SG2BMM_local[(32)] = + (SG2BMM_local[(32)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 42))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 50))])); + SG2BMM_local[(35)] = + (SG2BMM_local[(35)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 46))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 54))])); + SG2BMM_local[(38)] = + (SG2BMM_local[(38)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 50))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 58))])); + SG2BMM_local[(41)] = + (SG2BMM_local[(41)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 54))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 62))])); + SG2BMM_local[(44)] = + (SG2BMM_local[(44)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 58))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 66))])); + SG2BMM_local[(47)] = + (SG2BMM_local[(47)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 62))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 70))])); + SG2BMM_local[(50)] = + (SG2BMM_local[(50)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 66))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 74))])); + SG2BMM_local[(53)] = + (SG2BMM_local[(53)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 70))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 78))])); + SG2BMM_local[(56)] = + (SG2BMM_local[(56)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 74))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 82))])); + SG2BMM_local[(59)] = + (SG2BMM_local[(59)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 78))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 86))])); + SG2BMM_local[(62)] = + (SG2BMM_local[(62)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 82))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 90))])); + SG2BMM_local[(65)] = + (SG2BMM_local[(65)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 86))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 94))])); + SG2BMM_local[(68)] = + (SG2BMM_local[(68)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 90))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 98))])); + SG2BMM_local[(71)] = + (SG2BMM_local[(71)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 94))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 102))])); + SG2BMM_local[(74)] = + (SG2BMM_local[(74)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 98))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 106))])); + SG2BMM_local[(77)] = + (SG2BMM_local[(77)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 102))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 110))])); + SG2BMM_local[(80)] = + (SG2BMM_local[(80)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 106))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 114))])); + SG2BMM_local[(83)] = + (SG2BMM_local[(83)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 110))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 118))])); + SG2BMM_local[(86)] = + (SG2BMM_local[(86)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 114))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 122))])); + SG2BMM_local[(89)] = + (SG2BMM_local[(89)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 118))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 126))])); + SG2BMM_local[(92)] = + (SG2BMM_local[(92)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 122))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 130))])); + SG2BMM_local[(95)] = + (SG2BMM_local[(95)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 126))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 134))])); + SG2BMM_local[(98)] = + (SG2BMM_local[(98)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 130))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 138))])); + SG2BMM_local[(101)] = + (SG2BMM_local[(101)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 134))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 142))])); + SG2BMM_local[(104)] = + (SG2BMM_local[(104)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 138))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 146))])); + SG2BMM_local[(107)] = + (SG2BMM_local[(107)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 142))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 150))])); + SG2BMM_local[(110)] = + (SG2BMM_local[(110)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 146))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 154))])); + SG2BMM_local[(113)] = + (SG2BMM_local[(113)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 150))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 158))])); + SG2BMM_local[(116)] = + (SG2BMM_local[(116)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 154))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 162))])); + SG2BMM_local[(119)] = + (SG2BMM_local[(119)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 158))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 166))])); + SG2BMM_local[(2)] = + (SG2BMM_local[(2)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 3))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 11))])); + SG2BMM_local[(5)] = + (SG2BMM_local[(5)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 7))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 15))])); + SG2BMM_local[(8)] = + (SG2BMM_local[(8)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 11))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 19))])); + SG2BMM_local[(11)] = + (SG2BMM_local[(11)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 15))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 23))])); + SG2BMM_local[(14)] = + (SG2BMM_local[(14)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 19))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 27))])); + SG2BMM_local[(17)] = + (SG2BMM_local[(17)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 23))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 31))])); + SG2BMM_local[(20)] = + (SG2BMM_local[(20)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 27))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 35))])); + SG2BMM_local[(23)] = + (SG2BMM_local[(23)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 31))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 39))])); + SG2BMM_local[(26)] = + (SG2BMM_local[(26)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 35))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 43))])); + SG2BMM_local[(29)] = + (SG2BMM_local[(29)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 39))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 47))])); + SG2BMM_local[(32)] = + (SG2BMM_local[(32)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 43))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 51))])); + SG2BMM_local[(35)] = + (SG2BMM_local[(35)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 47))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 55))])); + SG2BMM_local[(38)] = + (SG2BMM_local[(38)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 51))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 59))])); + SG2BMM_local[(41)] = + (SG2BMM_local[(41)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 55))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 63))])); + SG2BMM_local[(44)] = + (SG2BMM_local[(44)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 59))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 67))])); + SG2BMM_local[(47)] = + (SG2BMM_local[(47)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 63))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 71))])); + SG2BMM_local[(50)] = + (SG2BMM_local[(50)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 67))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 75))])); + SG2BMM_local[(53)] = + (SG2BMM_local[(53)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 71))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 79))])); + SG2BMM_local[(56)] = + (SG2BMM_local[(56)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 75))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 83))])); + SG2BMM_local[(59)] = + (SG2BMM_local[(59)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 79))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 87))])); + SG2BMM_local[(62)] = + (SG2BMM_local[(62)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 83))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 91))])); + SG2BMM_local[(65)] = + (SG2BMM_local[(65)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 87))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 95))])); + SG2BMM_local[(68)] = + (SG2BMM_local[(68)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 91))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 99))])); + SG2BMM_local[(71)] = + (SG2BMM_local[(71)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 95))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 103))])); + SG2BMM_local[(74)] = + (SG2BMM_local[(74)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 99))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 107))])); + SG2BMM_local[(77)] = + (SG2BMM_local[(77)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 103))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 111))])); + SG2BMM_local[(80)] = + (SG2BMM_local[(80)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 107))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 115))])); + SG2BMM_local[(83)] = + (SG2BMM_local[(83)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 111))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 119))])); + SG2BMM_local[(86)] = + (SG2BMM_local[(86)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 115))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 123))])); + SG2BMM_local[(89)] = + (SG2BMM_local[(89)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 119))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 127))])); + SG2BMM_local[(92)] = + (SG2BMM_local[(92)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 123))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 131))])); + SG2BMM_local[(95)] = + (SG2BMM_local[(95)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 127))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 135))])); + SG2BMM_local[(98)] = + (SG2BMM_local[(98)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 131))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 139))])); + SG2BMM_local[(101)] = + (SG2BMM_local[(101)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 135))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 143))])); + SG2BMM_local[(104)] = + (SG2BMM_local[(104)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 139))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 147))])); + SG2BMM_local[(107)] = + (SG2BMM_local[(107)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 143))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 151))])); + SG2BMM_local[(110)] = + (SG2BMM_local[(110)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 147))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 155))])); + SG2BMM_local[(113)] = + (SG2BMM_local[(113)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 151))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 159))])); + SG2BMM_local[(116)] = + (SG2BMM_local[(116)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 155))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 163))])); + SG2BMM_local[(119)] = + (SG2BMM_local[(119)] + + (q_shared[((((((int)threadIdx.x) / 29) * 160) + 159))] * + Kpad_shared[(((((((int)threadIdx.x) / 29) * 160) + + ((((int)threadIdx.x) % 29) * 12)) + + 167))])); + } + for (int j_inner = 0; j_inner < 40; ++j_inner) { + for (int k_inner = 0; k_inner < 3; ++k_inner) { + SG2BMM[((((((((((int)blockIdx.x) / 23) * 160080) + + ((((int)threadIdx.x) / 29) * 80040)) + + (j_inner * 2001)) + + ((((int)blockIdx.x) % 23) * 87)) + + ((((int)threadIdx.x) % 29) * 3)) + + k_inner))] = SG2BMM_local[(((j_inner * 3) + k_inner))]; + } + } +} + +__global__ void __launch_bounds__(276) + sg2bmm_bs1_n10000_m64_w1000_d4_kernel0(float *__restrict__ q, + float *__restrict__ k, + float *__restrict__ SG2BMM) { + float SG2BMM_local[145]; + __shared__ float q_shared[20]; + __shared__ float Kpad_shared[8020]; + for (int k_c_inner_init = 0; k_c_inner_init < 29; ++k_c_inner_init) { + SG2BMM_local[(k_c_inner_init)] = 0.000000e+00f; + SG2BMM_local[((k_c_inner_init + 29))] = 0.000000e+00f; + SG2BMM_local[((k_c_inner_init + 58))] = 0.000000e+00f; + SG2BMM_local[((k_c_inner_init + 87))] = 0.000000e+00f; + SG2BMM_local[((k_c_inner_init + 116))] = 0.000000e+00f; + } + for (int p_outer_outer = 0; p_outer_outer < 64; ++p_outer_outer) { + __syncthreads(); + if (((int)threadIdx.x) < 20) { + q_shared[(((int)threadIdx.x))] = + q[((((((int)blockIdx.x) * 1280) + (((int)threadIdx.x) * 64)) + + p_outer_outer))]; + } + Kpad_shared[(((int)threadIdx.x))] = + ((4000 <= (((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x))) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) - + 256000))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 276))] = + ((3724 <= (((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x))) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) - + 238336))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 552))] = + ((3448 <= (((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x))) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) - + 220672))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 828))] = + ((3172 <= (((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x))) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) - + 203008))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 1104))] = + ((2896 <= (((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x))) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) - + 185344))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 1380))] = + ((2620 <= (((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x))) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) - + 167680))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 1656))] = + ((2344 <= (((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x))) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) - + 150016))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 1932))] = + ((2068 <= (((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x))) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) - + 132352))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 2208))] = + ((1792 <= (((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x))) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) - + 114688))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 2484))] = + ((1516 <= (((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x))) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) - + 97024))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 2760))] = + ((1240 <= (((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x))) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) - + 79360))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 3036))] = + ((964 <= (((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x))) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) - + 61696))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 3312))] = + ((688 <= (((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x))) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) - + 44032))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 3588))] = + ((412 <= (((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x))) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) - + 26368))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 3864))] = + (((136 <= + (((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x))) && + ((((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x)) < 10136)) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) - + 8704))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 4140))] = + (((((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x)) < 9860) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) + + 8960))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 4416))] = + (((((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x)) < 9584) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) + + 26624))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 4692))] = + (((((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x)) < 9308) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) + + 44288))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 4968))] = + (((((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x)) < 9032) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) + + 61952))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 5244))] = + (((((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x)) < 8756) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) + + 79616))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 5520))] = + (((((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x)) < 8480) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) + + 97280))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 5796))] = + (((((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x)) < 8204) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) + + 114944))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 6072))] = + (((((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x)) < 7928) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) + + 132608))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 6348))] = + (((((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x)) < 7652) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) + + 150272))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 6624))] = + (((((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x)) < 7376) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) + + 167936))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 6900))] = + (((((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x)) < 7100) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) + + 185600))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 7176))] = + (((((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x)) < 6824) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) + + 203264))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 7452))] = + (((((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x)) < 6548) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) + + 220928))] + : 0.000000e+00f); + Kpad_shared[((((int)threadIdx.x) + 7728))] = + (((((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x)) < 6272) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) + + 238592))] + : 0.000000e+00f); + if (((int)threadIdx.x) < 16) { + Kpad_shared[((((int)threadIdx.x) + 8004))] = + (((((((int)blockIdx.x) % 500) * 20) + ((int)threadIdx.x)) < + 5996) + ? k[(((((((int)blockIdx.x) * 1280) + + (((int)threadIdx.x) * 64)) + + p_outer_outer) + + 256256))] + : 0.000000e+00f); + } + __syncthreads(); + for (int k_c_inner = 0; k_c_inner < 29; ++k_c_inner) { + SG2BMM_local[(k_c_inner)] = + (SG2BMM_local[(k_c_inner)] + + (q_shared[((((int)threadIdx.x) / 69))] * + Kpad_shared[( + ((((((int)threadIdx.x) % 69) * 116) + (k_c_inner * 4)) + + (((int)threadIdx.x) / 69)))])); + SG2BMM_local[((k_c_inner + 29))] = + (SG2BMM_local[((k_c_inner + 29))] + + (q_shared[(((((int)threadIdx.x) / 69) + 4))] * + Kpad_shared[( + (((((((int)threadIdx.x) % 69) * 116) + (k_c_inner * 4)) + + (((int)threadIdx.x) / 69)) + + 4))])); + SG2BMM_local[((k_c_inner + 58))] = + (SG2BMM_local[((k_c_inner + 58))] + + (q_shared[(((((int)threadIdx.x) / 69) + 8))] * + Kpad_shared[( + (((((((int)threadIdx.x) % 69) * 116) + (k_c_inner * 4)) + + (((int)threadIdx.x) / 69)) + + 8))])); + SG2BMM_local[((k_c_inner + 87))] = + (SG2BMM_local[((k_c_inner + 87))] + + (q_shared[(((((int)threadIdx.x) / 69) + 12))] * + Kpad_shared[( + (((((((int)threadIdx.x) % 69) * 116) + (k_c_inner * 4)) + + (((int)threadIdx.x) / 69)) + + 12))])); + SG2BMM_local[((k_c_inner + 116))] = + (SG2BMM_local[((k_c_inner + 116))] + + (q_shared[(((((int)threadIdx.x) / 69) + 16))] * + Kpad_shared[( + (((((((int)threadIdx.x) % 69) * 116) + (k_c_inner * 4)) + + (((int)threadIdx.x) / 69)) + + 16))])); + } + } + for (int k_inner = 0; k_inner < 29; ++k_inner) { + SG2BMM[((((((int)blockIdx.x) * 40020) + (((int)threadIdx.x) * 29)) + + k_inner))] = SG2BMM_local[(k_inner)]; + SG2BMM[(((((((int)blockIdx.x) * 40020) + (((int)threadIdx.x) * 29)) + + k_inner) + + 8004))] = SG2BMM_local[((k_inner + 29))]; + SG2BMM[(((((((int)blockIdx.x) * 40020) + (((int)threadIdx.x) * 29)) + + k_inner) + + 16008))] = SG2BMM_local[((k_inner + 58))]; + SG2BMM[(((((((int)blockIdx.x) * 40020) + (((int)threadIdx.x) * 29)) + + k_inner) + + 24012))] = SG2BMM_local[((k_inner + 87))]; + SG2BMM[(((((((int)blockIdx.x) * 40020) + (((int)threadIdx.x) * 29)) + + k_inner) + + 32016))] = SG2BMM_local[((k_inner + 116))]; + } +} + +__global__ void __launch_bounds__(256) + gbmml_bs1_n10000_m64_w1000_d1_kernel0(float *__restrict__ prob, + float *__restrict__ q, + float *__restrict__ G2BMM) { + float G2BMM_local[8]; + __shared__ float prob_shared[736]; + __shared__ float Qpad_shared[4864]; + G2BMM_local[(0)] = 0.000000e+00f; + G2BMM_local[(1)] = 0.000000e+00f; + G2BMM_local[(2)] = 0.000000e+00f; + G2BMM_local[(3)] = 0.000000e+00f; + G2BMM_local[(4)] = 0.000000e+00f; + G2BMM_local[(5)] = 0.000000e+00f; + G2BMM_local[(6)] = 0.000000e+00f; + G2BMM_local[(7)] = 0.000000e+00f; + for (int p_outer_outer = 0; p_outer_outer < 87; ++p_outer_outer) { + __syncthreads(); + prob_shared[(((int)threadIdx.x))] = + prob[(((((((((int)blockIdx.x) / 625) * 40020000) + + ((((int)blockIdx.x) % 625) * 32016)) + + ((((int)threadIdx.x) / 23) * 2001)) + + (p_outer_outer * 23)) + + (((int)threadIdx.x) % 23)))]; + prob_shared[((((int)threadIdx.x) + 256))] = + prob[((((((((((int)blockIdx.x) / 625) * 40020000) + + (((((int)threadIdx.x) + 256) / 368) * 20010000)) + + ((((int)blockIdx.x) % 625) * 32016)) + + ((((((int)threadIdx.x) + 256) % 368) / 23) * 2001)) + + (p_outer_outer * 23)) + + ((((int)threadIdx.x) + 3) % 23)))]; + if (((int)threadIdx.x) < 224) { + prob_shared[((((int)threadIdx.x) + 512))] = + prob[((((((((((int)blockIdx.x) / 625) * 40020000) + + (((((int)threadIdx.x) + 512) / 368) * 20010000)) + + ((((int)blockIdx.x) % 625) * 32016)) + + (((((int)threadIdx.x) + 144) / 23) * 2001)) + + (p_outer_outer * 23)) + + ((((int)threadIdx.x) + 6) % 23)))]; + } + Qpad_shared[(((int)threadIdx.x))] = + (((1000 <= + (((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((int)threadIdx.x) >> 6))) && + ((((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((int)threadIdx.x) >> 6)) < 11000)) + ? q[(((((((((int)blockIdx.x) / 625) * 1280000) + + (p_outer_outer * 1472)) + + ((((int)blockIdx.x) % 625) * 1024)) + + ((int)threadIdx.x)) - + 64000))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 256))] = + (((996 <= + (((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((int)threadIdx.x) >> 6))) && + ((((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((int)threadIdx.x) >> 6)) < 10996)) + ? q[(((((((((int)blockIdx.x) / 625) * 1280000) + + (p_outer_outer * 1472)) + + ((((int)blockIdx.x) % 625) * 1024)) + + ((int)threadIdx.x)) - + 63744))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 512))] = + (((992 <= + (((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((int)threadIdx.x) >> 6))) && + ((((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((int)threadIdx.x) >> 6)) < 10992)) + ? q[(((((((((int)blockIdx.x) / 625) * 1280000) + + (p_outer_outer * 1472)) + + ((((int)blockIdx.x) % 625) * 1024)) + + ((int)threadIdx.x)) - + 63488))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 768))] = + (((988 <= + (((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((int)threadIdx.x) >> 6))) && + ((((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((int)threadIdx.x) >> 6)) < 10988)) + ? q[(((((((((int)blockIdx.x) / 625) * 1280000) + + (p_outer_outer * 1472)) + + ((((int)blockIdx.x) % 625) * 1024)) + + ((int)threadIdx.x)) - + 63232))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 1024))] = + (((984 <= + (((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((int)threadIdx.x) >> 6))) && + ((((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((int)threadIdx.x) >> 6)) < 10984)) + ? q[(((((((((int)blockIdx.x) / 625) * 1280000) + + (p_outer_outer * 1472)) + + ((((int)blockIdx.x) % 625) * 1024)) + + ((int)threadIdx.x)) - + 62976))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 1280))] = + (((980 <= + (((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((int)threadIdx.x) >> 6))) && + ((((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((int)threadIdx.x) >> 6)) < 10980)) + ? q[(((((((((int)blockIdx.x) / 625) * 1280000) + + (p_outer_outer * 1472)) + + ((((int)blockIdx.x) % 625) * 1024)) + + ((int)threadIdx.x)) - + 62720))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 1536))] = + (((976 <= + (((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((int)threadIdx.x) >> 6))) && + ((((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((int)threadIdx.x) >> 6)) < 10976)) + ? q[(((((((((int)blockIdx.x) / 625) * 1280000) + + (p_outer_outer * 1472)) + + ((((int)blockIdx.x) % 625) * 1024)) + + ((int)threadIdx.x)) - + 62464))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 1792))] = + (((972 <= + (((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((int)threadIdx.x) >> 6))) && + ((((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((int)threadIdx.x) >> 6)) < 10972)) + ? q[(((((((((int)blockIdx.x) / 625) * 1280000) + + (p_outer_outer * 1472)) + + ((((int)blockIdx.x) % 625) * 1024)) + + ((int)threadIdx.x)) - + 62208))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 2048))] = + (((968 <= + (((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((int)threadIdx.x) >> 6))) && + ((((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((int)threadIdx.x) >> 6)) < 10968)) + ? q[(((((((((int)blockIdx.x) / 625) * 1280000) + + (p_outer_outer * 1472)) + + ((((int)blockIdx.x) % 625) * 1024)) + + ((int)threadIdx.x)) - + 61952))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 2304))] = + (((1000 <= + (((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((((int)threadIdx.x) >> 6) + 36) % 38))) && + ((((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + (((((int)threadIdx.x) >> 6) + 36) % 38)) < 11000)) + ? q[(((((((((((int)blockIdx.x) / 625) * 1280000) + + (((((int)threadIdx.x) + 2304) / 2432) * 640000)) + + (p_outer_outer * 1472)) + + ((((int)blockIdx.x) % 625) * 1024)) + + ((((((int)threadIdx.x) >> 6) + 36) % 38) * 64)) + + (((int)threadIdx.x) & 63)) - + 64000))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 2560))] = + (((1000 <= + (((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + ((((int)threadIdx.x) >> 6) + 2))) && + ((((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + ((((int)threadIdx.x) >> 6) + 2)) < 11000)) + ? q[(((((((((((int)blockIdx.x) / 625) * 1280000) + + (((((int)threadIdx.x) + 2560) / 2432) * 640000)) + + (p_outer_outer * 1472)) + + ((((int)blockIdx.x) % 625) * 1024)) + + (((((int)threadIdx.x) >> 6) + 2) * 64)) + + (((int)threadIdx.x) & 63)) - + 64000))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 2816))] = + (((1000 <= + (((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + ((((int)threadIdx.x) >> 6) + 6))) && + ((((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + ((((int)threadIdx.x) >> 6) + 6)) < 11000)) + ? q[(((((((((((int)blockIdx.x) / 625) * 1280000) + + (((((int)threadIdx.x) + 2816) / 2432) * 640000)) + + (p_outer_outer * 1472)) + + ((((int)blockIdx.x) % 625) * 1024)) + + (((((int)threadIdx.x) >> 6) + 6) * 64)) + + (((int)threadIdx.x) & 63)) - + 64000))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 3072))] = + (((1000 <= + (((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + ((((int)threadIdx.x) >> 6) + 10))) && + ((((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + ((((int)threadIdx.x) >> 6) + 10)) < 11000)) + ? q[(((((((((((int)blockIdx.x) / 625) * 1280000) + + (((((int)threadIdx.x) + 3072) / 2432) * 640000)) + + (p_outer_outer * 1472)) + + ((((int)blockIdx.x) % 625) * 1024)) + + (((((int)threadIdx.x) >> 6) + 10) * 64)) + + (((int)threadIdx.x) & 63)) - + 64000))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 3328))] = + (((1000 <= + (((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + ((((int)threadIdx.x) >> 6) + 14))) && + ((((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + ((((int)threadIdx.x) >> 6) + 14)) < 11000)) + ? q[(((((((((((int)blockIdx.x) / 625) * 1280000) + + (((((int)threadIdx.x) + 3328) / 2432) * 640000)) + + (p_outer_outer * 1472)) + + ((((int)blockIdx.x) % 625) * 1024)) + + (((((int)threadIdx.x) >> 6) + 14) * 64)) + + (((int)threadIdx.x) & 63)) - + 64000))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 3584))] = + (((1000 <= + (((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + ((((int)threadIdx.x) >> 6) + 18))) && + ((((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + ((((int)threadIdx.x) >> 6) + 18)) < 11000)) + ? q[(((((((((((int)blockIdx.x) / 625) * 1280000) + + (((((int)threadIdx.x) + 3584) / 2432) * 640000)) + + (p_outer_outer * 1472)) + + ((((int)blockIdx.x) % 625) * 1024)) + + (((((int)threadIdx.x) >> 6) + 18) * 64)) + + (((int)threadIdx.x) & 63)) - + 64000))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 3840))] = + (((1000 <= + (((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + ((((int)threadIdx.x) >> 6) + 22))) && + ((((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + ((((int)threadIdx.x) >> 6) + 22)) < 11000)) + ? q[(((((((((((int)blockIdx.x) / 625) * 1280000) + + (((((int)threadIdx.x) + 3840) / 2432) * 640000)) + + (p_outer_outer * 1472)) + + ((((int)blockIdx.x) % 625) * 1024)) + + (((((int)threadIdx.x) >> 6) + 22) * 64)) + + (((int)threadIdx.x) & 63)) - + 64000))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 4096))] = + (((1000 <= + (((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + ((((int)threadIdx.x) >> 6) + 26))) && + ((((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + ((((int)threadIdx.x) >> 6) + 26)) < 11000)) + ? q[(((((((((((int)blockIdx.x) / 625) * 1280000) + + (((((int)threadIdx.x) + 4096) / 2432) * 640000)) + + (p_outer_outer * 1472)) + + ((((int)blockIdx.x) % 625) * 1024)) + + (((((int)threadIdx.x) >> 6) + 26) * 64)) + + (((int)threadIdx.x) & 63)) - + 64000))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 4352))] = + (((1000 <= + (((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + ((((int)threadIdx.x) >> 6) + 30))) && + ((((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + ((((int)threadIdx.x) >> 6) + 30)) < 11000)) + ? q[(((((((((((int)blockIdx.x) / 625) * 1280000) + + (((((int)threadIdx.x) + 4352) / 2432) * 640000)) + + (p_outer_outer * 1472)) + + ((((int)blockIdx.x) % 625) * 1024)) + + (((((int)threadIdx.x) >> 6) + 30) * 64)) + + (((int)threadIdx.x) & 63)) - + 64000))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 4608))] = + (((1000 <= + (((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + ((((int)threadIdx.x) >> 6) + 34))) && + ((((p_outer_outer * 23) + ((((int)blockIdx.x) % 625) * 16)) + + ((((int)threadIdx.x) >> 6) + 34)) < 11000)) + ? q[(((((((((((int)blockIdx.x) / 625) * 1280000) + + (((((int)threadIdx.x) + 4608) / 2432) * 640000)) + + (p_outer_outer * 1472)) + + ((((int)blockIdx.x) % 625) * 1024)) + + (((((int)threadIdx.x) >> 6) + 34) * 64)) + + (((int)threadIdx.x) & 63)) - + 64000))] + : 0.000000e+00f); + __syncthreads(); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[(((((int)threadIdx.x) >> 5) * 92))] * + Qpad_shared[(((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[(((((int)threadIdx.x) >> 5) * 92))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 23))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 64))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 23))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 65))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 46))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 128))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 46))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 129))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 69))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 192))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 69))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 193))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 1))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 64))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 1))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 65))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 24))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 128))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 24))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 129))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 47))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 192))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 47))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 193))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 70))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 256))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 70))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 257))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 2))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 128))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 2))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 129))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 25))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 192))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 25))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 193))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 48))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 256))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 48))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 257))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 71))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 320))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 71))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 321))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 3))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 192))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 3))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 193))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 26))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 256))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 26))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 257))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 49))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 320))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 49))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 321))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 72))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 384))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 72))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 385))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 4))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 256))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 4))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 257))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 27))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 320))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 27))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 321))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 50))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 384))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 50))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 385))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 73))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 448))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 73))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 449))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 5))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 320))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 5))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 321))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 28))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 384))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 28))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 385))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 51))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 448))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 51))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 449))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 74))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 512))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 74))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 513))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 6))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 384))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 6))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 385))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 29))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 448))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 29))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 449))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 52))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 512))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 52))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 513))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 75))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 576))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 75))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 577))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 7))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 448))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 7))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 449))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 30))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 512))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 30))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 513))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 53))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 576))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 53))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 577))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 76))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 640))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 76))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 641))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 8))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 512))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 8))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 513))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 31))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 576))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 31))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 577))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 54))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 640))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 54))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 641))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 77))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 704))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 77))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 705))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 9))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 576))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 9))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 577))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 32))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 640))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 32))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 641))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 55))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 704))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 55))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 705))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 78))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 768))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 78))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 769))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 10))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 640))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 10))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 641))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 33))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 704))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 33))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 705))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 56))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 768))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 56))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 769))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 79))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 832))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 79))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 833))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 11))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 704))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 11))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 705))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 34))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 768))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 34))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 769))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 57))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 832))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 57))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 833))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 80))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 896))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 80))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 897))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 12))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 768))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 12))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 769))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 35))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 832))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 35))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 833))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 58))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 896))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 58))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 897))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 81))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 960))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 81))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 961))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 13))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 832))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 13))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 833))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 36))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 896))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 36))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 897))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 59))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 960))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 59))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 961))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 82))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1024))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 82))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1025))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 14))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 896))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 14))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 897))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 37))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 960))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 37))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 961))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 60))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1024))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 60))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1025))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 83))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1088))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 83))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1089))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 15))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 960))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 15))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 961))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 38))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1024))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 38))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1025))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 61))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1088))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 61))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1089))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 84))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1152))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 84))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1153))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 16))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1024))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 16))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1025))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 39))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1088))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 39))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1089))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 62))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1152))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 62))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1153))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 85))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1216))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 85))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1217))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 17))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1088))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 17))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1089))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 40))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1152))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 40))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1153))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 63))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1216))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 63))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1217))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 86))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1280))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 86))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1281))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 18))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1152))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 18))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1153))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 41))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1216))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 41))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1217))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 64))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1280))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 64))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1281))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 87))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1344))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 87))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1345))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 19))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1216))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 19))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1217))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 42))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1280))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 42))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1281))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 65))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1344))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 65))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1345))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 88))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1408))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 88))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1409))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 20))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1280))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 20))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1281))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 43))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1344))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 43))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1345))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 66))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1408))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 66))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1409))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 89))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1472))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 89))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1473))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 21))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1344))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 21))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1345))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 44))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1408))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 44))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1409))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 67))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1472))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 67))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1473))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 90))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1536))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 90))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1537))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 22))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1408))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 22))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1409))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 45))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1472))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 45))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1473))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 68))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1536))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 68))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1537))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 91))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1600))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 92) + 91))] * + Qpad_shared[((((((((int)threadIdx.x) >> 7) * 2432) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + ((((int)threadIdx.x) & 31) * 2)) + + 1601))])); + } + for (int j_inner = 0; j_inner < 4; ++j_inner) { + for (int k_inner = 0; k_inner < 2; ++k_inner) { + G2BMM[(((((((((((int)blockIdx.x) / 625) * 1280000) + + ((((int)threadIdx.x) >> 7) * 640000)) + + ((((int)blockIdx.x) % 625) * 1024)) + + (((((int)threadIdx.x) & 127) >> 5) * 256)) + + (j_inner * 64)) + + ((((int)threadIdx.x) & 31) * 2)) + + k_inner))] = G2BMM_local[(((j_inner * 2) + k_inner))]; + } + } +} + +__global__ void __launch_bounds__(320) + gbmml_bs1_n10000_m64_w1000_d4_kernel0(float *__restrict__ prob, + float *__restrict__ q, + float *__restrict__ G2BMM) { + float G2BMM_local[20]; + __shared__ float prob_shared[300]; + __shared__ float Qpad_shared[6912]; + G2BMM_local[(0)] = 0.000000e+00f; + G2BMM_local[(2)] = 0.000000e+00f; + G2BMM_local[(1)] = 0.000000e+00f; + G2BMM_local[(3)] = 0.000000e+00f; + G2BMM_local[(4)] = 0.000000e+00f; + G2BMM_local[(6)] = 0.000000e+00f; + G2BMM_local[(5)] = 0.000000e+00f; + G2BMM_local[(7)] = 0.000000e+00f; + G2BMM_local[(8)] = 0.000000e+00f; + G2BMM_local[(10)] = 0.000000e+00f; + G2BMM_local[(9)] = 0.000000e+00f; + G2BMM_local[(11)] = 0.000000e+00f; + G2BMM_local[(12)] = 0.000000e+00f; + G2BMM_local[(14)] = 0.000000e+00f; + G2BMM_local[(13)] = 0.000000e+00f; + G2BMM_local[(15)] = 0.000000e+00f; + G2BMM_local[(16)] = 0.000000e+00f; + G2BMM_local[(18)] = 0.000000e+00f; + G2BMM_local[(17)] = 0.000000e+00f; + G2BMM_local[(19)] = 0.000000e+00f; + for (int p_outer_outer = 0; p_outer_outer < 667; ++p_outer_outer) { + __syncthreads(); + if (((int)threadIdx.x) < 100) { + ((float3 *)(prob_shared + ((((int)threadIdx.x) * 3))))[0] = + ((float3 *)(prob + ((((((int)blockIdx.x) * 200100) + + (((int)threadIdx.x) * 2001)) + + (p_outer_outer * 3)))))[0]; + } + Qpad_shared[(((int)threadIdx.x))] = + (((4000 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 14000)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 256000))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 320))] = + (((3995 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13995)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 255680))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 640))] = + (((3990 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13990)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 255360))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 960))] = + (((3985 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13985)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 255040))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 1280))] = + (((3980 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13980)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 254720))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 1600))] = + (((3975 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13975)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 254400))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 1920))] = + (((3970 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13970)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 254080))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 2240))] = + (((3965 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13965)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 253760))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 2560))] = + (((3960 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13960)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 253440))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 2880))] = + (((3955 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13955)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 253120))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 3200))] = + (((3950 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13950)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 252800))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 3520))] = + (((3945 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13945)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 252480))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 3840))] = + (((3940 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13940)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 252160))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 4160))] = + (((3935 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13935)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 251840))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 4480))] = + (((3930 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13930)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 251520))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 4800))] = + (((3925 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13925)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 251200))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 5120))] = + (((3920 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13920)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 250880))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 5440))] = + (((3915 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13915)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 250560))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 5760))] = + (((3910 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13910)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 250240))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 6080))] = + (((3905 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13905)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 249920))] + : 0.000000e+00f); + Qpad_shared[((((int)threadIdx.x) + 6400))] = + (((3900 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13900)) + ? q[(((((((int)blockIdx.x) * 6400) + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 249600))] + : 0.000000e+00f); + if (((int)threadIdx.x) < 192) { + Qpad_shared[((((int)threadIdx.x) + 6720))] = + (((3895 <= + ((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6))) && + (((((((int)blockIdx.x) % 100) * 100) + (p_outer_outer * 12)) + + (((int)threadIdx.x) >> 6)) < 13895)) + ? q[(((((((int)blockIdx.x) * 6400) + + (p_outer_outer * 768)) + + ((int)threadIdx.x)) - + 249280))] + : 0.000000e+00f); + } + __syncthreads(); + G2BMM_local[(0)] = (G2BMM_local[(0)] + + (prob_shared[(((((int)threadIdx.x) >> 5) * 30))] * + Qpad_shared[((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 3))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 64))])); + G2BMM_local[(1)] = (G2BMM_local[(1)] + + (prob_shared[(((((int)threadIdx.x) >> 5) * 30))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 1))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 3))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 65))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 6))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 128))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 9))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 192))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 6))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 129))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 9))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 193))])); + G2BMM_local[(8)] = + (G2BMM_local[(8)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 12))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 256))])); + G2BMM_local[(10)] = + (G2BMM_local[(10)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 15))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 320))])); + G2BMM_local[(9)] = + (G2BMM_local[(9)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 12))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 257))])); + G2BMM_local[(11)] = + (G2BMM_local[(11)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 15))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 321))])); + G2BMM_local[(12)] = + (G2BMM_local[(12)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 18))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 384))])); + G2BMM_local[(14)] = + (G2BMM_local[(14)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 21))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 448))])); + G2BMM_local[(13)] = + (G2BMM_local[(13)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 18))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 385))])); + G2BMM_local[(15)] = + (G2BMM_local[(15)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 21))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 449))])); + G2BMM_local[(16)] = + (G2BMM_local[(16)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 24))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 512))])); + G2BMM_local[(18)] = + (G2BMM_local[(18)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 27))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 576))])); + G2BMM_local[(17)] = + (G2BMM_local[(17)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 24))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 513))])); + G2BMM_local[(19)] = + (G2BMM_local[(19)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 27))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 577))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 1))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 256))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 4))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 320))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 1))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 257))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 4))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 321))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 7))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 384))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 10))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 448))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 7))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 385))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 10))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 449))])); + G2BMM_local[(8)] = + (G2BMM_local[(8)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 13))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 512))])); + G2BMM_local[(10)] = + (G2BMM_local[(10)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 16))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 576))])); + G2BMM_local[(9)] = + (G2BMM_local[(9)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 13))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 513))])); + G2BMM_local[(11)] = + (G2BMM_local[(11)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 16))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 577))])); + G2BMM_local[(12)] = + (G2BMM_local[(12)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 19))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 640))])); + G2BMM_local[(14)] = + (G2BMM_local[(14)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 22))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 704))])); + G2BMM_local[(13)] = + (G2BMM_local[(13)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 19))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 641))])); + G2BMM_local[(15)] = + (G2BMM_local[(15)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 22))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 705))])); + G2BMM_local[(16)] = + (G2BMM_local[(16)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 25))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 768))])); + G2BMM_local[(18)] = + (G2BMM_local[(18)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 28))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 832))])); + G2BMM_local[(17)] = + (G2BMM_local[(17)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 25))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 769))])); + G2BMM_local[(19)] = + (G2BMM_local[(19)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 28))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 833))])); + G2BMM_local[(0)] = + (G2BMM_local[(0)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 2))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 512))])); + G2BMM_local[(2)] = + (G2BMM_local[(2)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 5))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 576))])); + G2BMM_local[(1)] = + (G2BMM_local[(1)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 2))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 513))])); + G2BMM_local[(3)] = + (G2BMM_local[(3)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 5))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 577))])); + G2BMM_local[(4)] = + (G2BMM_local[(4)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 8))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 640))])); + G2BMM_local[(6)] = + (G2BMM_local[(6)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 11))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 704))])); + G2BMM_local[(5)] = + (G2BMM_local[(5)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 8))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 641))])); + G2BMM_local[(7)] = + (G2BMM_local[(7)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 11))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 705))])); + G2BMM_local[(8)] = + (G2BMM_local[(8)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 14))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 768))])); + G2BMM_local[(10)] = + (G2BMM_local[(10)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 17))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 832))])); + G2BMM_local[(9)] = + (G2BMM_local[(9)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 14))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 769))])); + G2BMM_local[(11)] = + (G2BMM_local[(11)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 17))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 833))])); + G2BMM_local[(12)] = + (G2BMM_local[(12)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 20))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 896))])); + G2BMM_local[(14)] = + (G2BMM_local[(14)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 23))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 960))])); + G2BMM_local[(13)] = + (G2BMM_local[(13)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 20))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 897))])); + G2BMM_local[(15)] = + (G2BMM_local[(15)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 23))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 961))])); + G2BMM_local[(16)] = + (G2BMM_local[(16)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 26))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 1024))])); + G2BMM_local[(18)] = + (G2BMM_local[(18)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 29))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 1088))])); + G2BMM_local[(17)] = + (G2BMM_local[(17)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 26))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 1025))])); + G2BMM_local[(19)] = + (G2BMM_local[(19)] + + (prob_shared[((((((int)threadIdx.x) >> 5) * 30) + 29))] * + Qpad_shared[(((((((int)threadIdx.x) >> 5) * 640) + + ((((int)threadIdx.x) & 31) * 2)) + + 1089))])); + } + for (int j_inner = 0; j_inner < 10; ++j_inner) { + for (int k_inner = 0; k_inner < 2; ++k_inner) { + G2BMM[((((((((int)blockIdx.x) * 6400) + + ((((int)threadIdx.x) >> 5) * 640)) + + (j_inner * 64)) + + ((((int)threadIdx.x) & 31) * 2)) + + k_inner))] = G2BMM_local[(((j_inner * 2) + k_inner))]; + } + } +} + +inline void sg2bmm(float *__restrict__ q, float *__restrict__ k, + float *__restrict__ y, int bs, int n, int m, int w, int d) { + assert(bs % 8 == 0); + assert(n == 10000); + assert(m == 64); + assert(w == 1000); + if (d == 1) { + for (int i = 0; i < bs; i += 8) { + sg2bmm_bs1_n10000_m64_w1000_d1_kernel0<<<23000, 58>>>( + q + i * n * m, k + i * n * m, + y + i * n * (2 * w + 1)); + } + } else if (d == 4) { + for (int i = 0; i < bs; i += 8) { + sg2bmm_bs1_n10000_m64_w1000_d4_kernel0<<<4000, 276>>>( + q + i * n * m, k + i * n * m, y + i * n * (2 * w + 1)); + } + } else { + assert(false); + } +} + +inline void sgbmml(float *__restrict__ q, float *__restrict__ k, + float *__restrict__ y, int bs, int n, int m, int w, int d) { + assert(bs % 8 == 0); + assert(n == 10000); + assert(m == 64); + assert(w == 1000); + if (d == 1) { + for (int i = 0; i < bs; i += 8) { + gbmml_bs1_n10000_m64_w1000_d1_kernel0<<<2500, 256>>>( + q + i * n * (2 * w + 1), k + i * n * m, + y + i * n * m); + } + } else if (d == 4) { + for (int i = 0; i < bs; i += 8) { + gbmml_bs1_n10000_m64_w1000_d4_kernel0<<<800, 320>>>( + q + i * n * (2 * w + 1), k + i * n * m, + y + i * n * m); + } + } else { + assert(false); + } +} + +} // namespace infini + +#endif // CUSTOM_OPS_CUH diff --git a/include/custom_ops.h b/include/custom_ops.h new file mode 100644 index 00000000..fa943a33 --- /dev/null +++ b/include/custom_ops.h @@ -0,0 +1,14 @@ +#ifndef CUSTOM_OPS_H +#define CUSTOM_OPS_H + +namespace infini { + +void _sg2bmm(float *__restrict__ q, float *__restrict__ k, + float *__restrict__ y, int bs, int n, int m, int w, int d); + +void _sgbmml(float *__restrict__ q, float *__restrict__ k, + float *__restrict__ y, int bs, int n, int m, int w, int d); + +} // namespace infini + +#endif // CUSTOM_OPS_H diff --git a/include/operators/G2BMM.h b/include/operators/G2BMM.h new file mode 100644 index 00000000..d44f0494 --- /dev/null +++ b/include/operators/G2BMM.h @@ -0,0 +1,51 @@ +#pragma once +#include "core/operator.h" +#include +namespace infini { + +class G2BMMObj : public OperatorObj { + private: + // to be implemented + int width, dilation; + ActType act; + + int b, m, k; + + public: + /** + * @brief This comments show how operators is defined in InfiniTensor. The + * constructor can create output tensors for the operator or not, which + * depends on `graph`. + * + * @param graph If graph is not empty, create outputs in the constructor. + * Otherwise, check the provided shape with the results of `inferShape` in + * `checkValid`. + * @param C C is the output of G2BMM. If outputs are going to be created in + * the constructor, C should be an empty Ref. + */ + G2BMMObj(GraphObj *graph, Tensor A, Tensor B, Tensor C, const int width, + const int dilation, Tensor bias = nullptr, + ActType act = ActType::None); + + std::string toString() const override; + optional> inferShape(const TensorVec &inputs) const override; + + int numInputs() const override { return 2; } + int numOutputs() const override { return 1; } + + int getWidth() const { return width; } + int getDilation() const { return dilation; } + Tensor getBias() const { return inputs[2]; } + ActType getAct() const { return act; } + + int getB() const { return b; } + int getM() const { return m; } + int getK() const { return k; } + auto getBMKWD() const { return tuple{b, m, k, width, dilation}; } + + private: + vector getWorkloadVector() const override; + vector getOpAttrVector() const override; +}; + +} // namespace infini \ No newline at end of file diff --git a/include/operators/GBMM.h b/include/operators/GBMM.h new file mode 100644 index 00000000..c623b8b1 --- /dev/null +++ b/include/operators/GBMM.h @@ -0,0 +1,49 @@ +#pragma once +#include "core/operator.h" +#include +namespace infini { + +class GBMMObj : public OperatorObj { + private: + int dilation; + ActType act; + + int b, m, w, n; + + public: + /** + * @brief This comments show how operators is defined in InfiniTensor. The + * constructor can create output tensors for the operator or not, which + * depends on `graph`. + * + * @param graph If graph is not empty, create outputs in the constructor. + * Otherwise, check the provided shape with the results of `inferShape` in + * `checkValid`. + * @param C C is the output of GBMM. If outputs are going to be created in + * the constructor, C should be an empty Ref. + */ + GBMMObj(GraphObj *graph, Tensor A, Tensor B, Tensor C, const int dilation, + Tensor bias = nullptr, ActType act = ActType::None); + + std::string toString() const override; + optional> inferShape(const TensorVec &inputs) const override; + + int numInputs() const override { return 2; } + int numOutputs() const override { return 1; } + + int getDilation() const { return dilation; } + Tensor getBias() const { return inputs[2]; } + ActType getAct() const { return act; } + + int getB() const { return b; } + int getM() const { return m; } + int getW() const { return w; } + int getN() const { return n; } + auto getBMWND() const { return tuple{b, m, w, n, dilation}; } + + private: + vector getWorkloadVector() const override; + vector getOpAttrVector() const override; +}; + +} // namespace infini \ No newline at end of file diff --git a/src/core/operator.cc b/src/core/operator.cc index b6617d66..f37009a2 100644 --- a/src/core/operator.cc +++ b/src/core/operator.cc @@ -19,7 +19,7 @@ bool OperatorObj::isConcatOp() const { return type == OpType::Concat; } bool OperatorObj::isComputeOp() const { return type == OpType::Conv || type == OpType::Matmul || type == OpType::ConvTrans || type == OpType::G2BMM || - type == OpType::GBMML; + type == OpType::GBMM; } bool OperatorObj::isTransposeOp() const { return type == OpType::Transpose; } @@ -53,6 +53,7 @@ bool OperatorObj::checkValid(GraphObj *graph) { auto optShapes = inferShape(); if (!optShapes) // shape inference failed return false; + const vector &shapes = *optShapes; if (shapes.size() != outputs.size()) return false; diff --git a/src/cuda/cuda_runtime.cc b/src/cuda/cuda_runtime.cc index 909eee89..cd6d96ff 100644 --- a/src/cuda/cuda_runtime.cc +++ b/src/cuda/cuda_runtime.cc @@ -48,8 +48,7 @@ void CudaRuntimeObj::runWithoutSync(const Graph &graph, bool tune = false, void CudaRuntimeObj::run(const Graph &graph, bool tune, bool profiling) const { if (profiling) IT_TODO_HALT(); - - runWithoutSync(graph, tune); + runWithoutSync(graph, tune, profiling); sync(); } diff --git a/src/custom_ops.cu b/src/custom_ops.cu new file mode 100644 index 00000000..f5ac1df3 --- /dev/null +++ b/src/custom_ops.cu @@ -0,0 +1,17 @@ +#include "custom_ops.cuh" +#include "custom_ops.h" + +namespace infini { + +void _sg2bmm(float *__restrict__ q, float *__restrict__ k, + float *__restrict__ y, int bs, int n, int m, int w, int d) { + sg2bmm(q, k, y, bs, n, m, w, d); +} + +void _sgbmml(float *__restrict__ q, float *__restrict__ k, + float *__restrict__ y, int bs, int n, int m, int w, int d) { + sgbmml(q, k, y, bs, n, m, w, d); +} + +} // namespace infini + diff --git a/src/kernels/cuda/G2BMM.cc b/src/kernels/cuda/G2BMM.cc new file mode 100644 index 00000000..0f7cb166 --- /dev/null +++ b/src/kernels/cuda/G2BMM.cc @@ -0,0 +1,64 @@ +#include "operators/G2BMM.h" +#include "core/kernel.h" +#include "cuda/cuda_runtime.h" +#include "custom_ops.h" +#include +#include +#include +namespace infini { + +class G2BMMCudnn : public Kernel { + + bool g2bmmKernel(const Ref &op, + const CudaRuntimeObj *context) const { + float *const inAData = (op->getInputs(0)->getRawDataPtr()); + float *const inBData = (op->getInputs(1)->getRawDataPtr()); + if (op->getInputs().size() > 2) + IT_TODO_HALT(); + + float *const outData = (op->getOutput()->getRawDataPtr()); + + const auto [b, n, m, width, dilation] = op->getBMKWD(); + + _sg2bmm(inAData, inBData, outData, b, n, m, width, dilation); + // checkCudaError(cudaDeviceSynchronize()); + return true; + } + + void compute(const Operator &op, const RuntimeObj *context) const override { + PerfRecord record; + compute(op, record, context); + } + + PerfRecord tune(const Operator &_op, + const RuntimeObj *_context) const override { + PerfRecord record; + auto op = as(_op); + auto context = dynamic_cast(_context); + + record.time = std::numeric_limits::max(); + const auto [warmupRounds, timingRounds] = + op->getB() > 100 ? tuple{1, 3} : tuple{5, 15}; + double tmp = + timeit([&]() { g2bmmKernel(op, context); }, + [&]() { context->sync(); }, warmupRounds, timingRounds); + if (tmp < record.time) + record.time = tmp; + IT_ASSERT(record.time < std::numeric_limits::max(), + "Error occured " + "during runtime"); + return record; + } + void compute(const Operator &_op, const PerfRecord &_record, + const RuntimeObj *_context) const override { + auto op = as(_op); + auto context = dynamic_cast(_context); + bool success = g2bmmKernel(op, context); + IT_ASSERT(success); + } +}; + +REGISTER_KERNEL(Device::CUDA, OpType::G2BMM, DataType::Float32, G2BMMCudnn, + "G2BMM_cuDNN_CUDA_Float32"); + +} // namespace infini diff --git a/src/kernels/cuda/GBMM.cc b/src/kernels/cuda/GBMM.cc new file mode 100644 index 00000000..4d9efc98 --- /dev/null +++ b/src/kernels/cuda/GBMM.cc @@ -0,0 +1,65 @@ +#include "operators/GBMM.h" +#include "core/kernel.h" +#include "cuda/cuda_runtime.h" +#include "custom_ops.h" +#include +#include +#include + +namespace infini { + +class GBMMCudnn : public Kernel { + + bool gbmmKernel(const Ref &op, + const CudaRuntimeObj *context) const { + float *const inAData = (op->getInputs(0)->getRawDataPtr()); + float *const inBData = (op->getInputs(1)->getRawDataPtr()); + if (op->getInputs().size() > 2) + IT_TODO_HALT(); + + float *const outData = (op->getOutput()->getRawDataPtr()); + + const auto [b, m, w, n, dilation] = op->getBMWND(); + // printf("%d %d %d %d %d\n", b, m, n, w, dilation); + _sgbmml(inAData, inBData, outData, b, m, n, w, dilation); + // checkCudaError(cudaDeviceSynchronize()); + return true; + } + void compute(const Operator &op, const RuntimeObj *context) const override { + PerfRecord record; + compute(op, record, context); + } + + PerfRecord tune(const Operator &_op, + const RuntimeObj *_context) const override { + PerfRecord record; + auto op = as(_op); + auto context = dynamic_cast(_context); + + record.time = std::numeric_limits::max(); + const auto [warmupRounds, timingRounds] = + op->getB() > 100 ? tuple{1, 3} : tuple{5, 15}; + double tmp = + timeit([&]() { gbmmKernel(op, context); }, + [&]() { context->sync(); }, warmupRounds, timingRounds); + if (tmp < record.time) + record.time = tmp; + IT_ASSERT(record.time < std::numeric_limits::max(), + "Error occured " + "during runtime"); + return record; + } + + void compute(const Operator &_op, const PerfRecord &_record, + const RuntimeObj *_context) const override { + auto op = as(_op); + auto context = dynamic_cast(_context); + bool success = gbmmKernel(op, context); + IT_ASSERT(success); + } +}; + +REGISTER_KERNEL(Device::CUDA, OpType::GBMM, DataType::Float32, GBMMCudnn, + "GBMM_cuDNN_CUDA_Float32"); + +} // namespace infini \ No newline at end of file diff --git a/src/kernels/cuda/conv.cc b/src/kernels/cuda/conv.cc index 92ad89db..497df1c7 100644 --- a/src/kernels/cuda/conv.cc +++ b/src/kernels/cuda/conv.cc @@ -244,7 +244,6 @@ class convCudnn : public Kernel { // Update the tune result if (ret.time > record.time) ret = record; - checkCudnnError(cudnnDestroyTensorDescriptor(outDesc)); checkCudnnError(cudnnDestroyActivationDescriptor(actDesc)); checkCudnnError(cudnnDestroyConvolutionDescriptor(convDesc)); diff --git a/src/operators/G2BMM.cc b/src/operators/G2BMM.cc new file mode 100644 index 00000000..a6f8606d --- /dev/null +++ b/src/operators/G2BMM.cc @@ -0,0 +1,50 @@ +#include "operators/G2BMM.h" +#include "custom_ops.h" + +namespace infini { + +G2BMMObj::G2BMMObj(GraphObj *graph, Tensor A, Tensor B, Tensor C, int width, + int dilation, [[maybe_unused]] Tensor bias, ActType act) + : OperatorObj(OpType::G2BMM, {A, B}, {C}), width(width), dilation(dilation), + act(act), b(A->getDims()[0]), m(A->getDims()[1]), k(A->getDims()[2]) { + IT_ASSERT(checkValid(graph)); +} + +string G2BMMObj::toString() const { + std::ostringstream os; + os << "G2BMM([" + << "width=" << width << ",act=" << enum_to_underlying(act) + << "],A=" << inputs[0]->getGuid() << ",B=" << inputs[1]->getGuid() + << ",C=" << outputs[0]->getGuid() << ", TTbmnkd: " << this->getB() + << ", " << this->getM() << ", " << this->getWidth() << ", " + << inputs[1]->getDims()[2] << ", " << this->getDilation() << ")"; + return os.str(); +} + +optional> G2BMMObj::inferShape(const TensorVec &inputs) const { + auto A = inputs[0], B = inputs[1]; + + if (!(A->getDims().size() == 3 && B->getDims().size() == 3)) + return {}; + if (!(A->getDims()[0] == B->getDims()[0])) + return {}; + if (!(A->getDims()[1] == B->getDims()[1])) + return {}; + if (!(A->getDims()[2] == B->getDims()[2])) + return {}; + if (width < 0) + return {}; + int b(A->getDims()[0]), m(A->getDims()[1]), n(2 * width + 1); + return {{{b, m, n}}}; +} + +vector G2BMMObj::getWorkloadVector() const { + return {enum_to_underlying(type), b, m, k, width, dilation, + enum_to_underlying(act)}; +} + +vector G2BMMObj::getOpAttrVector() const { + return {enum_to_underlying(type), width, dilation, enum_to_underlying(act)}; +} + +} // namespace infini \ No newline at end of file diff --git a/src/operators/GBMM.cc b/src/operators/GBMM.cc new file mode 100644 index 00000000..4d734593 --- /dev/null +++ b/src/operators/GBMM.cc @@ -0,0 +1,48 @@ +#include "operators/GBMM.h" +#include "custom_ops.h" + +namespace infini { + +GBMMObj::GBMMObj(GraphObj *graph, Tensor A, Tensor B, Tensor C, int dilation, + [[maybe_unused]] Tensor bias, ActType act) + : OperatorObj(OpType::GBMM, {A, B}, {C}), dilation(dilation), act(act), + b(A->getDims()[0]), m(A->getDims()[1]), w((A->getDims()[2] - 1) / 2), + n(B->getDims()[2]) { + IT_ASSERT(checkValid(graph)); +} + +string GBMMObj::toString() const { + std::ostringstream os; + os << "GBMM([" + << ",act=" << (int)act << "],A=" << inputs[0]->getGuid() + << ",B=" << inputs[1]->getGuid() << ",C=" << outputs[0]->getGuid() + << ", TTbmwnd: " << this->getB() << ", " << this->getM() << ", " + << this->getW() << ", " << this->getN() << ", " << this->getDilation() + << ")"; + return os.str(); +} + +optional> GBMMObj::inferShape(const TensorVec &inputs) const { + auto A = inputs[0], B = inputs[1]; + + if (!(A->getDims().size() == 3 && B->getDims().size() == 3)) + return {}; + if (!(A->getDims()[0] == B->getDims()[0])) + return {}; + if (!(A->getDims()[1] == B->getDims()[1])) + return {}; + if (A->getDims()[2] % 2 == 0) + return {}; + int b(A->getDims()[0]), m(A->getDims()[1]), k(B->getDims()[2]); + return {{{b, m, k}}}; +} + +vector GBMMObj::getWorkloadVector() const { + return {enum_to_underlying(type), b, m, w, n, dilation, + enum_to_underlying(act)}; +} + +vector GBMMObj::getOpAttrVector() const { + return {enum_to_underlying(type), dilation, enum_to_underlying(act)}; +} +} // namespace infini diff --git a/test/operators/test_G2BMM.cc b/test/operators/test_G2BMM.cc new file mode 100644 index 00000000..ec8aae00 --- /dev/null +++ b/test/operators/test_G2BMM.cc @@ -0,0 +1,37 @@ +#include "core/graph.h" +#include "core/kernel.h" +#include "core/runtime.h" +#include "cuda/cuda_runtime.h" +#include "cuda/cuda_utility.h" +#include "operators/G2BMM.h" + +#include "test.h" + +namespace infini { +using ExpectOutput = vector; + +TEST(G2BMM, ShapeInference) { + const int bs = 1, seqlen = 10000, w = 1000, featlen = 512, heads = 8, d = 4; + const int hidden = featlen, hiddenPerHead = hidden / heads; + auto cpuRuntime = CpuRuntimeObj::getInstance(); + Graph gCpu = make_ref(cpuRuntime); + auto ACpu = gCpu->addTensor(Shape{bs * heads, seqlen, hiddenPerHead}, + DataType::Float32); + auto BCpu = gCpu->addTensor(Shape{bs * heads, seqlen, hiddenPerHead}, + DataType::Float32); + gCpu->dataMalloc(); + ACpu->setData(IncrementalGenerator()); + BCpu->setData(IncrementalGenerator()); + + auto cudaRuntime = make_ref(); + auto gCuda = make_ref(cudaRuntime); + auto ACuda = gCuda->cloneTensor(ACpu); + auto BCuda = gCuda->cloneTensor(BCpu); + auto G2BMM = gCuda->addOp(ACuda, BCuda, nullptr, w, d); + EXPECT_EQ(G2BMM->getOutput()->getDims(), + (Shape{bs * heads, seqlen, 2 * w + 1})); + gCuda->dataMalloc(); + cudaRuntime->run(gCuda); +} + +}; // namespace infini diff --git a/test/operators/test_GBMM.cc b/test/operators/test_GBMM.cc new file mode 100644 index 00000000..f31fdd55 --- /dev/null +++ b/test/operators/test_GBMM.cc @@ -0,0 +1,37 @@ +#include "core/graph.h" +#include "core/kernel.h" +#include "core/runtime.h" +#include "cuda/cuda_runtime.h" +#include "cuda/cuda_utility.h" +#include "operators/GBMM.h" +#include "test.h" + +namespace infini { +using ExpectOutput = vector; + +TEST(GBMM, ShapeInference) { + const int bs = 1, seqlen = 10000, w = 1000, featlen = 512, heads = 8, d = 4; + const int hidden = featlen, hiddenPerHead = hidden / heads; + auto cpuRuntime = CpuRuntimeObj::getInstance(); + Graph gCpu = make_ref(cpuRuntime); + auto ACpu = gCpu->addTensor(Shape{bs * heads, seqlen, w * 2 + 1}, + DataType::Float32); + auto BCpu = gCpu->addTensor(Shape{bs * heads, seqlen, hiddenPerHead}, + DataType::Float32); + gCpu->dataMalloc(); + ACpu->setData(IncrementalGenerator()); + BCpu->setData(IncrementalGenerator()); + + auto cudaRuntime = make_ref(); + auto gCuda = make_ref(cudaRuntime); + auto ACuda = gCuda->cloneTensor(ACpu); + auto BCuda = gCuda->cloneTensor(BCpu); + auto GBMM = gCuda->addOp(ACuda, BCuda, nullptr, d); + EXPECT_EQ(GBMM->getOutput()->getDims(), + (Shape{bs * heads, seqlen, hiddenPerHead})); + + gCuda->dataMalloc(); + cudaRuntime->run(gCuda); +} + +} // namespace infini \ No newline at end of file