Dear all, I have tried a primitive forking of kwant computation with joblib package. This worked well for bands computation, here's the code, but it fails for smatrix.transmission. I would be grateful for any hints and examples. Thank you, Sergey from joblib import Parallel, delayed def plot_bandstructure(flead, momenta, args, max=0.05): global processors switch=False cutoff=0.001 bands = kwant.physics.Bands(flead, args=args) energies = Parallel(n_jobs=processors)(delayed(bands)(k) for k in momenta) pyplot.figure() pyplot.plot(momenta, energies) pyplot.ylim([-max,max]) pyplot.xlabel("momentum [(lattice constant)^-1]") pyplot.ylabel("energy [t]") pyplot.show(block=False) def transm(sys, energy, lead1,lead2,args): print("Smatrix for energy ", energy) smatrix = delayed(kwant.smatrix)(sys, energy,args=args) return smatrix.transmission(lead1, lead2) def plot_conductance(sys, lead1,lead2, energies,args,label): # Compute transmission as a function of energy global processors data = Parallel(n_jobs=processors)(delayed(transm)(sys, energy,lead1, lead2, args=args) for energy in energies) print(data) pyplot.figure() pyplot.plot(energies, data) pyplot.xlabel("energy [t]") pyplot.ylabel("conductance [e^2/h]") pyplot.title(label) return data
Hi Sergey,
What is the error traceback that you see? Is it anything related to
pickling? If so, then you should try the development version of Kwant,
which allows to pickle Kwant systems.
Best,
Anton
On Thu, Mar 30, 2017 at 10:41 PM, Sergey Slizovskiy
Dear all,
I have tried a primitive forking of kwant computation with joblib package. This worked well for bands computation, here's the code, but it fails for smatrix.transmission. I would be grateful for any hints and examples.
Thank you,
Sergey
from joblib import Parallel, delayed
def plot_bandstructure(flead, momenta, args, max=0.05): global processors switch=False cutoff=0.001 bands = kwant.physics.Bands(flead, args=args) energies = Parallel(n_jobs=processors)(delayed(bands)(k) for k in momenta)
pyplot.figure() pyplot.plot(momenta, energies) pyplot.ylim([-max,max]) pyplot.xlabel("momentum [(lattice constant)^-1]") pyplot.ylabel("energy [t]") pyplot.show(block=False)
def transm(sys, energy, lead1,lead2,args): print("Smatrix for energy ", energy) smatrix = delayed(kwant.smatrix)(sys, energy,args=args) return smatrix.transmission(lead1, lead2)
def plot_conductance(sys, lead1,lead2, energies,args,label): # Compute transmission as a function of energy
global processors
data = Parallel(n_jobs=processors)(delayed(transm)(sys, energy,lead1, lead2, args=args) for energy in energies) print(data) pyplot.figure() pyplot.plot(energies, data) pyplot.xlabel("energy [t]") pyplot.ylabel("conductance [e^2/h]") pyplot.title(label) return data
participants (2)
-
Anton Akhmerov
-
Sergey Slizovskiy