![]() |
NEURON
|
#include "multicore.h"
#include <nrnmpi.h>
#include "hoclist.h"
#include "section.h"
#include "nmodlmutex.h"
#include <cstdint>
#include <condition_variable>
#include <mutex>
#include <thread>
#include <utility>
#include <variant>
#include <vector>
#include <iostream>
#include <queue>
Go to the source code of this file.
Namespaces | |
nrn | |
Macros | |
#define | CACHELINE_ALLOC(name, type, size) name = (type*) nrn_cacheline_alloc((void**) &name, size * sizeof(type)) |
#define | CACHELINE_CALLOC(name, type, size) name = (type*) nrn_cacheline_calloc((void**) &name, size, sizeof(type)) |
Functions | |
void | spDestroy (char *) |
void | nrn_mk_table_check () |
static void * | nulljob (NrnThread *nt) |
void | nrn_thread_error (const char *s) |
void | nrn_threads_create (int n, bool parallel) |
void | nrn_fast_imem_alloc () |
void | nrn_threads_free () |
static void | thread_memblist_setup (NrnThread *_nt, int *mlcnt, void **vmap) |
void | nrn_thread_memblist_setup () |
void | reorder_secorder () |
void | nrn_thread_table_check (neuron::model_sorted_token const &sorted_token) |
void | nrn_hoc_lock () |
void | nrn_hoc_unlock () |
void | nrn_multithread_job (worker_job_t job) |
void | nrn_multithread_job (neuron::model_sorted_token const &cache_token, worker_job_with_token_t job) |
void | nrn_onethread_job (int i, void *(*job)(NrnThread *)) |
void | nrn_wait_for_threads () |
void | nrn_thread_partition (int it, Object *sl) |
Object ** | nrn_get_thread_partition (int it) |
int | nrn_user_partition () |
void | nrn_use_busywait (int b) |
int | nrn_allow_busywait (int b) |
int | nrn_how_many_processors () |
std::size_t | nof_worker_threads () |
Variables | |
int | nrn_nthread |
NrnThread * | nrn_threads |
void(* | nrn_mk_transfer_thread_data_ )() |
static int | busywait_ |
static int | busywait_main_ |
void(* | nrn_multisplit_setup_ )() |
int | v_structure_change |
int | diam_changed |
Section ** | secorder |
int | section_count |
static std::vector< std::pair< int, NrnThreadMembList * > > | table_check_ |
static int | allow_busywait_ |
int | nrn_inthread_ |
std::unique_ptr< std::mutex > | nrn::nmodlmutex |
#define CACHELINE_ALLOC | ( | name, | |
type, | |||
size | |||
) | name = (type*) nrn_cacheline_alloc((void**) &name, size * sizeof(type)) |
Definition at line 52 of file multicore.cpp.
#define CACHELINE_CALLOC | ( | name, | |
type, | |||
size | |||
) | name = (type*) nrn_cacheline_calloc((void**) &name, size, sizeof(type)) |
Definition at line 54 of file multicore.cpp.
std::size_t nof_worker_threads | ( | ) |
Definition at line 1048 of file multicore.cpp.
int nrn_allow_busywait | ( | int | b | ) |
Definition at line 1032 of file multicore.cpp.
void nrn_fast_imem_alloc | ( | ) |
Definition at line 377 of file multicore.cpp.
Object** nrn_get_thread_partition | ( | int | it | ) |
Definition at line 921 of file multicore.cpp.
int nrn_how_many_processors | ( | ) |
Definition at line 1038 of file multicore.cpp.
void nrn_mk_table_check | ( | void | ) |
Definition at line 781 of file multicore.cpp.
void nrn_multithread_job | ( | neuron::model_sorted_token const & | cache_token, |
worker_job_with_token_t | job | ||
) |
Definition at line 855 of file multicore.cpp.
void nrn_multithread_job | ( | worker_job_t | job | ) |
Definition at line 836 of file multicore.cpp.
void nrn_onethread_job | ( | int | i, |
void *(*)(NrnThread *) | job | ||
) |
Definition at line 875 of file multicore.cpp.
void nrn_thread_error | ( | const char * | s | ) |
Definition at line 297 of file multicore.cpp.
void nrn_thread_memblist_setup | ( | ) |
Definition at line 629 of file multicore.cpp.
void nrn_thread_partition | ( | int | it, |
Object * | sl | ||
) |
Definition at line 899 of file multicore.cpp.
void nrn_thread_table_check | ( | neuron::model_sorted_token const & | sorted_token | ) |
Definition at line 807 of file multicore.cpp.
void nrn_threads_create | ( | int | n, |
bool | parallel | ||
) |
Definition at line 303 of file multicore.cpp.
void nrn_threads_free | ( | void | ) |
Definition at line 386 of file multicore.cpp.
void nrn_use_busywait | ( | int | b | ) |
Definition at line 1009 of file multicore.cpp.
int nrn_user_partition | ( | ) |
Definition at line 940 of file multicore.cpp.
void nrn_wait_for_threads | ( | ) |
Definition at line 891 of file multicore.cpp.
|
static |
Definition at line 75 of file multicore.cpp.
void reorder_secorder | ( | ) |
Definition at line 661 of file multicore.cpp.
void spDestroy | ( | char * | eMatrix | ) |
Definition at line 533 of file spalloc.cpp.
|
static |
Definition at line 457 of file multicore.cpp.
|
static |
Definition at line 73 of file multicore.cpp.
|
static |
Definition at line 62 of file multicore.cpp.
|
static |
Definition at line 63 of file multicore.cpp.
|
extern |
Definition at line 55 of file cabcode.cpp.
int nrn_inthread_ |
Definition at line 79 of file multicore.cpp.
void(* nrn_mk_transfer_thread_data_) () | ( | ) |
Definition at line 60 of file multicore.cpp.
|
extern |
Definition at line 50 of file treeset.cpp.
int nrn_nthread |
Definition at line 57 of file multicore.cpp.
NrnThread * nrn_threads |
Definition at line 58 of file multicore.cpp.
|
static |
Definition at line 72 of file multicore.cpp.
|
extern |
Definition at line 65 of file treeset.cpp.