# An ADMM Based Parallel Approach for Fund of Fund Construction
## 5 Experiment  
We implemented our algorithms on CPU and parallelized them on GPU. All the programs run on a server with i9-10940X with 128 M RAM and one NVIDIA RTX2080 ti, 11 GB memory. The server's CPU is i9-10940X, with 128 M memory and an NVIDIA RTX 2080 ti GPU, 11 GB memory. The performance of the proposed methods is reported in comparison with the sequential quadratic programming (SQP) and the interior point method (IPM). We simulated the net value of \(N=5n\) different funds with \(N\) ranging from 50 to 5000, which could be the maximum portfolio capacity for the funds. All the fund data is simulated by the Geometric Brownian motion (GBM), with different risk level \(\sigma\) with regard to the different type of funds. The following table shows the running time for solving the problems (1) of SQP and the CPU implementation of our proposed method. The relative error is calculated by the \(|x^{*}-x_{\text{SQP}}^{*}|/x_{\text{mincon}}^{*}\), where \(x^{*}\) and \(x_{\text{SQP}}^{*}\) represent the optimal value of the proposed method and the SQP, respectively. For smaller-scale problems, we ran numerical experiments 100 times and then averaged them, and for larger-scale problems, we ran the experiments 20 times. Figure 1: Overview of the utilization for compute and memory resources of the GPU presented as a roofline chart. Table 1 shows the running time and relative error for solving the portfolio problem with different methods. As \(N\) increases to more than \(2\times 10^{3}\), it will be challenge for the commercial solver to solve the problems in an acceptable time (\(3\times 10^{3}\) s). The proposed algorithm does not show an outstanding performance in the CPU version. Table 2 shows the GPU implementation of the proposed algorithm. By conducting the iteration in parallel, we reach a respectable acceleration. Figure 2 shows the calculation time and relative error curves of the FOF model (2.1) solved by different methods. We implement this method in CPU(ADMM) and GPU(cuADMM). We can see that the CPU implementation of the proposed method is better than SQP and IPM. When solving problems of different scales, the relative error of this method decreases faster, and the solving speed of the GPU version accelerates significantly. \begin{table}
\begin{tabular}{c c c c c c} \hline time(s)\(\backslash N\) & 10 & 50 & 100 & 150 & 200 \\ \hline SQP & 0.018 & 0.106 & 0.236 & 0.614 & 0.939 \\ IPM & 0.038 & 0.145 & 0.355 & 0.780 & 1.088 \\ ADMM & 0.073 & 0.086 & 0.159 & 0.267 & 0.409 \\ relative error \(1\times 10^{-6}\) & 2.073 & 3.934 & 1.323 & 2.442 & 4.701 \\ \hline \(N\) & 300 & 350 & 400 & 450 & 500 \\ \hline SQP & 1.798 & 2.267 & 2.735 & 3.814 & 5.203 \\ IPM & 2.376 & 3.144 & 3.894 & 5.000 & 7.024 \\ ADMM & 0.739 & 0.970 & 1.760 & 2.148 & 3.098 \\ relative error \(1\times 10^{-6}\) & 1.804 & 5.591 & 5.066 & 3.595 & 9.684 \\ \hline \(N\) & 700 & 800 & 900 & 1000 & 1200 \\ \hline SQP & 12.297 & 19.300 & 26.657 & 51.833 & 118.145 \\ IPM & 13.992 & 17.669 & 25.677 & 36.335 & 82.592 \\ ADMM & 3.124 & 3.947 & 6.111 & 8.955 & 10.646 \\ relative error \(1\times 10^{-6}\) & 7.633 & 2.294 & 3.737 & 1.603 & 1.660 \\ \hline \(N\) & 1500 & 2000 & 3000 & 4000 & 5000 \\ \hline SQP & 309.069 & 1082.843 & \(>\)3000 & \(>\)3000 & \(>\)3000 \\ IPM & 164.336 & 357.703 & 1683.123 & \(>\)3000 & \(>\)3000 \\ ADMM & 13.277 & 24.263 & 88.709 & 152.531 & 266.024 \\ relative error \(1\times 10^{-6}\) & 5.339 & 2.892 & 1.381 & & \\ \hline \end{tabular}
\end{table} 
Table 1: Running time and relative error for solving the portfolio problem.