mirror of
https://github.com/JayDDee/cpuminer-opt.git
synced 2025-09-17 23:44:27 +00:00
v25.2
This commit is contained in:
58
Makefile.am
58
Makefile.am
@@ -1,31 +1,35 @@
|
|||||||
|
|
||||||
|
if HAVE_APPLE
|
||||||
|
# MacOS uses Homebrew to install needed packages but they aren't linked for
|
||||||
|
# the jansson test in configure. Ignore the failed test & link them now,
|
||||||
|
# different path for different CPU arch.
|
||||||
|
|
||||||
|
if ARCH_ARM64
|
||||||
|
EXTRA_INCLUDES = -I/opt/homebrew/include
|
||||||
|
EXTRA_LIBS = -L/opt/homebrew/lib
|
||||||
|
else
|
||||||
|
EXTRA_INCLUDES = -I/usr/local/include
|
||||||
|
EXTRA_LIBS = -L/usr/local/lib
|
||||||
|
endif
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
if WANT_JANSSON
|
if WANT_JANSSON
|
||||||
JANSSON_INCLUDES= -I$(top_srcdir)/compat/jansson
|
# Can't find jansson libraries, compile the included source code.
|
||||||
|
EXTRA_INCLUDES = -I$(top_srcdir)/compat/jansson
|
||||||
|
EXTRA_LIBS = -L$(top_srcdir)/compat/jansson
|
||||||
else
|
else
|
||||||
JANSSON_INCLUDES=
|
EXTRA_INCLUDES =
|
||||||
|
EXTRA_LIBS =
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Hook for for GMP on MacOS which is provided by homebrew.
|
|
||||||
# Homebrew has different linkage on x86_64 & ARM64.
|
|
||||||
# Need complex expressions, nesting or elseif, none seem to work.
|
|
||||||
if !HAVE_APPLE
|
|
||||||
GMP_INCLUDES =
|
|
||||||
GMP_LIB = -lgmp
|
|
||||||
endif
|
|
||||||
if ARM64_APPLE
|
|
||||||
GMP_INCLUDES = -I/opt/homebrew/include
|
|
||||||
GMP_LIB = /opt/homebrew/lib/libgmp.a
|
|
||||||
endif
|
|
||||||
if X86_64_APPLE
|
|
||||||
GMP_INCLUDES = -I/usr/local/include
|
|
||||||
GMP_LIB = /usr/local/lib/libgmp.a
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
EXTRA_DIST = example-cfg.json nomacro.pl
|
EXTRA_DIST = example-cfg.json nomacro.pl
|
||||||
|
|
||||||
SUBDIRS = compat
|
SUBDIRS = compat
|
||||||
|
|
||||||
ALL_INCLUDES = @PTHREAD_FLAGS@ -fno-strict-aliasing $(JANSSON_INCLUDES) $(GMP_INCLUDES) -I.
|
ALL_INCLUDES = @PTHREAD_FLAGS@ -fno-strict-aliasing $(EXTRA_INCLUDES) -I.
|
||||||
|
|
||||||
bin_PROGRAMS = cpuminer
|
bin_PROGRAMS = cpuminer
|
||||||
|
|
||||||
@@ -288,21 +292,20 @@ cpuminer_SOURCES = \
|
|||||||
algo/yespower/yespower-opt.c \
|
algo/yespower/yespower-opt.c \
|
||||||
algo/yespower/yespower-ref.c \
|
algo/yespower/yespower-ref.c \
|
||||||
algo/yespower/yespower-blake2b-ref.c
|
algo/yespower/yespower-blake2b-ref.c
|
||||||
|
|
||||||
disable_flags =
|
|
||||||
|
|
||||||
if USE_ASM
|
|
||||||
cpuminer_SOURCES += asm/neoscrypt_asm.S
|
|
||||||
else
|
|
||||||
disable_flags += -DNOASM
|
|
||||||
endif
|
|
||||||
|
|
||||||
if HAVE_WINDOWS
|
if HAVE_WINDOWS
|
||||||
cpuminer_SOURCES += compat/winansi.c
|
cpuminer_SOURCES += compat/winansi.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if USE_ASM
|
||||||
|
disable_flags =
|
||||||
|
cpuminer_SOURCES += asm/neoscrypt_asm.S
|
||||||
|
else
|
||||||
|
disable_flags += -DNOASM
|
||||||
|
endif
|
||||||
|
|
||||||
cpuminer_LDFLAGS = @LDFLAGS@
|
cpuminer_LDFLAGS = @LDFLAGS@
|
||||||
cpuminer_LDADD = @LIBCURL@ @JANSSON_LIBS@ @PTHREAD_LIBS@ @WS2_LIBS@ $(GMP_LIB)
|
cpuminer_LDADD = $(EXTRA_LIBS) @LIBCURL@ -ljansson @PTHREAD_LIBS@ @WS2_LIBS@ -lgmp
|
||||||
cpuminer_CPPFLAGS = @LIBCURL_CPPFLAGS@ $(ALL_INCLUDES)
|
cpuminer_CPPFLAGS = @LIBCURL_CPPFLAGS@ $(ALL_INCLUDES)
|
||||||
cpuminer_CFLAGS = -Wno-pointer-sign -Wno-pointer-to-int-cast $(disable_flags)
|
cpuminer_CFLAGS = -Wno-pointer-sign -Wno-pointer-to-int-cast $(disable_flags)
|
||||||
|
|
||||||
@@ -312,9 +315,6 @@ endif
|
|||||||
|
|
||||||
if HAVE_WINDOWS
|
if HAVE_WINDOWS
|
||||||
|
|
||||||
# Add -U_WIN32_WINNT to command line CFLAGS to undefine
|
|
||||||
cpuminer_CFLAGS += -D_WIN32_WINNT=0x0601
|
|
||||||
|
|
||||||
# use to profile an object
|
# use to profile an object
|
||||||
# gprof_cflags = -pg -g3
|
# gprof_cflags = -pg -g3
|
||||||
# cpuminer_LDFLAGS += -pg
|
# cpuminer_LDFLAGS += -pg
|
||||||
|
26
README.md
26
README.md
@@ -36,34 +36,18 @@ for compile instructions.
|
|||||||
Requirements
|
Requirements
|
||||||
------------
|
------------
|
||||||
|
|
||||||
1. A x86_64 architecture CPU with a minimum of SSE2 support. This includes
|
1. A 64 bit CPU supporting x86_64 (Intel or AMD) or aarch64 (ARM).
|
||||||
Intel Core2 and newer and AMD equivalents. Further optimizations are available
|
x86_64 requires SSE2, aarch64 requires armv8 & NEON.
|
||||||
on some algoritms for CPUs with AES, AVX, AVX2, SHA, AVX512 and VAES.
|
|
||||||
|
|
||||||
32 bit CPUs are not supported.
|
|
||||||
Other CPU architectures such as ARM, Raspberry Pi, RISC-V, Xeon Phi, etc,
|
|
||||||
are not supported.
|
|
||||||
|
|
||||||
Mobile CPUs like laptop computers are not recommended because they aren't
|
Mobile CPUs like laptop computers are not recommended because they aren't
|
||||||
designed for extreme heat of operating at full load for extended periods of
|
designed for extreme heat of operating at full load for extended periods of
|
||||||
time.
|
time.
|
||||||
|
|
||||||
Older CPUs and ARM architecture may be supported by cpuminer-multi by TPruvot.
|
2. 64 bit operating system including Linux, Windows, MacOS, or BSD.
|
||||||
|
Android, IOS and alt OSs like Haiku & ReactOS are not supported.
|
||||||
2. 64 bit Linux or Windows OS. Ubuntu and Fedora based distributions,
|
|
||||||
including Mint and Centos, are known to work and have all dependencies
|
|
||||||
in their repositories. Others may work but may require more effort. Older
|
|
||||||
versions such as Centos 6 don't work due to missing features.
|
|
||||||
|
|
||||||
Windows 7 or newer is supported with mingw_w64 and msys or using the pre-built
|
|
||||||
binaries. WindowsXP 64 bit is YMMV.
|
|
||||||
|
|
||||||
FreeBSD is not actively tested but should work, YMMV.
|
|
||||||
MacOS, OSx and Android are not supported.
|
|
||||||
|
|
||||||
3. Stratum pool supporting stratum+tcp:// or stratum+ssl:// protocols or
|
3. Stratum pool supporting stratum+tcp:// or stratum+ssl:// protocols or
|
||||||
RPC getwork using http:// or https://.
|
RPC getblockte,plate using http:// or https://.
|
||||||
GBT is YMMV.
|
|
||||||
|
|
||||||
Supported Algorithms
|
Supported Algorithms
|
||||||
--------------------
|
--------------------
|
||||||
|
@@ -75,6 +75,14 @@ If not what makes it happen or not happen?
|
|||||||
Change Log
|
Change Log
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
v25.2
|
||||||
|
|
||||||
|
ARM: Fixed regression from v25.1 that could cause build fail.
|
||||||
|
BSD: FreeBSD is now supported. Other BSDs may also work.
|
||||||
|
MacOS: build with installed jansson library instead of compiling the included source code.
|
||||||
|
Windows: remove "_WIN32_WINNT=0x0601" which is a downgrade on Win11.
|
||||||
|
Changed build.sh shell from bash to sh.
|
||||||
|
|
||||||
v25.1
|
v25.1
|
||||||
|
|
||||||
MacOS ARM64: m7m algo is now working.
|
MacOS ARM64: m7m algo is now working.
|
||||||
|
2
build.sh
2
build.sh
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
|
|
||||||
make distclean || echo clean
|
make distclean || echo clean
|
||||||
rm -f config.status
|
rm -f config.status
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# make clean and rm all the targetted executables.
|
# make clean and rm all the targetted executables.
|
||||||
|
|
||||||
|
2
compat.h
2
compat.h
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
|
||||||
#if _WIN32_WINNT==0x0601 // Windows 7
|
#if _WIN32_WINNT>=0x0601 // Windows 7
|
||||||
#define WINDOWS_CPU_GROUPS_ENABLED 1
|
#define WINDOWS_CPU_GROUPS_ENABLED 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
79
configure.ac
79
configure.ac
@@ -1,4 +1,4 @@
|
|||||||
AC_INIT([cpuminer-opt], [25.1])
|
AC_INIT([cpuminer-opt], [25.2])
|
||||||
|
|
||||||
AC_PREREQ([2.59c])
|
AC_PREREQ([2.59c])
|
||||||
AC_CANONICAL_SYSTEM
|
AC_CANONICAL_SYSTEM
|
||||||
@@ -42,22 +42,11 @@ AC_FUNC_ALLOCA
|
|||||||
AC_CHECK_FUNCS([getopt_long])
|
AC_CHECK_FUNCS([getopt_long])
|
||||||
|
|
||||||
case $target in
|
case $target in
|
||||||
i*86-*-*)
|
|
||||||
have_x86=true
|
|
||||||
;;
|
|
||||||
aarch64-apple-*|arm64-apple-*)
|
|
||||||
have_arm64=true
|
|
||||||
have_arm64_apple=true
|
|
||||||
;;
|
|
||||||
x86_64-apple-*|amd64-apple-*)
|
|
||||||
have_x86_64=true
|
|
||||||
have_x86_64_apple=true
|
|
||||||
;;
|
|
||||||
x86_64-*-*|amd64-*-*)
|
x86_64-*-*|amd64-*-*)
|
||||||
have_x86_64=true
|
have_x86_64=true
|
||||||
;;
|
;;
|
||||||
aarch64*-*-*|arm64*-*-*)
|
aarch64*-*-*|arm64*-*-*)
|
||||||
have_arm4=true
|
have_arm64=true
|
||||||
;;
|
;;
|
||||||
powerpc*-*-*)
|
powerpc*-*-*)
|
||||||
have_ppc=true
|
have_ppc=true
|
||||||
@@ -84,42 +73,7 @@ if test x$enable_assembly != xno; then
|
|||||||
AC_DEFINE([USE_ASM], [1], [Define to 1 if assembly routines are wanted.])
|
AC_DEFINE([USE_ASM], [1], [Define to 1 if assembly routines are wanted.])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test x$enable_assembly != xno -a x$have_x86_64 = xtrue
|
# jansson test fails on Linux/Mingw, handled in Makefile.am.
|
||||||
then
|
|
||||||
AC_MSG_CHECKING(whether we can compile AVX code)
|
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[asm ("vmovdqa %ymm0, %ymm1");])],
|
|
||||||
AC_DEFINE(USE_AVX, 1, [Define to 1 if AVX assembly is available.])
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
AC_MSG_CHECKING(whether we can compile XOP code)
|
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[asm ("vprotd \$7, %xmm0, %xmm1");])],
|
|
||||||
AC_DEFINE(USE_XOP, 1, [Define to 1 if XOP assembly is available.])
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
,
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
AC_MSG_WARN([The assembler does not support the XOP instruction set.])
|
|
||||||
)
|
|
||||||
AC_MSG_CHECKING(whether we can compile AVX2 code)
|
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[asm ("vpaddd %ymm0, %ymm1, %ymm2");])],
|
|
||||||
AC_DEFINE(USE_AVX2, 1, [Define to 1 if AVX2 assembly is available.])
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
AC_MSG_CHECKING(whether we can compile AVX512 code)
|
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[asm ("vpaddd %zmm0, %zmm1, %zmm2{%k1}");])],
|
|
||||||
AC_DEFINE(USE_AVX512, 1, [Define to 1 if AVX512 assembly is available.])
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
,
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
AC_MSG_WARN([The assembler does not support the AVX512 instruction set.])
|
|
||||||
)
|
|
||||||
,
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
AC_MSG_WARN([The assembler does not support the AVX2 instruction set.])
|
|
||||||
)
|
|
||||||
,
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
AC_MSG_WARN([The assembler does not support the AVX instruction set.])
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_CHECK_LIB(jansson, json_loads, request_jansson=false, request_jansson=true)
|
AC_CHECK_LIB(jansson, json_loads, request_jansson=false, request_jansson=true)
|
||||||
|
|
||||||
AC_CHECK_LIB([pthread], [pthread_create], PTHREAD_LIBS="-lpthread",
|
AC_CHECK_LIB([pthread], [pthread_create], PTHREAD_LIBS="-lpthread",
|
||||||
@@ -128,9 +82,6 @@ AC_CHECK_LIB([pthread], [pthread_create], PTHREAD_LIBS="-lpthread",
|
|||||||
AC_CHECK_LIB([pthreadGC], [pthread_create], PTHREAD_LIBS="-lpthreadGC"
|
AC_CHECK_LIB([pthreadGC], [pthread_create], PTHREAD_LIBS="-lpthreadGC"
|
||||||
))))
|
))))
|
||||||
|
|
||||||
#LDFLAGS="$PTHREAD_LDFLAGS $LDFLAGS"
|
|
||||||
# PTHREAD_LIBS="$PTHREAD_LIBS"
|
|
||||||
|
|
||||||
AC_MSG_CHECKING(whether __uint128_t is supported)
|
AC_MSG_CHECKING(whether __uint128_t is supported)
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([static __uint128_t i = 100;])],
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([static __uint128_t i = 100;])],
|
||||||
AC_DEFINE(USE_INT128, 1, [Define if __uint128_t is available])
|
AC_DEFINE(USE_INT128, 1, [Define if __uint128_t is available])
|
||||||
@@ -143,19 +94,10 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([static __uint128_t i = 100;])],
|
|||||||
AM_CONDITIONAL([WANT_JANSSON], [test x$request_jansson = xtrue])
|
AM_CONDITIONAL([WANT_JANSSON], [test x$request_jansson = xtrue])
|
||||||
AM_CONDITIONAL([HAVE_WINDOWS], [test x$have_win32 = xtrue])
|
AM_CONDITIONAL([HAVE_WINDOWS], [test x$have_win32 = xtrue])
|
||||||
AM_CONDITIONAL([USE_ASM], [test x$enable_assembly != xno])
|
AM_CONDITIONAL([USE_ASM], [test x$enable_assembly != xno])
|
||||||
AM_CONDITIONAL([ARCH_x86], [test x$have_x86 = xtrue])
|
|
||||||
AM_CONDITIONAL([ARCH_x86_64], [test x$have_x86_64 = xtrue])
|
AM_CONDITIONAL([ARCH_x86_64], [test x$have_x86_64 = xtrue])
|
||||||
AM_CONDITIONAL([ARCH_ARM64], [test x$have_arm64 = xtrue])
|
AM_CONDITIONAL([ARCH_ARM64], [test x$have_arm64 = xtrue])
|
||||||
AM_CONDITIONAL([MINGW], [test "x$OS" = "xWindows_NT"])
|
AM_CONDITIONAL([MINGW], [test "x$OS" = "xWindows_NT"])
|
||||||
AM_CONDITIONAL([HAVE_APPLE], [test x$have_apple = xtrue])
|
AM_CONDITIONAL([HAVE_APPLE], [test x$have_apple = xtrue])
|
||||||
AM_CONDITIONAL([ARM64_APPLE], [test x$have_arm64_apple = xtrue])
|
|
||||||
AM_CONDITIONAL([X86_64_APPLE], [test x$have_x86_64_apple = xtrue])
|
|
||||||
|
|
||||||
if test x$request_jansson = xtrue ; then
|
|
||||||
JANSSON_LIBS="compat/jansson/libjansson.a"
|
|
||||||
else
|
|
||||||
JANSSON_LIBS=-ljansson
|
|
||||||
fi
|
|
||||||
|
|
||||||
# libcurl install path (for mingw : --with-curl=/usr/local)
|
# libcurl install path (for mingw : --with-curl=/usr/local)
|
||||||
AC_ARG_WITH([curl],
|
AC_ARG_WITH([curl],
|
||||||
@@ -168,25 +110,10 @@ if test -n "$with_curl" ; then
|
|||||||
LIBCURL="-lcurl -lz"
|
LIBCURL="-lcurl -lz"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# SSL install path (for mingw : --with-crypto=/usr/local/ssl)
|
|
||||||
AC_ARG_WITH([crypto],
|
|
||||||
[ --with-crypto=PATH prefix where openssl crypto is installed [default=/usr]])
|
|
||||||
|
|
||||||
if test -n "$with_crypto" ; then
|
|
||||||
LIBCURL_CFLAGS="$LIBCURL_CFLAGS -I$with_crypto/include"
|
|
||||||
LIBCURL_CPPFLAGS="$LIBCURL_CPPFLAGS -I$with_crypto/include"
|
|
||||||
LIBCURL_LDFLAGS="-L$with_crypto/lib $LIBCURL_LDFLAGS"
|
|
||||||
LIBCURL="$LIBCURL -lssl -lcrypto"
|
|
||||||
fi
|
|
||||||
|
|
||||||
CFLAGS="$CFLAGS $LIBCURL_CFLAGS"
|
CFLAGS="$CFLAGS $LIBCURL_CFLAGS"
|
||||||
CPPFLAGS="$CPPFLAGS $LIBCURL_CPPFLAGS"
|
CPPFLAGS="$CPPFLAGS $LIBCURL_CPPFLAGS"
|
||||||
LDFLAGS="$LDFLAGS $LIBCURL_LDFLAGS"
|
LDFLAGS="$LDFLAGS $LIBCURL_LDFLAGS"
|
||||||
|
|
||||||
#AC_CHECK_LIB([z],[gzopen],[],[])
|
|
||||||
#AC_CHECK_LIB([crypto],[OPENSSL_init], crypto=yes, [AC_MSG_ERROR([OpenSSL crypto library required])])
|
|
||||||
#AC_CHECK_LIB([ssl],[SSL_new], ssl=yes, ssl=no)
|
|
||||||
|
|
||||||
# AC_CHECK_LIB([curl], [curl_multi_timeout],
|
# AC_CHECK_LIB([curl], [curl_multi_timeout],
|
||||||
# have_libcurl=yes,
|
# have_libcurl=yes,
|
||||||
# have_libcurl=no AC_MSG_ERROR([curl library required])
|
# have_libcurl=no AC_MSG_ERROR([curl library required])
|
||||||
|
2090
configure~
2090
configure~
File diff suppressed because it is too large
Load Diff
62
cpu-miner.c
62
cpu-miner.c
@@ -286,15 +286,15 @@ static inline void drop_policy(void) { }
|
|||||||
static void affine_to_cpu( struct thr_info *thr )
|
static void affine_to_cpu( struct thr_info *thr )
|
||||||
{
|
{
|
||||||
int thread = thr->id;
|
int thread = thr->id;
|
||||||
unsigned long last_error;
|
unsigned long last_error = 0;
|
||||||
bool ok;
|
bool ok = true;
|
||||||
|
|
||||||
#if defined(WINDOWS_CPU_GROUPS_ENABLED)
|
#if defined(WINDOWS_CPU_GROUPS_ENABLED)
|
||||||
unsigned long group_size = GetActiveProcessorCount( 0 );
|
unsigned long group_size = GetActiveProcessorCount( 0 );
|
||||||
unsigned long group = thread / group_size;
|
unsigned long group = thread / group_size;
|
||||||
unsigned long cpu = thread_affinity_map[ thread % group_size ];
|
unsigned long cpu = thread_affinity_map[ thread % group_size ];
|
||||||
|
|
||||||
GROUP_AFFINITY affinity;
|
GROUP_AFFINITY affinity = {0};
|
||||||
affinity.Group = group;
|
affinity.Group = group;
|
||||||
affinity.Mask = 1ULL << cpu;
|
affinity.Mask = 1ULL << cpu;
|
||||||
|
|
||||||
@@ -320,8 +320,7 @@ static void affine_to_cpu( struct thr_info *thr )
|
|||||||
{
|
{
|
||||||
last_error = GetLastError();
|
last_error = GetLastError();
|
||||||
if ( !thread )
|
if ( !thread )
|
||||||
applog( LOG_WARNING, "Set affinity returned error 0x%x for thread %d",
|
applog( LOG_WARNING, "Set affinity returned error 0x%x", last_error );
|
||||||
last_error, thread );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2913,6 +2912,7 @@ static bool cpu_capability( bool display_only )
|
|||||||
sw_arm_arch = __ARM_ARCH;
|
sw_arm_arch = __ARM_ARCH;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// x86_64 only
|
// x86_64 only
|
||||||
#if defined(__SSE2__)
|
#if defined(__SSE2__)
|
||||||
sw_has_sse2 = true;
|
sw_has_sse2 = true;
|
||||||
@@ -2941,9 +2941,10 @@ static bool cpu_capability( bool display_only )
|
|||||||
#if defined(__AVX10_1_512__)
|
#if defined(__AVX10_1_512__)
|
||||||
sw_has_avx10_512 = true;
|
sw_has_avx10_512 = true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// x86_64 or AArch64
|
// x86_64 or AArch64
|
||||||
#if defined(__AES__) || defined(__ARM_FEATURE_AES)
|
#if defined(__AES__) || defined(__ARM_FEATURE_AES)
|
||||||
sw_has_aes = true;
|
sw_has_aes = true;
|
||||||
#endif
|
#endif
|
||||||
#ifdef __VAES__
|
#ifdef __VAES__
|
||||||
sw_has_vaes = true;
|
sw_has_vaes = true;
|
||||||
@@ -2954,6 +2955,7 @@ static bool cpu_capability( bool display_only )
|
|||||||
#if defined(__SHA512__) || defined(__ARM_FEATURE_SHA512)
|
#if defined(__SHA512__) || defined(__ARM_FEATURE_SHA512)
|
||||||
sw_has_sha512 = true;
|
sw_has_sha512 = true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// AArch64 only
|
// AArch64 only
|
||||||
#if defined(__ARM_NEON)
|
#if defined(__ARM_NEON)
|
||||||
sw_has_neon = true;
|
sw_has_neon = true;
|
||||||
@@ -2971,16 +2973,20 @@ static bool cpu_capability( bool display_only )
|
|||||||
sw_has_sme2 = true;
|
sw_has_sme2 = true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// CPU
|
||||||
cpu_brand_string( cpu_brand );
|
cpu_brand_string( cpu_brand );
|
||||||
printf( "CPU: %s\n", cpu_brand );
|
printf( "CPU: %s\n", cpu_brand );
|
||||||
|
|
||||||
printf("SW built on " __DATE__
|
// Build
|
||||||
|
printf( "SW built on " __DATE__
|
||||||
#if defined(__clang__)
|
#if defined(__clang__)
|
||||||
" with CLANG-%d.%d.%d", __clang_major__, __clang_minor__, __clang_patchlevel__);
|
" with CLANG-%d.%d.%d", __clang_major__, __clang_minor__,
|
||||||
|
__clang_patchlevel__ );
|
||||||
#elif defined(__GNUC__)
|
#elif defined(__GNUC__)
|
||||||
" with GCC-%d.%d.%d", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__);
|
" with GCC-%d.%d.%d", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__ );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// OS
|
||||||
#if defined(__linux)
|
#if defined(__linux)
|
||||||
printf(" Linux\n");
|
printf(" Linux\n");
|
||||||
#elif defined(WIN32)
|
#elif defined(WIN32)
|
||||||
@@ -3106,6 +3112,7 @@ static bool cpu_capability( bool display_only )
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
void show_version_and_exit(void)
|
void show_version_and_exit(void)
|
||||||
{
|
{
|
||||||
printf("\n built on " __DATE__
|
printf("\n built on " __DATE__
|
||||||
@@ -3162,12 +3169,11 @@ void show_version_and_exit(void)
|
|||||||
printf("\n");
|
printf("\n");
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
void show_usage_and_exit(int status)
|
void show_usage_and_exit(int status)
|
||||||
{
|
{
|
||||||
if (status)
|
if (status)
|
||||||
fprintf(stderr, "Try `--help' for more information.\n");
|
fprintf(stderr, "Try `--help' for more information.\n");
|
||||||
// fprintf(stderr, "Try `" PACKAGE_NAME " --help' for more information.\n");
|
|
||||||
else
|
else
|
||||||
printf(usage);
|
printf(usage);
|
||||||
exit(status);
|
exit(status);
|
||||||
@@ -3183,7 +3189,6 @@ void parse_arg(int key, char *arg )
|
|||||||
{
|
{
|
||||||
char *p;
|
char *p;
|
||||||
int v, i;
|
int v, i;
|
||||||
// uint64_t ul;
|
|
||||||
double d;
|
double d;
|
||||||
|
|
||||||
switch( key )
|
switch( key )
|
||||||
@@ -3327,7 +3332,8 @@ void parse_arg(int key, char *arg )
|
|||||||
free(rpc_user);
|
free(rpc_user);
|
||||||
rpc_user = strdup(arg);
|
rpc_user = strdup(arg);
|
||||||
break;
|
break;
|
||||||
case 'o': // url
|
|
||||||
|
case 'o': // url
|
||||||
{
|
{
|
||||||
char *ap, *hp;
|
char *ap, *hp;
|
||||||
ap = strstr( arg, "://" );
|
ap = strstr( arg, "://" );
|
||||||
@@ -3392,7 +3398,8 @@ void parse_arg(int key, char *arg )
|
|||||||
have_stratum = !opt_benchmark && !strncasecmp( rpc_url, "stratum", 7 );
|
have_stratum = !opt_benchmark && !strncasecmp( rpc_url, "stratum", 7 );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'O': // userpass
|
|
||||||
|
case 'O': // userpass
|
||||||
p = strchr(arg, ':');
|
p = strchr(arg, ':');
|
||||||
if (!p)
|
if (!p)
|
||||||
{
|
{
|
||||||
@@ -3552,10 +3559,10 @@ void parse_arg(int key, char *arg )
|
|||||||
case 1029: // stratum-keepalive
|
case 1029: // stratum-keepalive
|
||||||
opt_stratum_keepalive = true;
|
opt_stratum_keepalive = true;
|
||||||
break;
|
break;
|
||||||
case 'V':
|
case 'V': // version
|
||||||
display_cpu_capability();
|
display_cpu_capability();
|
||||||
exit(0);
|
exit(0);
|
||||||
case 'h':
|
case 'h': // help
|
||||||
show_usage_and_exit(0);
|
show_usage_and_exit(0);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -3864,12 +3871,23 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(WIN32) && defined(WINDOWS_CPU_GROUPS_ENABLED)
|
#if defined(WIN32)
|
||||||
if ( opt_debug || ( !opt_quiet && num_cpugroups > 1 ) )
|
|
||||||
applog( LOG_INFO, "Found %d CPUs in %d groups",
|
#if defined(_WIN32_WINNT)
|
||||||
num_cpus, num_cpugroups );
|
if (opt_debug)
|
||||||
|
applog( LOG_INFO, "_WIN232_WINNT = 0x%04x", _WIN32_WINNT );
|
||||||
|
#else
|
||||||
|
if (opt_debug)
|
||||||
|
applog( LOG_INFO, "_WIN232_WINNT undefined." );
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(WINDOWS_CPU_GROUPS_ENABLED)
|
||||||
|
if ( opt_debug || ( !opt_quiet && num_cpugroups > 1 ) )
|
||||||
|
applog( LOG_INFO, "Found %d CPUs in %d groups",
|
||||||
|
num_cpus, num_cpugroups );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
conditional_state = malloc( opt_n_threads * ((sizeof(bool)) ) );
|
conditional_state = malloc( opt_n_threads * ((sizeof(bool)) ) );
|
||||||
memset( conditional_state, 0, opt_n_threads * ((sizeof(bool)) ) );
|
memset( conditional_state, 0, opt_n_threads * ((sizeof(bool)) ) );
|
||||||
|
|
||||||
@@ -3890,7 +3908,7 @@ int main(int argc, char *argv[])
|
|||||||
if ( cpu < num_cpus ) active_cpus++;
|
if ( cpu < num_cpus ) active_cpus++;
|
||||||
}
|
}
|
||||||
if ( opt_n_threads > active_cpus )
|
if ( opt_n_threads > active_cpus )
|
||||||
applog( LOG_WARNING, "Affinity: more threads (%d) than active CPUs (%d)", opt_n_threads, active_cpus );
|
applog( LOG_WARNING, "More miner threads (%d) than active CPUs in affinity mask (%d)", opt_n_threads, active_cpus );
|
||||||
if ( !opt_quiet )
|
if ( !opt_quiet )
|
||||||
{
|
{
|
||||||
char affinity_mask[64];
|
char affinity_mask[64];
|
||||||
|
@@ -16,13 +16,8 @@ export MINGW_LIB="/usr/x86_64-w64-mingw32/lib"
|
|||||||
export GCC_MINGW_LIB="/usr/lib/gcc/x86_64-w64-mingw32/9.3-win32"
|
export GCC_MINGW_LIB="/usr/lib/gcc/x86_64-w64-mingw32/9.3-win32"
|
||||||
# used by GCC
|
# used by GCC
|
||||||
export LDFLAGS="-L$LOCAL_LIB/curl/lib/.libs -L$LOCAL_LIB/gmp/.libs"
|
export LDFLAGS="-L$LOCAL_LIB/curl/lib/.libs -L$LOCAL_LIB/gmp/.libs"
|
||||||
# Support for Windows 7 CPU groups, AES sometimes not included in -march
|
export DEFAULT_CFLAGS="-maes -O3 -Wall"
|
||||||
# CPU groups disabled due to incompatibilities between Intel and AMD CPUs.
|
export DEFAULT_CFLAGS_OLD="-O3 -Wall"
|
||||||
# CPU groups are enabled by default in Makefile, use -U to disable.
|
|
||||||
export DEFAULT_CFLAGS="-maes -O3 -Wall -U_WIN32_WINNT"
|
|
||||||
export DEFAULT_CFLAGS_OLD="-O3 -Wall -U_WIN32_WINNT"
|
|
||||||
#export DEFAULT_CFLAGS="-maes -O3 -Wall"
|
|
||||||
#export DEFAULT_CFLAGS_OLD="-O3 -Wall"
|
|
||||||
|
|
||||||
# make link to local gmp header file.
|
# make link to local gmp header file.
|
||||||
ln -s $LOCAL_LIB/gmp/gmp.h ./gmp.h
|
ln -s $LOCAL_LIB/gmp/gmp.h ./gmp.h
|
||||||
|
Reference in New Issue
Block a user