Repository: Parsl/parsl

Issue:
Link to or provide instructions for example Perlmutter config
Since Cori is now retired, it can be removed from the [Configuration](https://parsl.readthedocs.io/en/stable/userguide/configuring.html?highlight=nersc#cori-nersc) section of the docs. In its place, it would be worthwhile to add (or link to) an example config for Perlmutter at NERSC, the details of which can be found [here](https://docs.nersc.gov/jobs/workflow/parsl/).


Discussion:

Resolving patch:
diff --git a/parsl/configs/cori.py b/parsl/configs/cori.py
deleted file mode 100644
--- a/parsl/configs/cori.py
+++ /dev/null
@@ -1,35 +0,0 @@
-from parsl.config import Config
-from parsl.providers import SlurmProvider
-from parsl.launchers import SrunLauncher
-from parsl.executors import HighThroughputExecutor
-from parsl.addresses import address_by_interface
-
-
-config = Config(
-    executors=[
-        HighThroughputExecutor(
-            label='Cori_HTEX_multinode',
-            # This is the network interface on the login node to
-            # which compute nodes can communicate
-            address=address_by_interface('bond0.144'),
-            cores_per_worker=2,
-            provider=SlurmProvider(
-                'regular',  # Partition / QOS
-                nodes_per_block=2,
-                init_blocks=1,
-                # string to prepend to #SBATCH blocks in the submit
-                # script to the scheduler eg: '#SBATCH --constraint=knl,quad,cache'
-                scheduler_options='',
-                # Command to be run before starting a worker, such as:
-                # 'module load Anaconda; source activate parsl_env'.
-                worker_init='',
-                # We request all hyperthreads on a node.
-                launcher=SrunLauncher(overrides='-c 272'),
-                walltime='00:10:00',
-                # Slurm scheduler on Cori can be slow at times,
-                # increase the command timeouts
-                cmd_timeout=120,
-            ),
-        )
-    ]
-)


Test patch:
diff --git a/parsl/tests/configs/cori.py b/parsl/tests/configs/cori.py
deleted file mode 100644
--- a/parsl/tests/configs/cori.py
+++ /dev/null
@@ -1,40 +0,0 @@
-from parsl.config import Config
-from parsl.providers import SlurmProvider
-from parsl.launchers import SrunLauncher
-from parsl.executors import HighThroughputExecutor
-from parsl.addresses import address_by_interface
-from .user_opts import user_opts
-
-
-def fresh_config():
-    return Config(
-        executors=[
-            HighThroughputExecutor(
-                label='Cori_HTEX_multinode',
-                # This is the network interface on the login node to
-                # which compute nodes can communicate
-                # address=address_by_interface('bond0.144'),
-                max_workers=1,
-                address=address_by_interface('bond0.144'),
-                provider=SlurmProvider(
-                    'debug',  # Partition / QOS
-                    nodes_per_block=2,
-                    init_blocks=1,
-                    # string to prepend to #SBATCH blocks in the submit
-                    # script to the scheduler eg: '#SBATCH --constraint=knl,quad,cache'
-                    scheduler_options=user_opts['cori']['scheduler_options'],
-
-                    # Command to be run before starting a worker, such as:
-                    # 'module load Anaconda; source activate parsl_env'.
-                    worker_init=user_opts['cori']['worker_init'],
-
-                    # We request all hyperthreads on a node.
-                    launcher=SrunLauncher(overrides='-c 272'),
-                    walltime='00:10:00',
-                    # Slurm scheduler on Cori can be slow at times,
-                    # increase the command timeouts
-                    cmd_timeout=120,
-                ),
-            )
-        ]
-    )
diff --git a/parsl/tests/configs/user_opts.py b/parsl/tests/configs/user_opts.py
--- a/parsl/tests/configs/user_opts.py
+++ b/parsl/tests/configs/user_opts.py
@@ -30,9 +30,6 @@
     'theta': {
         'worker_init': 'source ~/setup_parsl_test_env.sh;',
     },
-    'cori': {
-        'worker_init': 'source ~/setup_parsl_test_env.sh;',
-    },
     'summit': {
         'worker_init': 'source ~/setup_parsl_test_env.sh;',
     },
@@ -63,13 +60,6 @@
     #     'scheduler_options': "",
     #     'worker_init' : 'module load python/3.5.2; python3 -m venv parsl_env; source parsl_env/bin/activate; python3 -m pip install parsl==0.5.2'
     # },
-    # 'cori': {
-    #     'username': CORI_USERNAME,
-    #     'script_dir': "/global/homes/y/{}/parsl_scripts".format(CORI_USERNAME),
-    #     'scheduler_options': "#SBATCH --constraint=haswell",
-    #     "worker_init": """module load python/3.6-anaconda-4.4 ;
-    #     source activate parsl_env_3.6"""
-    # },
     # 'swan': {
     #     'username': SWAN_USERNAME,
     #     'script_dir' : "/home/users/{}/parsl_scripts".format(SWAN_USERNAME),
diff --git a/parsl/tests/integration/test_channels/test_scp_1.py b/parsl/tests/integration/test_channels/test_scp_1.py
--- a/parsl/tests/integration/test_channels/test_scp_1.py
+++ b/parsl/tests/integration/test_channels/test_scp_1.py
@@ -32,10 +32,6 @@ def test_connect_1():
         'swift': {
             'url': 'swift.rcc.uchicago.edu',
             'uname': 'yadunand'
-        },
-        'cori': {
-            'url': 'cori.nersc.gov',
-            'uname': 'yadunand'
         }
     }
 
diff --git a/parsl/tests/integration/test_channels/test_ssh_1.py b/parsl/tests/integration/test_channels/test_ssh_1.py
--- a/parsl/tests/integration/test_channels/test_ssh_1.py
+++ b/parsl/tests/integration/test_channels/test_ssh_1.py
@@ -35,15 +35,6 @@ def test_osg():
     print("Sitename :{0}  hostname:{1}".format(url, out))
 
 
-def test_cori():
-    ''' Test ssh connectivity to cori
-    '''
-    url = 'cori.nersc.gov'
-    uname = 'yadunand'
-    out = connect_and_list(url, uname)
-    print("Sitename :{0}  hostname:{1}".format(url, out))
-
-
 if __name__ == "__main__":
 
     pass
diff --git a/parsl/tests/manual_tests/test_basic.py b/parsl/tests/manual_tests/test_basic.py
--- a/parsl/tests/manual_tests/test_basic.py
+++ b/parsl/tests/manual_tests/test_basic.py
@@ -25,12 +25,6 @@
 # Tested. Confirmed. ssh X Torque X AprunLauncher
 # from parsl.tests.configs.swan_ipp_multinode import config
 
-# Tested. Confirmed. ssh X Slurm X SingleNodeLauncher
-# from parsl.tests.configs.cori_ipp_single_node import config
-
-# Tested. Confirmed. ssh X Slurm X srun
-# from parsl.tests.configs.cori_ipp_multinode import config
-
 # from parsl.tests.configs.cooley_ssh_il_single_node import config
 
 # Tested. Confirmed. local X GridEngine X singleNode
diff --git a/parsl/tests/site_tests/conda_setup.sh b/parsl/tests/site_tests/conda_setup.sh
--- a/parsl/tests/site_tests/conda_setup.sh
+++ b/parsl/tests/site_tests/conda_setup.sh
@@ -75,15 +75,6 @@ create_conda() {
         echo "module load ibm-wml-ce"                    >  ~/setup_parsl_test_env.sh
         echo "conda activate $PWD/$CONDA_TARGET"         >> ~/setup_parsl_test_env.sh
 
-    elif [[ "$(hostname)" =~ .*cori.* ]]
-    then
-        echo "On Cori"
-        module load python/3.7-anaconda-2019.07
-        conda create -p $CONDA_TARGET python=3.7 --yes --force
-        conda activate $PWD/$CONDA_TARGET
-        echo "module load python/3.7-anaconda-2019.07;"  >  ~/setup_parsl_test_env.sh
-        echo "conda activate $PWD/$CONDA_TARGET"         >> ~/setup_parsl_test_env.sh
-
     elif [[ "$(hostname)" =~ .*stampede2.* ]]
     then
         echo "On Stampede2"
diff --git a/parsl/tests/site_tests/site_config_selector.py b/parsl/tests/site_tests/site_config_selector.py
--- a/parsl/tests/site_tests/site_config_selector.py
+++ b/parsl/tests/site_tests/site_config_selector.py
@@ -27,11 +27,6 @@ def fresh_config():
         from parsl.tests.configs.summit import fresh_config
         config = fresh_config()
 
-    elif 'cori' in hostname:
-        print("Loading Cori config")
-        from parsl.tests.configs.cori import fresh_config
-        config = fresh_config()
-
     elif 'comet' in hostname:
         print("Loading Comet config")
         from parsl.tests.configs.comet import fresh_config
diff --git a/parsl/tests/sites/cori.rst b/parsl/tests/sites/cori.rst
deleted file mode 100644
--- a/parsl/tests/sites/cori.rst
+++ /dev/null
@@ -1,91 +0,0 @@
-Running Parsl on Cori
-=====================
-
-This is a brief guide to running Parsl on NERSC's newest supercomputer, named Cori, a Cray XC40.
-
-Requirements
-============
-
-Cori makes Python3.6 available via Conda. We'll use these packages to install Parsl and it's dependencies.
-Load the conda module. Make sure to match your python version with that env you setup on Cori.::
-
-  module load python/3.6-anaconda-4.4
-
-
-Now let's create a Conda virtual environment to isolate the following package installations and activate it.::
-
-  conda create --name parsl_env_3.6
-  source activate parsl_env_3.6
-
-Install pip to your conda env::
-
-  conda install -n parsl_env_3.6 pip
-
-Ensure that the pip package is coming from your local conda env dirs.::
-
-  which pip
-  pip install parsl
-
-I'd recommend downloading the latest source and adding the source path to your PYTHONPATH.::
-
-  git clone https://github.com/Parsl/parsl.git
-  export PYTHONPATH=$PWD/parsl:$PYTHONPATH
-
-Running IPP
-===========
-
-In order to run Parsl apps on Cori nodes, we need to first start an IPython controller on the login node.::
-
-  ipcontroller --port=5XXXX --ip=*
-
-.. note:: If you are timeout errors from ipengines in the submit script logs it is most likely due to
-          connectivity issues between the controller and engine.In which case, try specifying the internal
-          IP addresses uses on the login node. On Cori the address used for login nodes that  allows the
-          compute nodes to contact the login nodes is usually : 128.55.144.130 + CoriLoginServer number.
-          For eg Cori03 has 128.55.144.133 and Cori09 uses 128.55.144.139.
-
-Once the ipcontroller is started in a separate terminal or in a screen session, we can now run parsl scripts.
-
-Parsl Config:
-=============
-
-Here's a config for Cori that starts with a request for 2 nodes.
-
-.. code:: python3
-
-    config = {
-    "sites" : [
-        { "site" : "Local_IPP",
-          "auth" : {
-              "channel"   : "ssh",
-              "hostname"  : "cori.nersc.gov",
-              "username"  : "yadunand",
-              "script_dir" : "/global/homes/y/yadunand/parsl_scripts"
-          },
-          "execution" : {
-              "executor"   : "ipp",
-              "provider"   : "slurm",
-              "script_dir" : ".scripts",
-              "block" : {                 # Definition of a block
-                  "nodes"      : 1,       # of nodes in that block
-                  "task_blocks" : 1,       # total tasks in a block
-                  "walltime"   : "00:10:00",
-                  "init_blocks" : 1,
-                  "min_blocks"  : 0,
-                  "max_blocks"  : 1,
-                  "script_dir"  : ".",
-                  "options"    : {
-                      "partition" : "debug",
-                      "overrides" : """#SBATCH --constraint=haswell
-       module load python/3.5-anaconda ; source activate parsl_env_3.5"""
-                  }
-              }
-            }
-        }],
-        "globals" : { "lazyErrors" : True },
-        "controller" : { "publicIp" : '*' }
-    }
-
-
-
-