-
Notifications
You must be signed in to change notification settings - Fork 0
/
config.cmake.default
62 lines (55 loc) · 2.94 KB
/
config.cmake.default
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
########################################################################
# yase - config.cmake #
# Edit build options here. #
########################################################################
# Build type.
# - "Debug" produces unoptimized binaries with debugging symbols.
# - "Release" produces optimized binaries without debugging symbols.
# - "RelWithDebInfo" produces optimized binaries w/ debugging symbols.
# - "MinSizeRel" produces binaries optimized for size.
set(CMAKE_BUILD_TYPE Release)
# Enable this to tune to your native CPU, but not to generate assembly
# specific to it. If you select this, do not select the next option.
# Disabled by default (as the next option is enabled by default).
# NOTE: this flag may not work on compilers other than GCC and Clang.
#add_definitions("-mtune=native")
# Enable this to generate code specific to your native CPU. If you
# select this, do not select the above option. Enabled by default.
# NOTE: this flag may not work on compilers other than GCC and Clang.
add_definitions("-march=native")
# Segment sizes used for marking multiples of small sieving primes and
# large sieving primes, respectively. The large segment size *must* be a
# multiple of the small segment size, and both *should* be powers of
# two. (The program logic must divide by these values frequently. When
# they are powers of two, the compiler can turn these divisions into
# fast bitwise operations; if not, it must emit slow integer division
# instructions. If you don't set these to powers of two, you will
# observe degraded performance.)
#
# For best performance, the small segment size should be the size of the
# CPU's L1 data cache (per core). The large segment size should be based
# on the size of the CPU's L2 cache (per core), but using the full L2
# cache might be slower than using only some of it. Trying half the L2
# cache size (to keep the large segment size a multiple of two) is a good
# starting point.
#
# These defaults assume a 32 KiB L1d cache and a 256 KiB L2 cache, which
# are pretty common.
set(SMALL_SEGMENT_BYTES 32768)
set(LARGE_SEGMENT_BYTES 131072)
# Number of primes to pre-sieve. You can pick anything from 0 to 6,
# inclusive.
# - 4: requires ~0.3 MB
# - 5: default and recommended, requires ~7 MB
# - 6: requires ~206 MB
set(PRESIEVE_PRIMES 5)
# Primes smaller than the "small threshold" will be sieved with a highly
# optimized sieving loop that is much more efficient when marking
# multiples of sieving primes with many multiples per segment. To find
# this threshold, the value of SMALL_SEGMENT_BYTES is multipled by this
# factor. The default is 2, which should work well; however, you may
# want to experiment to tune this for your own CPU.
set(SMALL_THRESHOLD_FACTOR 2)
# When put into storage lists, large sieving primes are stored in
# "buckets" that contain many primes each. This controls how many.
set(BUCKET_PRIMES 1024)