     dim3 launchDims;
     launchDims.x = MAX_NUM_THREADS / 8;   // threadsPerBlock
     launchDims.y = (zArr.lengthOf() + launchDims.x - 1) / launchDims.x;  // blocksPerGrid
-    launchDims.z = sizeof(Nd4jLong) * launchDims.x * (xArr.rankOf() + yArr.rankOf() + zArr.rankOf()) + 128; // sharedMem
+    launchDims.z = 1024; // sharedMem
 
     PointersManager manager(xArr.getContext(), "TrueBroadcastIntHelper<X>::exec");
 

          auto z = reinterpret_cast<Z*>(vz);

    __shared__ int xRank, yRank, zRank;
    __shared__ Nd4jLong zLen, totalThreads, *sharedMem;  // xLen == zLen, except when xRank = 1, in this case zLen = 2*xLen

    if (threadIdx.x == 0) {
        extern __shared__ unsigned char shmem[];
        sharedMem = reinterpret_cast<Nd4jLong*>(shmem);

        xRank = shape::rank(xShapeInfo);
        yRank = shape::rank(yShapeInfo);
        zRank = shape::rank(zShapeInfo);

    dim3 launchDims;
    launchDims.x = MAX_NUM_THREADS / 8;   // threadsPerBlock
    launchDims.y = (zArr.lengthOf() + launchDims.x - 1) / launchDims.x;  // blocksPerGrid
    launchDims.z = 1024; // sharedMem

    PointersManager manager(xArr.getContext(), "TrueBroadcastBoolHelper<X,Y>::exec");

