Orient_tut: 3-way decomposition

This example is based on the Orient_tut example which is discussed in the Book of Genesis. Please read that section of the book for background information. This is not intented to be a realistic model of visual cortex processing but rather a demonstation of how parallel Genesis can be used.

In this decomposition we simply assign the retinal cells to one node, the horizontally-selective V1 cells to a second node, and the vertically-selective V1 cells to a third node. The following diagram illustrates this division:

Each retinal cell makes connections onto a small subset of neurons in the horizontally-selective V1 population and the vertically-selective V1 population. To set up this network we first create the neurons on each of the nodes, then do a barrier to make sure each node has finished creating its elements, then connect up the neurons using the rvolumeconnect command. After doing another barrier, we display the neurons and run the simulation.

The limitation on parallelism in this decomposition is that no matter what size we make the retinal and V1 populations, we can still only run using 3 nodes.

The top level pGenesis script file for this example is partially included here:

    // START UP
    paron -parallel -silent 0 -nodes 3 -output o.out \
           -executable pgenesis
    i_am_retina = {mynode} == 0
    i_am_V1 = {mynode} == 1 || {mynode} == 2
    if ({mynode} == 1)
           dir = "horiz"
    elif ({mynode} == 2)
           dir = "vert"
    end

    // CREATE ELEMENTS ON EACH NODE
    if (i_am_retina)
           create_retina
           setup_retinal_input
    elif (i_am_V1)
           create_V1
    end

    // CONNECT UP ELEMENTS
    barrier        // wait for all elements to be created
                   //   on every node before trying to
                   //   connect them up
    if (i_am_retina)
           connect_retina
    end

    // SET UP NETWORK DISPLAY
    if (display)
           if (i_am_retina)
                   display_retina
           elif (i_am_V1)
                   display_V1
           end
    end

    // SET UP NETWORK OUTPUT
    if (output)
           if (i_am_V1)
                   output_V1
           end
    end

    // START SIMULATION
    reset
    if (i_am_retina)
           if (batch)
                   echo Simulation started at {getdate}
                   autosweep horizontal
                   echo Simulation finished at {getdate}
                   exit@all
           end
    else
           // wait for commands from the retinal node's
           //   control panel
           barrier 7 100000
    end

To run this example on your workstation:

1. Ensure that your PGENESIS environment is set up.
2. "`cd`" to the `Scripts/orient1` subdirectory of the directory in which PGENESIS is installed on your machine.
3. Run this example by typing "`pgenesis demo.g`". This will display each neural population in a different window. Use the control panel to run the simulation, by clicking on either the "sweep_horiz" or "sweep_vert" buttons.
4. When you are finished, click on the "quit" button and all processes should exit.