# If you want to disable CPU/Memory affinity on Linux.
NO_AFFINITY = 1
+# if you are compiling for Linux and you have more than 16 numa nodes or more than 256 cpus
+# BIGNUMA = 1
+
# Don't use AVX kernel on Sandy Bridge. It is compatible with old compilers
# and OS. However, the performance is low.
# NO_AVX = 1
#include <unistd.h>
#include <string.h>
+#if defined(BIGNUMA)
+// max number of nodes as defined in numa.h
+// max cpus as defined in sched.h
+#define MAX_NODES 128
+#define MAX_CPUS CPU_SETSIZE
+#else
#define MAX_NODES 16
#define MAX_CPUS 256
+#endif
+
#define NCPUBITS (8*sizeof(unsigned long))
#define MAX_BITMASK_LEN (MAX_CPUS/NCPUBITS)
#define CPUELT(cpu) ((cpu) / NCPUBITS)
return shmctl(id, IPC_STAT, &ds);
}
+
static void open_shmem(void) {
int try = 0;
do {
+#if defined(BIGNUMA)
+ // raised to 32768, enough for 128 nodes and 1024 cups
+ shmid = shmget(SH_MAGIC, 32768, 0666);
+#else
shmid = shmget(SH_MAGIC, 4096, 0666);
+#endif
if (shmid == -1) {
+#if defined(BIGNUMA)
+ shmid = shmget(SH_MAGIC, 32768, IPC_CREAT | 0666);
+#else
shmid = shmget(SH_MAGIC, 4096, IPC_CREAT | 0666);
+#endif
}
try ++;