Computing Times
To provide a reference of the approximated computing time required by PyCFRL, we timed three of the four workflows introduced in the “Example Workflows” section under various combinations of the number of training samples (\(N\)) and the number of transitions (\(T\)): the preprocessing only workflow, the policy learning only workflow, and the real data workflow. Each workflow was run for 10 repetitions under each \(N\) and \(T\), and the mean and standard deviation (in parenthesis) of the computing times are recorded in the tables below. Early stopping and non-convergence checking were not enabled during these experiments. The unit of the computing times here is second (s).
The timing experiments were run on an internal cluster equipped with two 36-core
Intel Xeon Gold 6154 CPUs clocked at 3.0 GHz and 187 GB of RAM. Each job was
executed via SLURM on a single node using 1 CPU core and 1 GB of memory. Please
note that the computing times in this section are for reference only. The
actual computing times often vary by the computing hardware and the amount of
parallel computing tasks. Also, we only recorded the computing time for full
workflows. For advanced users interested in the computing times of individual
functions, we recommend using profiling tools such as cProfile
and
pyinstrument
.
The Preprocessing Only Workflow
\(N\), \(T\) |
\(T=10\) |
\(T=20\) |
---|---|---|
\(N=100\) |
\(32.1 \text{ } (0.15)\) |
\(64.3 \text{ } (0.29)\) |
\(N=500\) |
\(154.3 \text{ } (0.69)\) |
\(309.9 \text{ } (1.75)\) |
\(N=1000\) |
\(311.2 \text{ } (1.65)\) |
\(615.3 \text{ } (1.91)\) |
Code used for timing: See here.
The Preprocessing + Policy Learning Workflow
\(N\), \(T\) |
\(T=10\) |
\(T=20\) |
---|---|---|
\(N=100\) |
\(58.2 \text{ } (0.58)\) |
\(92.8 \text{ } (1.61)\) |
\(N=500\) |
\(172.1 \text{ } (3.59)\) |
\(333.9 \text{ } (13.00)\) |
\(N=1000\) |
\(326.5 \text{ } (4.17)\) |
\(637.2 \text{ } (9.51)\) |
Code used for timing: See here.
The Real Data Workflow
\(N\), \(T\) |
\(T=10\) |
\(T=20\) |
---|---|---|
\(N=100\) |
\(176.6 \text{ } (0.87)\) |
\(265.4 \text{ } (2.91)\) |
\(N=500\) |
\(378.6 \text{ } (48.33)\) |
\(703.1 \text{ } (98.49)\) |
\(N=1000\) |
\(591.9 \text{ } (31.84)\) |
\(1213.6 \text{ } (96.13)\) |
Code used for timing: See here.