Building under windows is easy, just follow the instructions given by T.N. Carnevale and M. Hines:
http://www.neuron.yale.edu/neuron/insta ... mswin.html
and have a good look at topic
https://www.neuron.yale.edu/phpBB2/viewtopic.php?p=433
before you install/update cygwin.
Profiling Neuron under Windows:
To see if you have the right software and settings available in Cygwin start with profiling the hello world application.
Step 0:
Create a file hello.cpp, containing:
Code: Select all
// Hello World Application
#include <iostream>
int main()
{
std::cout << "Hello, world!" << std::endl;
return 0;
}
Compile with:
Code: Select all
g++ -g -pg hello.cpp -o hello
The -g flag adds debugging information to the code allowing the profiling software to produce human readable input, the -pg flag adds the profiling code itself.
Run the program:
Code: Select all
./hello
Running gprof now shows you the profiling info:
Code: Select all
gprof -b hello.exe
The profiling provided with the -pg flag is incompatible with dynamical loading of libraries. This is why normal ways of working with mod files cannot be used. Therefore, to get access to the mechanism in your own modfiles, you need to include these files in the build and it is not enough to just specify the right compiler flags.
Step 1: Copy your mod files to src/nrnoc in the neuron source tree
Step 2: In the src/nrnoc directory modify Makefile.am to refer to your mod-files. Copy the pattern found for hh.c and hh.mod.
Step 3: In the src/nrnoc directory in file cabvars.h modify the 'extern' and
'Pfri mechanism' sections to refer to your mechanism. Copy the pattern found for the hh mechanism.
Step 4: Run the script build.sh from the top level of the source tree
Step 5: Save and run the following script.
Code: Select all
#!/bin/sh
export NRNS=$PWD
export NPROF=$PWD
# The -g flag adds debugging information to the code which is needed by the profiling program, the -pg flag adds the profiling code.
export CFLAGS="-g -pg"
export CXXFLAGS="-g -pg"
export linux_nrnmech=no
# Link statically (--disable-shared)
$NRNS/configure --disable-shared --prefix=$NPROF --srcdir=$NRNS
make
make install
#Play sound to indicate end of script
echo -e '\7'
Step 7: Run nrniv.exe from a cygwin rxvt shell with your hoc-code, but you might want to try the demo first:
- a) cd to nrn/bin and run nrniv
b) load_file("nrngui.hoc") gives you the menu
c) Change the working directory using the filemenu to where your model is. Lets assume you want to run demo.hoc from the demo directory.
d) Load the hoc code (singhh.hoc this hoc-file is only using standard mechanisms, remember that the dynamic loading fails)
e) Run the hoc-code (press Init and Run)
f) quit (Select quit from file menu)
gprof's syntax: gprof options [executable-file [profile-data-files...]] [> outfile]
Code: Select all
gprof -b nrniv.exe ../demo/gmon.out > myprofile
Acknowledgement: Thanks to Michael Hines for answering my questions about the build process.