summaryrefslogtreecommitdiffstats
path: root/backend/BackendConnector.cpp
diff options
context:
space:
mode:
authorpsychocrypt <psychocrypt@users.noreply.github.com>2017-09-24 20:04:51 +0200
committerpsychocrypt <psychocrypt@users.noreply.github.com>2017-09-30 23:46:08 +0200
commit2cc79914a6fddb3f87a707d85ecc93d1340a2996 (patch)
tree8be4cb2bf5492686d7fd15dd827aba95cd98003e /backend/BackendConnector.cpp
parent18a48e11d26ed1f3c1ed37154a6b3d5873317bd8 (diff)
downloadxmr-stak-2cc79914a6fddb3f87a707d85ecc93d1340a2996.zip
xmr-stak-2cc79914a6fddb3f87a707d85ecc93d1340a2996.tar.gz
add generic backend files
- add Plugin.h to load a backend - add backend interface
Diffstat (limited to 'backend/BackendConnector.cpp')
-rw-r--r--backend/BackendConnector.cpp90
1 files changed, 90 insertions, 0 deletions
diff --git a/backend/BackendConnector.cpp b/backend/BackendConnector.cpp
new file mode 100644
index 0000000..f7a63fe
--- /dev/null
+++ b/backend/BackendConnector.cpp
@@ -0,0 +1,90 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Additional permission under GNU GPL version 3 section 7
+ *
+ * If you modify this Program, or any covered work, by linking or combining
+ * it with OpenSSL (or a modified version of that library), containing parts
+ * covered by the terms of OpenSSL License and SSLeay License, the licensors
+ * of this Program grant you additional permission to convey the resulting work.
+ *
+ */
+
+#include <assert.h>
+#include <cmath>
+#include <chrono>
+#include <cstring>
+#include <thread>
+#include <bitset>
+
+#include "IBackend.hpp"
+#include "BackendConnector.hpp"
+
+#include "cpu/minethd.h"
+#ifndef CONF_NO_CUDA
+# include "nvidia/minethd.h"
+#endif
+#ifndef CONF_NO_OPENCL
+# include "amd/minethd.h"
+#endif
+#include "miner_work.h"
+#include "GlobalStates.hpp"
+ #include <cstdlib>
+
+#include "Plugin.hpp"
+
+namespace xmrstak
+{
+
+
+bool BackendConnector::self_test()
+{
+
+ return true;
+}
+
+std::vector<IBackend*>* BackendConnector::thread_starter(miner_work& pWork)
+{
+ GlobalStates::iGlobalJobNo = 0;
+ GlobalStates::iConsumeCnt = 0;
+
+
+ std::vector<IBackend*>* pvThreads = new std::vector<IBackend*>;
+
+ auto cpuThreads = cpu::minethd::thread_starter(pvThreads->size(), pWork);
+ pvThreads->insert(std::end(*pvThreads), std::begin(cpuThreads), std::end(cpuThreads));
+ if(cpuThreads.size() == 0)
+ printer::inst()->print_msg(L0, "WARNING: backend CPU disabled.");
+
+#ifndef CONF_NO_CUDA
+ Plugin nvidiaPlugin("NVIDIA", "./libxmrstak_cuda_backend");
+ std::vector<IBackend*>* nvidiaThreads = nvidiaPlugin.startBackend(pvThreads->size(), pWork);
+ pvThreads->insert(std::end(*pvThreads), std::begin(*nvidiaThreads), std::end(*nvidiaThreads));
+ if(nvidiaThreads->size() == 0)
+ printer::inst()->print_msg(L0, "WARNING: backend NVIDIA disabled.");
+#endif
+
+#ifndef CONF_NO_OPENCL
+ Plugin amdPlugin("AMD", "./libxmrstak_opencl_backend");
+ std::vector<IBackend*>* amdThreads = amdPlugin.startBackend(pvThreads->size(), pWork);
+ pvThreads->insert(std::end(*pvThreads), std::begin(*amdThreads), std::end(*amdThreads));
+ if(amdThreads->size() == 0)
+ printer::inst()->print_msg(L0, "WARNING: backend AMD disabled.");
+#endif
+
+ GlobalStates::iThreadCount = pvThreads->size();
+ return pvThreads;
+}
+
+} // namepsace xmrstak
OpenPOWER on IntegriCloud