def dot_batch_nocheck(a_arr_gpu, b_arr_gpu, c_arr_gpu, a_ptr_gpu, b_ptr_gpu, c_ptr_gpu,
                      transa = 'N', transb = 'N', a = 1, b = 1, handle = None):
    if handle is None:
        handle = misc._global_cublas_handle
    N = len(a_arr_gpu)
    a_shape = a_arr_gpu[0].shape
    a_dtype = a_arr_gpu[0].dtype
    b_shape = b_arr_gpu[0].shape
    b_dtype = b_arr_gpu[0].dtype
    c_shape = c_arr_gpu[0].shape
    c_dtype = c_arr_gpu[0].dtype
    
    for i in range(N):
        assert a_arr_gpu[i].shape == a_shape
        assert a_arr_gpu[i].dtype == a_dtype
        assert b_arr_gpu[i].shape == b_shape
        assert b_arr_gpu[i].dtype == b_dtype
        assert c_arr_gpu[i].shape == c_shape
        assert c_arr_gpu[i].dtype == c_dtype

        assert a_arr_gpu[i].flags.c_contiguous
        assert b_arr_gpu[i].flags.c_contiguous
        assert c_arr_gpu[i].flags.c_contiguous

    if len(a_shape) == 1:        
        a_shape = (1, a_shape[0])
    if len(b_shape) == 1:
        b_shape = (1, b_shape[0])
    if len(c_shape) == 1:
        c_shape = (1, c_shape[0])

    transa = lower(transa)
    transb = lower(transb)

    if transb in ['t', 'c']:
        m, k = b_shape
    elif transb in ['n']:
        k, m = b_shape
    else:
        raise ValueError('invalid value for transb')
    
    if transa in ['t', 'c']:
        l, n = a_shape
    elif transa in ['n']:
        n, l = a_shape
    else:
        raise ValueError('invalid value for transa')

    i, j = c_shape
    
    if l != k:
        raise ValueError('objects are not aligned')    
    if i != n:
        raise ValueError('objects are not aligned')
    if j != m:
        raise ValueError('objects are not aligned')
    
    if transb == 'n':
        lda = max(1, m)
    else:
        lda = max(1, k)

    if transa == 'n':
        ldb = max(1, k)
    else:
        ldb = max(1, n)

    ldc = max(1, m)
    
    if (a_dtype == np.complex64 and b_dtype == np.complex64 \
            and c_dtype == np.complex64):
        cublas_func = cublas.cublasCgemmBatched
        alpha = np.complex64(a)
        beta = np.complex64(b)
    elif (a_dtype == np.float32 and b_dtype == np.float32\
            and c_dtype == np.float32):
        cublas_func = cublas.cublasSgemmBatched
        alpha = np.float32(a)
        beta = np.float32(b)
    elif (a_dtype == np.complex128 and b_dtype == np.complex128\
            and c_dtype == np.complex128):
        cublas_func = cublas.cublasZgemmBatched
        alpha = np.complex128(a)
        beta = np.complex128(b)
    elif (a_dtype == np.float64 and b_dtype == np.float64\
            and c_dtype == np.float64):
        cublas_func = cublas.cublasDgemmBatched
        alpha = np.float64(a)
        beta = np.float64(b)
    else:
        raise ValueError('unsupported combination of input types')

    cublas_func(handle, transb, transa, m, n, k, alpha, b_ptr_gpu.gpudata, lda, 
                a_ptr_gpu.gpudata, ldb, beta, c_ptr_gpu.gpudata, ldc, N)
# @profile
Test getting HTML version of a resource rather than JSON.
dataset/ETHPy150Open rll/lfd/lfd/tpsopt/culinalg_exts.py/dot_batch_nocheck--crossover with--dataset/ETHPy150Open jeffknupp/sandman/tests/test_sandman.py/TestSandmanContentTypes.test_get_html