In order to reduce the cost for data movement among memories or distributed nodes, which is referred to as the communication, so-called communication avoiding algorithms have been widely studied. The Cholesky QR algorithm is an algorithm for computing the QR factorization of a matrix. This algorithm is numerically unstable but has excellent properties (e.g. communication avoidance) from the viewpoint of high performance computing. Therefore, the Cholesky QR algorithm is attracting the interest of many researchers nowadays. In this talk, we will first show the suitability of the Cholesky QR algorithm for high performance computing. Next, we will introduce our recent results on an algorithm that simply repeats the Cholesky QR algorithm twice, which we call the CholeskyQR2 algorithm. We will also mention some applications of the CholeskyQR2 algorithm (e.g. block Gram-Schmidt, block Householder transformation, and the QR factorization in a weighted inner product space). This is joint work with Y. Yamamoto, Y. Nakatsukasa, and Y. Yanagisawa.