
\begin{tikzpicture}
\pgfplotstableread{
Npoints NumPy PyTorch KeOps
100.00000 0.000421   0.000244   0.000136  
200.00000 0.001759   0.000200   0.000137  
500.00000 0.010887   0.000199   0.000146  
1000.00000 0.037291  0.000160   0.000159  
2000.00000 0.151025  0.000422   0.000187  
5000.00000 0.841828  0.002334   0.000259  
10000.00000 3.242485  0.010833   0.000382  
20000.00000 12.794234  0.039698   0.000907  
50000.00000 nan  nan       0.003970  
100000.00000 nan  nan       0.014860  
200000.00000 nan  nan       0.058804  
500000.00000 nan  nan       0.354583
1000000.00000 nan  nan      1.407667
}\datatable
        

\begin{axis}[width=.46\textwidth,grid=both,ymin=1.1e-4, ymax=10, xmin=100, xmax=1000000,
    %title={\scriptsize On utilise NumPy, PyTorch et KeOps },
            xlabel={\scriptsize Nombre de points N}, 
            ylabel={\scriptsize Temps}, 
            xtick={1e2,1e3,1e4,1e5,1e6},
            xticklabels={100,1k,10k,100k,1M},
            ytick={1e-3,1e-2,1e-1,1,1e1},
            yticklabels={1\,ms,10\,ms,100\,ms,1\,s,10\,s},
            xmode=log, ymode=log,
            legend pos = north west,
            x post scale=1.7,
            grid=major,
    legend cell align={left},
    axis background/.style={fill=white},
    label style={font=\tiny},
    tick label style={font=\tiny},]
    \addplot[green!80!black, thick,mark=triangle*] table[x=Npoints,y=NumPy]  {\datatable};
    \addplot[blue!50, thick,mark=square*] table[x=Npoints,y=PyTorch]  {\datatable} node[above]{\tiny \om{\textbf{out of memory!}}};
    \addplot[red!80, thick,mark=*] table[x=Npoints,y=KeOps]  {\datatable};
    \addlegendentry{{\tiny \texttt{~NumPy~~(CPU)}}}
    \addlegendentry{{\tiny \texttt{PyTorch~(GPU)}}}
    \addlegendentry{{\tiny \texttt{~KeOps~~(GPU)}}}
\end{axis}
\end{tikzpicture}
