Skip to content
This repository was archived by the owner on Mar 20, 2023. It is now read-only.

Commit 82d90eb

Browse files
Omar Awilepramodk
authored andcommitted
Coreneuron source code reorganization (#229)
* Initial version of coreneuron source code reorganization - reorganized most source files into topical subdirs as discussed with development team - fixed up source code includes to reflect changes - fixed up CMake files to reflect changes - updated nmodl submodules to reflect changes - Rearranged mechanism related code into subfolders `mechanism` and `mechanism/mech` to ensure that the files later used for mod generation are kept seperately. This corrects an issue when building coreneuron and simplifies the cmake files * Cleaned up issues in header includes - removed unnecessary headers - fixed relative header includes - fixed C header includes to new style (e.g. `<string.h>` --> `<cstring>`) * Updated nmodl and mod2c and fixed issue when building with nmodl * Update many header names and remove nrnoc_decl.h * Updated mod2c/nmodl to fix stdlib header includes
1 parent 8f22bb2 commit 82d90eb

File tree

137 files changed

+611
-577
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

137 files changed

+611
-577
lines changed

CMake/NmodlHelper.cmake

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,18 @@ macro(nmodl_to_cpp_target)
8989

9090
list(APPEND NMODL_${mod2c_KEY}_MODS "${mod2c_modname_}")
9191
if(CORENRN_ENABLE_NMODL AND NMODL_FOUND)
92+
string(FIND "${NMODL_EXTRA_FLAGS_LIST}" "passes" pos)
93+
if(pos EQUAL -1)
94+
set(NMODL_FLAGS "passes;--inline;${NMODL_EXTRA_FLAGS_LIST}")
95+
else()
96+
string(REPLACE "passes" "passes;--inline" NMODL_FLAGS "${NMODL_EXTRA_FLAGS_LIST}")
97+
endif()
9298
add_custom_command(OUTPUT ${mod2c_output_} ${mod2c_wrapper_output_}
9399
DEPENDS ${mod2c_MODFILE} ${CORENRN_NMODL_BINARY}
94100
COMMAND ${CMAKE_COMMAND} -E copy "${mod2c_source_}"
95101
"${CMAKE_CURRENT_BINARY_DIR}"
96102
COMMAND ${CORENRN_NMODL_COMMAND} "${mod2c_modname_}" -o "${CMAKE_CURRENT_BINARY_DIR}"
97-
host ${nmodl_modearg} passes --inline ${NMODL_EXTRA_FLAGS_LIST}
103+
host ${nmodl_modearg} ${NMODL_FLAGS}
98104
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
99105
else()
100106
add_custom_command(OUTPUT ${mod2c_output_}

CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,6 @@ endif()
215215
# Add main directories
216216
# =============================================================================
217217
add_subdirectory(coreneuron)
218-
add_subdirectory(apps)
219218
add_subdirectory(extra)
220219

221220
if(CORENRN_ENABLE_UNIT_TESTS)

apps/CMakeLists.txt

Lines changed: 0 additions & 23 deletions
This file was deleted.

coreneuron/CMakeLists.txt

Lines changed: 42 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,28 +18,33 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
1818
# =============================================================================
1919
file(GLOB_RECURSE CORENEURON_HEADER_FILES "*.h*")
2020
file(GLOB_RECURSE CORENEURON_TEMPLATE_FILES "*.ipp")
21-
file(GLOB_RECURSE CORENEURON_CODE_FILES
22-
"nrniv/*.c*"
23-
"nrnmpi/*.c*"
24-
"nrnoc/*.c*"
25-
"nrnomp/*.c*"
26-
"utils/*.c*")
21+
file(GLOB CORENEURON_CODE_FILES
22+
"apps/main1.cpp"
23+
"gpu/*.cpp"
24+
"io/*.cpp"
25+
"mechanism/*.cpp"
26+
"mpi/*.cpp"
27+
"network/*.cpp"
28+
"permute/*.cpp"
29+
"sim/*.cpp")
30+
file(GLOB_RECURSE CORENEURON_UTILS_FILES "utils/*.c*")
31+
list(APPEND CORENEURON_CODE_FILES ${CORENEURON_UTILS_FILES})
2732
file(GLOB_RECURSE CORENEURON_CUDA_FILES "*.cu")
28-
file(GLOB_RECURSE SCOPMATH_CODE_FILES "scopmath_core/*.c*")
33+
file(GLOB SCOPMATH_CODE_FILES "sim/scopmath/*.cpp")
2934

30-
set(DIMPLIC_CODE_FILE "mech/dimplic.cpp")
31-
set(ENGINEMECH_CODE_FILE "mech/enginemech.cpp")
35+
set(DIMPLIC_CODE_FILE "mechanism/mech/dimplic.cpp")
36+
set(ENGINEMECH_CODE_FILE "mechanism/mech/enginemech.cpp")
3237

3338
# for external mod files we need to generate modl_ref function in mod_func.c
34-
set(MODFUNC_PERL_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/mech/mod_func.c.pl")
39+
set(MODFUNC_PERL_SCRIPT "mechanism/mech/mod_func.c.pl")
3540

3641
# as openacc limits passing function pointers as arguments, mod2c translated files depend on a
3742
# _kinderiv.h file that is constructed by kinderiv.py
3843
set(KINDERIV_PYTHON_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/kinderiv.py")
3944
set(KINDERIV_HEADER_FILE "${CMAKE_CURRENT_BINARY_DIR}/_kinderiv.h")
4045

4146
set(NMODL_UNITS_FILE "${CMAKE_BINARY_DIR}/share/nrnunits.lib")
42-
set(INBUILT_MOD_PATH "${CMAKE_CURRENT_SOURCE_DIR}/mech/modfile")
47+
set(INBUILT_MOD_PATH "mechanism/mech/modfile")
4348
set(INBUILT_MOD_FILES expsyn.mod exp2syn.mod hh.mod netstim.mod passive.mod pattern.mod stim.mod)
4449

4550
# Has helper macro for generating cpp file from mod2c
@@ -85,8 +90,8 @@ if(CORENRN_ENABLE_GPU)
8590
${CMAKE_CURRENT_BINARY_DIR}/netstim_inhpoisson.cpp
8691
${CMAKE_CURRENT_BINARY_DIR}/pattern.cpp
8792
${CMAKE_CURRENT_SOURCE_DIR}/utils/randoms/nrnran123.cpp
88-
${CMAKE_CURRENT_SOURCE_DIR}/nrniv/nrn_setup.cpp
89-
${CMAKE_CURRENT_SOURCE_DIR}/nrniv/global_vars.cpp)
93+
${CMAKE_CURRENT_SOURCE_DIR}/io/nrn_setup.cpp
94+
${CMAKE_CURRENT_SOURCE_DIR}/io/global_vars.cpp)
9095

9196
set_source_files_properties(${DIMPLIC_CODE_FILE}
9297
${NMODL_INBUILT_MOD_OUTPUTS}
@@ -193,6 +198,20 @@ add_custom_command(TARGET coreneuron
193198
COMMENT "Running nrnivmodl-core with halfgap.mod")
194199
add_dependencies(coreneuron scopmath)
195200

201+
# =============================================================================
202+
# create nrnivmodl-core
203+
# =============================================================================
204+
# coreneuron executable
205+
include_directories(${CORENEURON_PROJECT_SOURCE_DIR})
206+
add_executable(nrniv-core "apps/coreneuron.cpp")
207+
target_link_libraries(nrniv-core
208+
corenrnmech
209+
${MPI_C_LIBRARIES}
210+
${MPI_CXX_LIBRARIES}
211+
${reportinglib_LIBRARY}
212+
${sonatareport_LIBRARY})
213+
set_target_properties(nrniv-core PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
214+
196215
# =============================================================================
197216
# Extract link definitions to be used with nrnivmodl-core
198217
# =============================================================================
@@ -212,13 +231,17 @@ configure_file(${ENGINEMECH_CODE_FILE} ${CMAKE_BINARY_DIR}/share/coreneuron/engi
212231

213232
configure_file("engine.h" ${CMAKE_BINARY_DIR}/include/coreneuron/engine.h)
214233
configure_file("enginemech.h" ${CMAKE_BINARY_DIR}/include/coreneuron/enginemech.h)
215-
configure_file("nrniv/profiler_interface.h"
234+
configure_file("utils/profile/profiler_interface.h"
216235
${CMAKE_BINARY_DIR}/include/coreneuron/nrniv/profiler_interface.h)
217-
configure_file("nrnoc/nrnoc_ml.ispc" ${CMAKE_BINARY_DIR}/include/coreneuron/nrnoc/nrnoc_ml.ispc)
236+
configure_file("mechanism/nrnoc_ml.ispc" ${CMAKE_BINARY_DIR}/include/coreneuron/mechanism/nrnoc_ml.ispc)
218237

219238
# TODO : this doesn't get re-copied if source changes
220239
file(COPY "utils/randoms" DESTINATION ${CMAKE_BINARY_DIR}/include/coreneuron/utils)
221240

241+
# main program required for building special-core
242+
file(COPY apps/coreneuron.cpp DESTINATION ${CMAKE_BINARY_DIR}/share/coreneuron)
243+
244+
222245
# =============================================================================
223246
# Install main targets
224247
# =============================================================================
@@ -253,3 +276,7 @@ install(PROGRAMS ${CORENRN_NMODL_BINARY} DESTINATION bin)
253276
if(NOT CORENRN_ENABLE_NMODL)
254277
install(FILES ${NMODL_UNITS_FILE} DESTINATION share/mod2c)
255278
endif()
279+
280+
# install nrniv-core app
281+
install(TARGETS nrniv-core DESTINATION bin)
282+
install(FILES apps/coreneuron.cpp DESTINATION share/coreneuron)

apps/coreneuron.cpp renamed to coreneuron/apps/coreneuron.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ THE POSSIBILITY OF SUCH DAMAGE.
2727
*/
2828

2929
#include <coreneuron/enginemech.h>
30-
#include "coreneuron/nrniv/profiler_interface.h"
30+
#include "coreneuron/utils/profile/profiler_interface.h"
3131

3232
int main(int argc, char** argv) {
3333
coreneuron::Instrumentor::init_profile();

coreneuron/nrniv/main1.cpp renamed to coreneuron/apps/main1.cpp

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -32,33 +32,33 @@ THE POSSIBILITY OF SUCH DAMAGE.
3232
* @brief File containing main driver routine for CoreNeuron
3333
*/
3434

35+
#include <cstring>
36+
#include <climits>
3537
#include <vector>
36-
#include <string.h>
38+
3739
#include "coreneuron/engine.h"
3840
#include "coreneuron/utils/randoms/nrnran123.h"
3941
#include "coreneuron/nrnconf.h"
40-
#include "coreneuron/nrnoc/fast_imem.h"
41-
#include "coreneuron/nrnoc/multicore.h"
42-
#include "coreneuron/nrnoc/nrnoc_decl.h"
43-
#include "coreneuron/nrnmpi/nrnmpi.h"
42+
#include "coreneuron/sim/fast_imem.hpp"
43+
#include "coreneuron/sim/multicore.hpp"
44+
#include "coreneuron/mpi/nrnmpi.h"
4445
#include "coreneuron/nrniv/nrniv_decl.h"
45-
#include "coreneuron/nrniv/nrnmutdec.h"
46-
#include "coreneuron/nrniv/output_spikes.h"
47-
#include "coreneuron/nrniv/nrn_checkpoint.h"
48-
#include "coreneuron/utils/endianness.h"
46+
#include "coreneuron/mechanism/register_mech.hpp"
47+
#include "coreneuron/io/output_spikes.hpp"
48+
#include "coreneuron/io/nrn_checkpoint.hpp"
4949
#include "coreneuron/utils/memory_utils.h"
50-
#include "coreneuron/nrniv/nrnoptarg.h"
50+
#include "coreneuron/io/nrnoptarg.hpp"
51+
#include "coreneuron/io/prcellstate.hpp"
52+
#include "coreneuron/utils/nrnmutdec.h"
5153
#include "coreneuron/utils/sdprintf.h"
52-
#include "coreneuron/nrniv/nrn_stats.h"
53-
#include "coreneuron/utils/reports/nrnreport.h"
54-
#include "coreneuron/nrniv/nrn_acc_manager.h"
55-
#include "coreneuron/nrniv/profiler_interface.h"
56-
#include "coreneuron/nrniv/partrans.h"
57-
#include "coreneuron/nrniv/multisend.h"
58-
#include "coreneuron/utils/file_utils.h"
59-
#include "coreneuron/nrniv/nrn2core_direct.h"
60-
#include <string.h>
61-
#include <climits>
54+
#include "coreneuron/utils/nrn_stats.h"
55+
#include "coreneuron/io/nrnreport.hpp"
56+
#include "coreneuron/gpu/nrn_acc_manager.hpp"
57+
#include "coreneuron/utils/profile/profiler_interface.h"
58+
#include "coreneuron/network/partrans.hpp"
59+
#include "coreneuron/network/multisend.hpp"
60+
#include "coreneuron/io/file_utils.hpp"
61+
#include "coreneuron/io/nrn2core_direct.h"
6262

6363
extern "C" {
6464
const char* corenrn_version() {

coreneuron/coreneuron.hpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,14 @@ THE POSSIBILITY OF SUCH DAMAGE.
4242
#include <array>
4343

4444
#include "coreneuron/utils/randoms/nrnran123.h" //Random Number Generator
45-
#include "coreneuron/scopmath_core/newton_struct.h" //Newton Struct
46-
#include "coreneuron/nrnoc/membdef.h" //static definitions
47-
#include "coreneuron/nrnoc/nrnoc_ml.h" //Memb_list and mechs info
45+
#include "coreneuron/sim/scopmath/newton_struct.h" //Newton Struct
46+
#include "coreneuron/membrane_definitions.h" //static definitions
47+
#include "coreneuron/mechanism/mechanism.hpp" //Memb_list and mechs info
4848

49-
#include "coreneuron/nrniv/memory.h" //Memory alignments and padding
49+
#include "coreneuron/utils/memory.h" //Memory alignments and padding
5050
#include "coreneuron/nrnconf.h"
51-
#include "coreneuron/nrnoc/multicore.h"
52-
#include "coreneuron/nrnoc/nrnoc_decl.h"
53-
#include "coreneuron/nrnoc/mech_mapping.hpp"
51+
#include "coreneuron/sim/multicore.hpp"
52+
#include "coreneuron/mechanism/mech_mapping.hpp"
5453

5554
namespace coreneuron {
5655

coreneuron/nrniv/nrn_acc_manager.cpp renamed to coreneuron/gpu/nrn_acc_manager.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
#include <queue>
22
#include <utility>
33

4-
#include "coreneuron/nrnoc/multicore.h"
5-
#include "coreneuron/nrniv/netcon.h"
6-
#include "coreneuron/nrniv/nrn_acc_manager.h"
4+
#include "coreneuron/sim/multicore.hpp"
5+
#include "coreneuron/network/netcon.hpp"
76
#include "coreneuron/nrniv/nrniv_decl.h"
8-
#include "coreneuron/nrniv/vrecitem.h"
9-
#include "coreneuron/nrniv/profiler_interface.h"
10-
#include "coreneuron/nrniv/cellorder.h"
11-
#include "coreneuron/nrniv/cuda_profile.h"
12-
#include "coreneuron/scopmath_core/newton_struct.h"
7+
#include "coreneuron/utils/vrecitem.h"
8+
#include "coreneuron/utils/profile/profiler_interface.h"
9+
#include "coreneuron/permute/cellorder.hpp"
10+
#include "coreneuron/utils/profile/cuda_profile.h"
11+
#include "coreneuron/sim/scopmath/newton_struct.h"
1312
#include "coreneuron/coreneuron.hpp"
13+
#include "coreneuron/utils/nrnoc_aux.hpp"
1414

1515
#ifdef _OPENACC
1616
#include <openacc.h>

coreneuron/nrniv/nrn_acc_manager.h renamed to coreneuron/gpu/nrn_acc_manager.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
#include <openacc.h>
66
#endif
77

8-
#include "coreneuron/nrnoc/multicore.h"
8+
#include "coreneuron/sim/multicore.hpp"
9+
910
namespace coreneuron {
1011
void setup_nrnthreads_on_device(NrnThread* threads, int nthreads);
1112
void update_nrnthreads_on_host(NrnThread* threads, int nthreads);

coreneuron/utils/file_utils.cpp renamed to coreneuron/io/file_utils.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
2626
THE POSSIBILITY OF SUCH DAMAGE.
2727
*/
2828

29-
#include <stdio.h>
30-
#include <string.h>
31-
#include <stdlib.h>
29+
#include <cstdio>
30+
#include <cstring>
31+
#include <cstdlib>
3232
#include <sys/stat.h>
3333
#include <errno.h>
3434

File renamed without changes.

coreneuron/nrniv/global_vars.cpp renamed to coreneuron/io/global_vars.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1-
#include <stdio.h>
2-
#include <string.h>
1+
#include <cstdio>
2+
#include <cstring>
33
#include <map>
44
#include <string>
55
#include <algorithm>
66

77
#include "coreneuron/utils/randoms/nrnran123.h"
88
#include "coreneuron/nrnconf.h"
9-
#include "coreneuron/nrniv/nrniv_decl.h"
10-
#include "coreneuron/nrnoc/membfunc.hpp"
11-
#include "coreneuron/nrniv/nrn_assert.h"
12-
#include "coreneuron/nrniv/nrn2core_direct.h"
9+
#include "coreneuron/mechanism/membfunc.hpp"
10+
#include "coreneuron/utils/nrn_assert.h"
11+
#include "coreneuron/io/nrn2core_direct.h"
1312

1413
void* (*nrn2core_get_global_dbl_item_)(void*, const char*& name, int& size, double*& val);
1514
int (*nrn2core_get_global_int_item_)(const char* name);

coreneuron/nrniv/mk_mech.cpp renamed to coreneuron/io/mk_mech.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,28 +26,32 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
2626
THE POSSIBILITY OF SUCH DAMAGE.
2727
*/
2828

29-
#include <string.h>
29+
#include <cstring>
3030
#include <map>
31-
#include <string>
3231
#include <iostream>
3332
#include <fstream>
3433
#include <sstream>
34+
3535
#include "coreneuron/nrnconf.h"
36-
#include "coreneuron/nrnoc/multicore.h"
37-
#include "coreneuron/nrnoc/membdef.h"
38-
#include "coreneuron/nrnoc/nrnoc_decl.h"
36+
#include "coreneuron/sim/multicore.hpp"
37+
#include "coreneuron/membrane_definitions.h"
38+
#include "coreneuron/mechanism/register_mech.hpp"
3939
#include "coreneuron/nrniv/nrniv_decl.h"
40-
#include "coreneuron/nrniv/nrn_assert.h"
40+
#include "coreneuron/utils/nrn_assert.h"
4141
#include "coreneuron/utils/sdprintf.h"
42-
#include "coreneuron/mech/cfile/cabvars.h"
43-
#include "coreneuron/nrniv/nrn2core_direct.h"
42+
#include "coreneuron/mechanism/mech/cfile/cabvars.h"
43+
#include "coreneuron/io/nrn2core_direct.h"
4444
#include "coreneuron/coreneuron.hpp"
45+
#include "coreneuron/mechanism//eion.hpp"
4546

4647
static char banner[] = "Duke, Yale, and the BlueBrain Project -- Copyright 1984-2019";
4748

4849
namespace coreneuron {
4950
int nrn_nobanner_;
5051

52+
// NB: this should go away
53+
extern const char* nrn_version(int);
54+
5155
int nrn_need_byteswap;
5256
// following copied (except for nrn_need_byteswap line) from NEURON ivocvect.cpp
5357
#define BYTEHEADER \
File renamed without changes.

coreneuron/nrniv/nrn_checkpoint.cpp renamed to coreneuron/io/nrn_checkpoint.cpp

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,23 +25,24 @@ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2525
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
2626
THE POSSIBILITY OF SUCH DAMAGE.
2727
*/
28-
#include "coreneuron/nrnoc/multicore.h"
29-
#include "coreneuron/nrniv/nrniv_decl.h"
30-
#include "coreneuron/nrnoc/nrnoc_decl.h"
31-
#include "coreneuron/nrniv/nrn_filehandler.h"
32-
#include "coreneuron/nrniv/nrn_checkpoint.h"
33-
#include "coreneuron/nrniv/netcvode.h"
34-
#include "coreneuron/nrniv/vrecitem.h"
35-
#include "coreneuron/mech/mod2c_core_thread.h"
36-
#include "coreneuron/utils/file_utils.h"
37-
#include "coreneuron/nrniv/node_permute.h"
38-
#include "coreneuron/coreneuron.hpp"
39-
4028
#include <iostream>
41-
#include <fstream>
4229
#include <sstream>
4330
#include <cassert>
44-
#include <stdio.h>
31+
32+
#include "coreneuron/sim/multicore.hpp"
33+
#include "coreneuron/nrniv/nrniv_decl.h"
34+
#include "coreneuron/io/nrn_filehandler.hpp"
35+
#include "coreneuron/io/nrn_checkpoint.hpp"
36+
#include "coreneuron/io/nrn_setup.hpp"
37+
#include "coreneuron/network/netcvode.hpp"
38+
#include "coreneuron/network/netpar.hpp"
39+
#include "coreneuron/utils/vrecitem.h"
40+
#include "coreneuron/mechanism/mech/mod2c_core_thread.hpp"
41+
#include "coreneuron/io/file_utils.hpp"
42+
#include "coreneuron/permute/node_permute.h"
43+
#include "coreneuron/coreneuron.hpp"
44+
#include "coreneuron/utils/nrnoc_aux.hpp"
45+
4546
namespace coreneuron {
4647
bool nrn_checkpoint_arg_exists;
4748
int _nrn_skip_initmodel;
File renamed without changes.

0 commit comments

Comments
 (0)