Hi Camilo,
Thanks a lot for your help ... but problem remains. Now I get:
Traceback (most recent call last): File "eprop_supervised_regression_handwriting_bsshslm_2020.py", line 545, in <module> readout_signal = readout_signal.reshape((readout_signal[0], n_iter, batch_size, steps["sequence"])) #readout_signal = readout_signal.reshape((n_out, n_iter, batch_size, steps["sequence"])) TypeError: only integer scalar arrays can be converted to a scalar index
Xavier ________________________________ From: Camilo Jara Do Nascimento C.Jara-Do-Nascimento@sussex.ac.uk Sent: Wednesday, October 29, 2025 4:56 PM To: NEST User Mailing List users@nest-simulator.org; Xavier Otazu Porter xotazu@cvc.uab.cat Subject: Re: [NEST Users] MPI problem with e-prop tutorials
Hi Xavier,
The problem I see is that the readout first dimension is based on the n_out, and when using mpi to parallelizing it will use this first dimension to parallelize your instances. I quickly fixed it by changing the first dimension to be readout_signal.shape[0] since its already defined before by using the "idc" indexes.
readout_signal = readout_signal.reshape((readout_signal.shape[0], n_iter, batch_size, steps["sequence"]))
Hope this helps.
Best, Camilo Jara D. ________________________________ From: Xavier Otazu xotazu@cvc.uab.cat Sent: 29 October 2025 14:03 To: users@nest-simulator.org users@nest-simulator.org Subject: [NEST Users] MPI problem with e-prop tutorials
Hello,
I have tried to execute one of the e-prop tutorials (eprop_supervised_regression_handwriting_bsshslm_2020.py) and get into problems when activating MPI. I do not know whether it is an e-prop C++ implementation problem or a Python tutorial code problem (in some cases, but not all of them, it looks like the last one).
I have two files (hostfile_orig_1 and hostfile_orig_2) to define in what nodes of the cluster to execute the program. The content of these files is: hostfile_orig_1: node0 slots=1 node1 slots=1
hostfile_orig_2: node0 slots=2 node0 slots=2
The 'slots' key tells how many (mpi) processes can be executed on a particular node.
Depending on the number of processes, the errors are a bit different. In all the following examples, I use "total_num_virtual_procs": 2 on line 173 of tutorial file.
Below I write the execution command and the output error.
Command: mpirun -np 1 -hostfile hostfile_orig_1 python3 eprop_supervised_regression_handwriting_bsshslm_2020.py Output: With a "serial" execution like this one, everything is OK:
Command: mpirun -np 2 -hostfile hostfile_orig_2 python3 eprop_supervised_regression_handwriting_bsshslm_2020.py Output: Traceback (most recent call last): File "eprop_supervised_regression_handwriting_bsshslm_2020.py", line 404, in <module> nest.GetConnections(nrns_rec[0], nrns_rec[1:3]).set([params_init_optimizer] * 2) File "/home/neurobit/local/nest_3.9/lib64/python3.8/site-packages/nest/lib/hl_api_types.py", line 945, in set raise TypeError("status dict must be a dict, or a list of dicts of length {}".format(self.__len__())) TypeError: status dict must be a dict, or a list of dicts of length 1
Command: mpirun -np 2 -hostfile hostfile_orig_2 python3 eprop_supervised_regression_handwriting_bsshslm_2020.py (commenting line 404) Output: Traceback (most recent call last): File "eprop_supervised_regression_handwriting_bsshslm_2020.py", line 545, in <module> readout_signal = readout_signal.reshape((n_out, n_iter, batch_size, steps["sequence"])) ValueError: cannot reshape array of size 364800 into shape (2,200,1,1824)
Command: mpirun -np 2 -hostfile hostfile_orig_1 python3 eprop_supervised_regression_handwriting_bsshslm_2020.py (commenting line 404) Output: Traceback (most recent call last): File "eprop_supervised_regression_handwriting_bsshslm_2020.py", line 545, in <module> readout_signal = readout_signal.reshape((n_out, n_iter, batch_size, steps["sequence"])) ValueError: cannot reshape array of size 364800 into shape (2,200,1,1824)
Command: mpirun -np 4 -hostfile hostfile_orig_2 python3 eprop_supervised_regression_handwriting_bsshslm_2020.py (commenting line 404 and using "total_num_virtual_procs": 4 on line 173 of tutorial file.) Output: Traceback (most recent call last): File "eprop_supervised_regression_handwriting_bsshslm_2020.py", line 493, in <module> "rec_out": get_weights(nrns_rec, nrns_out), File "eprop_supervised_regression_handwriting_bsshslm_2020.py", line 482, in get_weights conns["senders"] = np.array(conns["source"]) - np.min(conns["source"]) TypeError: tuple indices must be integers or slices, not str
In this last case, program stops and hungs.
If you want, I could submit a bug report on github.
Xavier _______________________________________________ NEST Users mailing list -- users@nest-simulator.org To unsubscribe send an email to users-leave@nest-simulator.org
Computer Vision Centerhttp://www.cvc.uab.cat CONFIDENTIALITY WARNINGhttp://www.cvc.uab.es/?page_id=7475