The considerable impact of Convolutional Neural Networks on many Artificial Intelligence tasks has led to the development of various high performance algorithms for the convolution operator present in this type of networks. One of these approaches leverages the \imcol transform followed by a general matrix multiplication (GEMM) in order to take advantage of the highly optimized realizations of the GEMM kernel in many linear algebra libraries. The main problems of this approach are 1) the large memory workspace required to host the intermediate matrices generated by the IM2COL transform; and 2) the time to perform the IM2COL transform, which is not negligible for complex neural networks. This paper presents a portable high performance convolution algorithm based on the BLIS realization of the GEMM kernel that avoids the use of the intermediate memory by taking advantage of the BLIS structure. In addition, the proposed algorithm eliminates the cost of the explicit IM2COL transform, while maintaining the portability and performance of the underlying realization of GEMM in BLIS.
Energy efficiency of finite difference algorithms on multicore CPUs, GPUs, and Intel Xeon Phi processors
除了在高性能计算系统中常见的硬件空闲时间限制之外,未来的系统可能还将受到能量预算的限制。在目前的工作中,不同的计算和内存强度的有限差分算法的能源效率和运行时间的英特尔常春藤桥CPU节点,英特尔至强融核骑士登陆处理器,和NVIDIA特斯拉K40 c GPU进行评估。传统的方式存储的离散衍生物的解决方案的进步全球阵列被发现是低效的能源消耗和运行时间。相比之下,一类算法,其中离散化的衍生物进行评估的飞行或存储为线程/进程的本地变量(产生高计算强度)是最佳的能源消耗和运行时间。在考虑的所有三个硬件架构上,与存储器密集型算法相比,观察到高计算密集型算法的~2的加速和~2的节能。的能量消耗被发现是成比例的运行时间,无论消耗的功率和GPU相比,CPU节点上的相同的算法具有约5的节能。
Complex applications running on multicore processors show a rich performance phenomenology. The growing number of cores per ccNUMA domain complicates performance analysis of memory-bound code since system noise, load imbalance, or task-based programming models can lead to thread desynchronization. Hence, the simplifying assumption that all cores execute the same loop can not be upheld. Motivated by observations on plain and modified versions of the HPCG benchmark, we construct a performance model of execution of memory-bound loop kernels. It can predict the memory bandwidth share per kernel on…
We evolve PyDTNN, a framework for distributed parallel training of Deep Neural Networks (DNNs), into an efficient inference tool for convolutional neural networks. Our optimization process on multicore ARM processors involves several high-level transformations of the original framework, such as the development and integration of Cython routines to exploit thread-level parallelism; the design and development of micro-kernels for the matrix multiplication, vectorized with ARMs NEON intrinsics, that can accommodate layer fusion; and the appropriate selection of several cache configuration paramet…