How to use Parallel computing on Manipulate option on ParametricNDSolveValue

My aim is to use Manipulate option on the ParametricNDSolveValue. When ever i run my code “Manipulate” option runs very slow and some time shows Aborted when check for that value of parameter it works perfectly fine. My actual equations are very big and takes a lot of time for computing. Here i’m providing a toy problem, I wanted to use parallel programming (I don’t know how to perform parallel coding). and also be able to use Manipulate option. Kindly anyone provide a solution.

ClearAll[Evaluate[StringJoin[Context[], "*"]]] Needs["Utilities`CleanSlate`"];  CleanSlate[];  ClearInOut[];     f1[a_, t_, x1_, x2_] := a*Sin[t*x1] +      Cos[x2]/(1 + a);    f2[a_, t_, x1_, x2_] := 1/(1 + a*t) +      a*Sin[x1];    sol1 := ParametricNDSolveValue[    {Derivative[1][x1][t] ==       f1[a, t, x1[t], x2[t]] + x2[t],      Derivative[1][x2][t] == f2[a, t, x1[t],        x2[t]], x1[0] == 0.001, x2[0] == 0},     {x1, x2}, {t, 0, 10}, {a}]    Manipulate[Plot[Evaluate[(#1[t] & ) /@       sol1[a]], {t, 0, 10}, PlotRange ->      {{0, 10}, {-20, 20}}, PlotLegends ->      {x1, x2}], {{a, 1}, 0, 10, 0.1}]