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)
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();
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

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>
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);
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

0 commit comments

Comments
 (0)