@@ -190,11 +190,19 @@ void output_spike_populations(const SpikesInfo& spikes_info) {
190
190
}
191
191
#endif // ENABLE_SONATA_REPORTS
192
192
193
- /* * Write generated spikes to out.dat using mpi parallel i/o.
193
+ /* * Write generated spikes to either:
194
+ * - out.h5 using libsonatareport API when SONATA reports are enabled
195
+ * - out.dat using mpi parallel i/o when SONATA reports are disabled
194
196
* \todo : MPI related code should be factored into nrnmpi.c
195
197
* Check spike record length which is set to 64 chars
196
198
*/
197
199
static void output_spikes_parallel (const char * outpath, const SpikesInfo& spikes_info) {
200
+ #ifdef ENABLE_SONATA_REPORTS
201
+ sonata_create_spikefile (outpath, spikes_info.file_name .data ());
202
+ output_spike_populations (spikes_info);
203
+ sonata_write_spike_populations ();
204
+ sonata_close_spikefile ();
205
+ #else
198
206
std::stringstream ss;
199
207
ss << outpath << " /out.dat" ;
200
208
std::string fname = ss.str ();
@@ -203,12 +211,6 @@ static void output_spikes_parallel(const char* outpath, const SpikesInfo& spikes
203
211
if (nrnmpi_myid == 0 ) {
204
212
remove (fname.c_str ());
205
213
}
206
- #ifdef ENABLE_SONATA_REPORTS
207
- sonata_create_spikefile (outpath, spikes_info.file_name .data ());
208
- output_spike_populations (spikes_info);
209
- sonata_write_spike_populations ();
210
- sonata_close_spikefile ();
211
- #endif // ENABLE_SONATA_REPORTS
212
214
213
215
sort_spikes (spikevec_time, spikevec_gid);
214
216
nrnmpi_barrier ();
@@ -244,6 +246,7 @@ static void output_spikes_parallel(const char* outpath, const SpikesInfo& spikes
244
246
nrnmpi_write_file (fname, spike_data, num_chars);
245
247
246
248
free (spike_data);
249
+ #endif // ENABLE_SONATA_REPORTS
247
250
}
248
251
#endif
249
252
0 commit comments