From 58300e6bb2cc482619f10aecc2f65e9dbc735472 Mon Sep 17 00:00:00 2001
From: Bas Nijholt <basnijholt@gmail.com>
Date: Mon, 23 Sep 2019 14:00:55 +0200
Subject: [PATCH] use adaptive-scheduler

---
 phase_diagram.ipynb | 85 +++++++++++++++++++++++++++------------------
 1 file changed, 51 insertions(+), 34 deletions(-)

diff --git a/phase_diagram.ipynb b/phase_diagram.ipynb
index 009d5c9..1f0e82f 100644
--- a/phase_diagram.ipynb
+++ b/phase_diagram.ipynb
@@ -6,17 +6,10 @@
    "metadata": {},
    "outputs": [],
    "source": [
+    "%%writefile learners_file.py\n",
+    "\n",
+    "import phase_diagram\n",
     "import adaptive\n",
-    "adaptive.notebook_extension()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "import phase_diagram as funcs\n",
     "\n",
     "lead_pars = dict(\n",
     "    a=10, r1=50, r2=70, coverage_angle=135, angle=45, with_shell=True, which_lead=\"\"\n",
@@ -43,36 +36,40 @@
     "    r1=None,\n",
     "    sigma=None,\n",
     "    x0=None,\n",
-    "    **funcs.constants.__dict__\n",
+    "    **phase_diagram.constants.__dict__\n",
     ")\n",
     "\n",
     "\n",
     "def pf(xy, params=params, lead_pars=lead_pars):\n",
-    "    import phase_diagram as funcs\n",
+    "    import phase_diagram \n",
     "\n",
     "    params[\"B_x\"], params[\"mu_lead\"] = xy\n",
-    "    lead = funcs.make_lead(**lead_pars).finalized()\n",
-    "    return funcs.calculate_pfaffian(lead, params)\n",
+    "    lead = phase_diagram.make_lead(**lead_pars).finalized()\n",
+    "    return phase_diagram.calculate_pfaffian(lead, params)\n",
     "\n",
     "\n",
     "def smallest_gap(xy, params=params, lead_pars=lead_pars):\n",
-    "    import phase_diagram as funcs\n",
+    "    import phase_diagram\n",
     "\n",
     "    params[\"B_x\"], params[\"mu_lead\"] = xy\n",
-    "    lead = funcs.make_lead(**lead_pars).finalized()\n",
-    "    pf = funcs.calculate_pfaffian(lead, params)\n",
-    "    gap = funcs.gap_from_modes(lead, params)\n",
-    "    return pf * gap"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "learner = adaptive.Learner2D(smallest_gap, bounds=[(0, 2), (0, 35)])\n",
-    "# learner.load('phase_diagram.pickle')"
+    "    lead = phase_diagram.make_lead(**lead_pars).finalized()\n",
+    "    pf = phase_diagram.calculate_pfaffian(lead, params)\n",
+    "    gap = phase_diagram.gap_from_modes(lead, params)\n",
+    "    return pf * gap\n",
+    "\n",
+    "fname = 'phase_diagram_gap.pickle'\n",
+    "f = smallest_gap\n",
+    "\n",
+    "# fname = 'phase_diagram.pickle'\n",
+    "# f = pf\n",
+    "\n",
+    "loss = adaptive.learner.learnerND.curvature_loss_function()\n",
+    "learner = adaptive.LearnerND(smallest_gap, bounds=[(0, 2), (0, 35)], loss_per_simplex=loss)\n",
+    "\n",
+    "# learner.load(fname)\n",
+    "\n",
+    "learners = [learner]\n",
+    "fnames = [fname]"
    ]
   },
   {
@@ -81,7 +78,10 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "runner = adaptive.Runner(learner, goal=lambda l: l.npoints > 60000)"
+    "import adaptive\n",
+    "adaptive.notebook_extension()\n",
+    "runner = adaptive.Runner(learner, goal=lambda l: l.npoints > 60000)\n",
+    "runner.live_info()"
    ]
   },
   {
@@ -90,7 +90,8 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "runner.live_info()"
+    "%%output size=100\n",
+    "learner.plot(tri_alpha=0.4, n=None)"
    ]
   },
   {
@@ -99,8 +100,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "%%output size=100\n",
-    "learner.plot(tri_alpha=0.4, n=None)"
+    "learner.save(fname)"
    ]
   },
   {
@@ -109,7 +109,24 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "learner.save('phase_diagram.pickle')"
+    "import adaptive_scheduler\n",
+    "\n",
+    "def goal(learner):\n",
+    "    return learner.npoints > 100_000\n",
+    "\n",
+    "scheduler = adaptive_scheduler.scheduler.PBS(\n",
+    "    cores=13*10,\n",
+    "    cores_per_node=10,\n",
+    ")  # every learner get this many cores\n",
+    "\n",
+    "run_manager = adaptive_scheduler.server_support.RunManager(\n",
+    "    scheduler=scheduler,\n",
+    "    learners_file=\"learners_file.py\",\n",
+    "    goal=goal,\n",
+    "    log_interval=30,\n",
+    "    save_interval=300,\n",
+    ")\n",
+    "run_manager.start()\n"
    ]
   },
   {
-- 
GitLab