[IPython-dev] Using IPython Parallel inside a class
Rafał Skolasiński
rjtskolasinski at gmail.com
Wed Dec 3 12:37:46 EST 2014
Hi,
It doesn't look like a solution. I still get bunch of errors. And I would
like to use self.hamiltonian instance, not create more instances of it. the
hamiltonian object in my real (not just a test) simulation code enters as
the argument to the Simulation class constructor.
And I would also like to execute hamiltonian.get_matrix method in parallel.
The version of that method I use in my real simulation code is a little
more complex and also take some time to be executed. Not maybe as much as
diagonalization but still.
Cheers,
Rafal
2014-12-03 18:28 GMT+01:00 Doug Blank <doug.blank at gmail.com>:
> I haven't done much parallel IPython, but it looks like you just need to
> define/import everything on the remote clients, something like:
>
> def get_energy(momentum):
> import scipy.sparse.linalg as sla
> from scipy.sparse import coo_matrix
> from scipy.sparse import csc_matrix
> import numpy as np
> class Hamiltonian:
> def get_matrix(self, k):
> # sleep(3.0)
> return k**2 * np.diag(range(100))
>
> hamiltonian = Hamiltonian()
> mat = hamiltonian.get_matrix(momentum)
> mat = csc_matrix(mat)
> ev = sla.eigsh(mat,k=5, sigma = 0.5, which = 'LM')
> return ev[0]
>
> def compute_parallel(momenta):
> rc = parallel.Client()
> dview = rc[:]
> spectrum = dview.map_sync(get_energy,momenta)
> return spectrum
>
> -Doug
>
> On Wed, Dec 3, 2014 at 12:21 PM, Rafał Skolasiński <
> rjtskolasinski at gmail.com> wrote:
>
>> Oh, in the file I attached there should ofc be line
>> spectrum = dview.map_sync(self.get_energy,momenta)
>> instead of
>> spectrum = dview.map_sync(self.get_energy_for_parallel,momenta)
>>
>> Sorry for mistake.
>> Raphael
>>
>>
>> 2014-12-03 18:05 GMT+01:00 Rafał Skolasiński <rjtskolasinski at gmail.com>:
>>
>>> Hi Guys,
>>>
>>> I hope this is the right place to ask this kind of question.
>>>
>>> I would like to use IPython parallel in my physical simulation.
>>> In my mind I've got class Simulation, which contain as a field object
>>> hamiltonian of class Hamiltonian.
>>>
>>> Method get_energy should call hamiltonian.get_matrix(momentum),
>>> diagonalize it with scipy method and return energies.
>>>
>>> I would like to execute it in parallel for a list of different momenta.
>>>
>>>
>>> I tested it with a standard python 'map' function and it worked so I
>>> thought that easiest way would be to use 'dview.map_sync' in the same way
>>> but it doesn't looks like a proper way of doing it.
>>>
>>> I am attaching my testing code. I would be very grateful for any help
>>> and ideas how to do it in a nice and clean way.
>>>
>>> Cheers,
>>> Raphael
>>>
>>
>>
>> _______________________________________________
>> IPython-dev mailing list
>> IPython-dev at scipy.org
>> http://mail.scipy.org/mailman/listinfo/ipython-dev
>>
>>
>
> _______________________________________________
> IPython-dev mailing list
> IPython-dev at scipy.org
> http://mail.scipy.org/mailman/listinfo/ipython-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ipython-dev/attachments/20141203/d3a7e383/attachment.html>
More information about the IPython-dev
mailing list