Hi,
I’m trying to use dask distributed to distribute a custom module across multiple workers. The module uses numpy.f2py, and I’m getting errors running it:
client.upload_file(‘/…/EAP_02/EAP_tn.py’)
/nobackupp11/tjnorman/dask-worker-space/worker-jxynhyrj/EAP_tn.py in
11 sourcecode = sourcefile.read()
12 f2py.compile(sourcecode, modulename=‘Dmmex_R14B_4’)
—> 13 import Dmmex_R14B_4
14 import numpy as np
15 #import pandas as pd
ModuleNotFoundError: No module named ‘Dmmex_R14B_4’
Where Dmmex_R14B_4 is a fortran program being converted for use in python by numpy.f2py.
Does anyone has any suggestion on how to solve this problem?
Thanks
Hi @tjnorman and welcome to discourse! As you’ve noted in the error message, the Dmmex_R14B_4
module is not accessible to the workers. In addition to the file /…/EAP_02/EAP_tn.py’
, have you also already uploaded Dmmex_R14B_4
to the workers? Additionally, if you want to upload a more comprehensive module you can package it into a zip or egg file - see Futures — Dask documentation for more details.
1 Like
Thanks @scharlotte for your response. I tried your suggest and am encountering similar errors and same problem. When I use client.upload_file(‘/…/EAP_02/Dmmex_R14B_4.f’) to upload the file or upload all the relevant modules as a zip file I get the error:
ModuleNotFoundError: No module named ‘Dmmex_R14B_4’
Dmmex_R14B_4 is a fortran file. Can Dask read fortran files?
Thanks
Hi @tjnorman thanks for the update!
Ah I see I think I misunderstood your question, I thought you had already converted Dmmex_R14B_4
to a Python module using numpy.f2py
and were looking to load that module to the workers. Instead it sounds like you’re hoping to upload a fortran file to the workers, which will not be interpretable by Dask. When I try to do this, I get a warning: distributed.utils - WARNING - Found nothing to import from fib1.f
:
from dask.distributed import Client, LocalCluster
cluster = LocalCluster()
client = Client(cluster)
# created from https://numpy.org/doc/stable/f2py/usage.html example
client.upload_file('fib1.f')
Apologies for the confusion!