/*
* test_node_distribution.sli
*
* This file is part of NEST.
*
* Copyright (C) 2004 The NEST Initiative
*
* NEST is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* NEST is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with NEST. If not, see <http://www.gnu.org/licenses/>.
*
*/
/* BeginDocumentation
Name: testsuite::test_node_distribution - sli script to test the distribution of nodes.
Synopsis: (test_node_distribution) run -> compare response with reference data
Description: test_node_distribution checks the spike interaction of several
iaf_neuron model neurons, which are grouped in subnets. The output of this script
should be the same with all combinations of threads and processes. The order of
the lines may vary, however.
The neurons are connected in an all-to-all fashion and the spikes of the first
neuron of each subnet are fed into a spike_detector. The nodes of the second
subnet are forced to be created on the same virtual process.
FirstVersion: August 2006
Author: Jochen Eppler
SeeAlso: testsuite::test_iaf_1to2
*/
/unittest (6688) require
/unittest using
/NodeDistribution
{
/d Set /h Set
ResetKernel
0 <<
/local_num_threads 1
/resolution h
>> SetStatus
/iaf_neuron << /I_e 1450.0 >> SetDefaults
/subnet Create /sn1 Set
sn1 ChangeSubnet
/iaf_neuron 3 Create ;
0 ChangeSubnet
/subnet Create /sn2 Set
sn2 << /children_on_same_vp true >> SetStatus
sn2 ChangeSubnet
/iaf_neuron 3 Create ;
sn1 GetGlobalLeaves
{ sn2 GetGlobalLeaves DivergentConnect }
forall
sn2 GetGlobalLeaves
{ sn1 GetGlobalLeaves DivergentConnect }
forall
0 ChangeSubnet
/spike_detector Create /sd Set
sd << /withgid true /withtime true /to_screen false >> SetStatus
sn1 GetGlobalNodes 0 get sd Connect
sn2 GetGlobalNodes 0 get sd Connect
40 Simulate
d Transpose First /test_times Set
sd [/events [/senders /times]] get cva 6 ToUnitTestPrecision Transpose
{First test_times exch MemberQ } Select
d eq
} def
{
% h d, vector of resolutions and compressed reference data
InflateUnitTestData
Transpose {NodeDistribution} MapThread
true exch {and} Fold % remove this line to see individual results
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Expected output of this program:
%
% The output sent to cout is a superposition of the output of all processes.
% The order of the printed lines may vary.
%
% h =
[0.1]
% gid time
[
[2 3]
[6 3]
[2 8]
[6 8]
[2 13]
[6 13]
[2 18]
[6 18]
[2 23]
[6 23]
[2 28]
[6 28]
[2 33]
[6 33]
[2 38]
[6 38]
]
rolld assert_or_die