как запустить параллельные вычисления на удаленных кластерах, требующих ssh-аутентификации - PullRequest
0 голосов
/ 20 мая 2019

Я хочу запустить параллельную функцию на удаленных кластерах, но мне удается запустить ее только на моем локальном кластере

У меня есть 3 разных кластера с 3 разными адресами хоста. я попытался использовать пакет pathos для запуска вычислений на всех 3 кластерах вместе. Все же мне удается использовать только локальный кластер. все 3 кластера требуют ssh-аутентификации с именем пользователя и паролем. Я не нашел способа передать в pathos api имя пользователя и пароль удаленных кластеров.

Я даже пытался открыть туннель от localhost: special_port к одному из удаленных кластеров и запустить пафос на сервере = localhost: special_port, но он не работает (пафос все еще работает только на локальном кластере).

Как правильно выполнить операцию, описанную выше?

from pathos.pools import ParallelPool as ppool
import sshtunnel
import paramiko

    with sshtunnel.open_tunnel(
            (remote_host, 22),
        ssh_username=ssh_username,
        ssh_password=ssh_password,
        remote_bind_address=(remote_host, 22),
        local_bind_address=('', 12345)) as tunnel:
        client = paramiko.SSHClient()
        client.load_system_host_keys()
        client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        client.connect("127.0.0.1", 12345, username=ssh_username, password=ssh_password)
p = ppool(processes=80, servers=("132.67.140.121:22",), )


        x = [i for i in range(10000)]
        print(p.servers)
        y = p.amap(inc, x)

        z = y.get()
        client.close()
def inc(x):
    time.sleep(0.1)
    return x**2

...