Skip to content

Commit d546530

Browse files
committed
libconcurrent/config.h moved to libconcurrent/includes/ directory.
1 parent 571677a commit d546530

File tree

3 files changed

+8
-8
lines changed

3 files changed

+8
-8
lines changed

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,18 +61,18 @@ The following table presents a summary of the concurrent data-structures offered
6161
- Building requires the following development packages:
6262
- `libatomic`
6363
- `libnuma`
64-
- `libpapi` in case that the `SYNCH_TRACK_CPU_COUNTERS` flag is enabled in `libconcurrent/config.h`.
64+
- `libpapi` in case that the `SYNCH_TRACK_CPU_COUNTERS` flag is enabled in `libconcurrent/includes/config.h`.
6565
- For building the documentation (i.e. man-pages), `doxygen` is required.
6666

6767

6868
# Configuring, compiling and installing the framework
6969

70-
In the `libconcurrent/config.h` file, the user can configure some basic options for the framework, such as:
70+
In the `libconcurrent/includes/config.h` file, the user can configure some basic options for the framework, such as:
7171
- Enable/disable debug mode.
7272
- Support for Numa machines.
7373
- Enable performance statistics, etc.
7474

75-
The provided default configuration should work well in many cases. However, the default configuration may not provide the best performance. For getting the best performance, modifying the `libconcurrent/config.h` may be needed (see more on [Performance/Optimizations](#performanceoptimizations) Section).
75+
The provided default configuration should work well in many cases. However, the default configuration may not provide the best performance. For getting the best performance, modifying the `libconcurrent/includes/config.h` may be needed (see more on [Performance/Optimizations](#performanceoptimizations) Section).
7676

7777
In case that you want to compile the library that provides all the implemented concurrent algorithms just execute `make` in the root directory of the source files. This step is necessary in case that you want to run benchmarks. However, some extra make options are provided in case the user wants to compile the framework with other than system's default compiler, clean the binary files, etc. The following table provides the list with all the available make options.
7878

@@ -127,10 +127,10 @@ The framework provides another simple fast smoke test: `./run_all.sh`. This will
127127

128128
# Performance/Optimizations
129129

130-
Getting the best performance from the provided benchmarks is not always an easy task. For getting the best performance, some modifications in Makefiles may be needed (compiler flags, etc.). Important parameters for the benchmarks and/or library are placed in the `libconcurrent/config.h` file. A useful guide to consider in order to get better performance in a modern multiprocessor follows.
130+
Getting the best performance from the provided benchmarks is not always an easy task. For getting the best performance, some modifications in Makefiles may be needed (compiler flags, etc.). Important parameters for the benchmarks and/or library are placed in the `libconcurrent/includes/config.h` file. A useful guide to consider in order to get better performance in a modern multiprocessor follows.
131131

132-
- In case that the target machine is a NUMA machine make sure `SYNCH_NUMA_SUPPORT` is enabled in `libconcurrent/config.h`. Usually, when this option is enabled, it gives much better performance in NUMA machines. However, in some older machines this option may induce performance overheads.
133-
- Check the performance impact of the `SYNCH_COMPACT_ALLOCATION` option in `libconcurrent/config.h`. In modern AMD multiprocessors (i.e., equipped with EPYC processors) this option gives tremendous performance boost. In contrast to AMD processors, this option introduces serious performance overheads in Intel Xeon processors. Thus, a careful experimental analysis is needed in order to show the possible benefits of this option.
132+
- In case that the target machine is a NUMA machine make sure `SYNCH_NUMA_SUPPORT` is enabled in `libconcurrent/includes/config.h`. Usually, when this option is enabled, it gives much better performance in NUMA machines. However, in some older machines this option may induce performance overheads.
133+
- Check the performance impact of the `SYNCH_COMPACT_ALLOCATION` option in `libconcurrent/includes/config.h`. In modern AMD multiprocessors (i.e., equipped with EPYC processors) this option gives tremendous performance boost. In contrast to AMD processors, this option introduces serious performance overheads in Intel Xeon processors. Thus, a careful experimental analysis is needed in order to show the possible benefits of this option.
134134
- Check if you have selected the optimal thread placement policy (see more in [Thread placement policies](#thread-placement-policies)).
135135
- Check the cache line size (`CACHE_LINE_SIZE` and `S_CACHE_LINE` options in includes/system.h). These options greatly affect the performance in all modern processors. Most Intel machines behave better with `CACHE_LINE_SIZE` equal or greater than `128`, while most modern AMD machine achieve better performance with a value equal to `64`. Notice that `CACHE_LINE_SIZE` and `S_CACHE_LINE` depend on the `SYNCH_COMPACT_ALLOCATION` option (see `includes/system.h`).
136136
- Use backoff if it is available. Many of the provided algorithms could use backoff in order to provide better performance (e.g., sim, LF-Stack, MS-Queue, SimQueue, SimStack, etc.). In this case, it is of crucial importance to use `-b` (and in some cases `-bl` arguments) in order to get the best performance.
@@ -168,7 +168,7 @@ The Synch framework provides a pool mechanism (see `includes/pool.h`) that effic
168168

169169
Note that de-allocating and thus recycling memory in lock-free and wait-free objects is not an easy task. Since v2.4.0, SimStack supports memory reclamation using the functionality of `pool.h` and a technique that is similar to that presented by Blelloch and Weiin in [13]. Notice that the MS-Queue [7], LCRQ [11,12] queue implementations and the LF-Stack [8] stack implementation support memory reclamation through hazard-pointers. However, the current version of the Synch framework does not provide any implementation of hazard-pointers. In case that a user wants to use memory reclamation in these objects, a custom hazard-pointers implementation should be integrated in the environment.
170170

171-
By default, memory-reclamation is enabled. In case that there is need to disable memory reclamation, the `SYNCH_POOL_NODE_RECYCLING_DISABLE` option should be enabled in `config.h`.
171+
By default, memory-reclamation is enabled. In case that there is need to disable memory reclamation, the `SYNCH_POOL_NODE_RECYCLING_DISABLE` option should be enabled in `libconcurrent/includes/config.h`.
172172

173173
The following table shows the memory reclamation characteristics of the provided stack and queues implementations.
174174

File renamed without changes.

libconcurrent/libdeps.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ DEFINITIONS=(SYNCH_NUMA_SUPPORT SYNCH_TRACK_CPU_COUNTERS);
66
LIBS=("-lnuma" "-lpapi");
77

88
for i in ${!DEFINITIONS[@]}; do
9-
if grep -xq "\s*#define\s\+${DEFINITIONS[i]}\(\s*\|\s.*\)" libconcurrent/config.h
9+
if grep -xq "\s*#define\s\+${DEFINITIONS[i]}\(\s*\|\s.*\)" libconcurrent/includes/config.h
1010
then
1111
LDLIBS="$LDLIBS ${LIBS[i]}";
1212
fi

0 commit comments

Comments
 (0)