@@ -31,7 +31,6 @@ struct CLChannel : public LogChannel
31
31
static const bool debug = false ;
32
32
};
33
33
#define cllog clog (CLChannel)
34
- #define ETHCL_LOG (_contents ) cllog << _contents
35
34
36
35
/* *
37
36
* Returns the name of a numerical cl_int error
@@ -372,8 +371,9 @@ void CLMiner::workLoop()
372
371
m_searchKernel.setArg (0 , m_searchBuffer[0 ]); // Supply output buffer to kernel.
373
372
m_searchKernel.setArg (1 , m_header[0 ]); // Supply header buffer to kernel.
374
373
m_searchKernel.setArg (2 , m_dag[0 ]); // Supply DAG buffer to kernel.
375
- m_searchKernel.setArg (3 , m_dagItems);
376
- m_searchKernel.setArg (5 , target);
374
+ m_searchKernel.setArg (3 , m_dag[1 ]); // Supply DAG buffer to kernel.
375
+ m_searchKernel.setArg (4 , m_dagItems);
376
+ m_searchKernel.setArg (6 , target);
377
377
378
378
#ifdef DEV_BUILD
379
379
if (g_logOptions & LOG_SWITCH)
@@ -386,7 +386,7 @@ void CLMiner::workLoop()
386
386
}
387
387
388
388
// Run the kernel.
389
- m_searchKernel.setArg (4 , startNonce);
389
+ m_searchKernel.setArg (5 , startNonce);
390
390
m_queue[0 ].enqueueNDRangeKernel (
391
391
m_searchKernel, cl::NullRange, m_settings.globalWorkSize , m_settings.localWorkSize );
392
392
@@ -696,7 +696,8 @@ bool CLMiner::initEpoch_internal()
696
696
// Eventually resume mining when changing coin or epoch (NiceHash)
697
697
}
698
698
699
- cllog << " Generating DAG + Light : " << dev::getFormattedMemory ((double )RequiredMemory);
699
+ cllog << " Generating split DAG + Light (total): "
700
+ << dev::getFormattedMemory ((double )RequiredMemory);
700
701
701
702
try
702
703
{
@@ -746,6 +747,7 @@ bool CLMiner::initEpoch_internal()
746
747
if (!m_settings.noExit )
747
748
addDefinition (code, " FAST_EXIT" , 1 );
748
749
750
+
749
751
// create miner OpenCL program
750
752
cl::Program::Sources sources{{code.data (), code.size ()}};
751
753
cl::Program program (m_context[0 ], sources), binaryProgram;
@@ -778,7 +780,7 @@ bool CLMiner::initEpoch_internal()
778
780
std::transform (device_name.begin (), device_name.end (), device_name.begin (), ::tolower);
779
781
fname_strm << boost::dll::program_location ().parent_path ().string ()
780
782
<< " /kernels/ethash_" << device_name << " _lws" << m_settings.localWorkSize
781
- << (m_settings.noExit ? " .bin " : " _exit.bin" ) ;
783
+ << (m_settings.noExit ? " " : " _exit" ) << " .bin" ;
782
784
cllog << " Loading binary kernel " << fname_strm.str ();
783
785
try
784
786
{
@@ -837,7 +839,8 @@ bool CLMiner::initEpoch_internal()
837
839
<< dev::getFormattedMemory (
838
840
(double )(m_deviceDescriptor.totalMemory - RequiredMemory));
839
841
m_dag.clear ();
840
- m_dag.push_back (cl::Buffer (m_context[0 ], CL_MEM_READ_ONLY, m_epochContext.dagSize ));
842
+ m_dag.push_back (cl::Buffer (m_context[0 ], CL_MEM_READ_ONLY, m_epochContext.dagSize / 2 ));
843
+ m_dag.push_back (cl::Buffer (m_context[0 ], CL_MEM_READ_ONLY, m_epochContext.dagSize / 2 ));
841
844
cllog << " Loading kernels" ;
842
845
843
846
// If we have a binary kernel to use, let's try it
@@ -849,7 +852,6 @@ bool CLMiner::initEpoch_internal()
849
852
850
853
m_dagKernel = cl::Kernel (program, " GenerateDAG" );
851
854
852
- cllog << " Writing light cache buffer" ;
853
855
m_queue[0 ].enqueueWriteBuffer (
854
856
m_light[0 ], CL_TRUE, 0 , m_epochContext.lightSize , m_epochContext.lightCache );
855
857
}
@@ -860,22 +862,24 @@ bool CLMiner::initEpoch_internal()
860
862
return true ;
861
863
}
862
864
// create buffer for header
863
- ETHCL_LOG ( " Creating buffer for header." ) ;
865
+ cllog << " Creating buffer for header." ;
864
866
m_header.clear ();
865
867
m_header.push_back (cl::Buffer (m_context[0 ], CL_MEM_READ_ONLY, 32 ));
866
868
867
869
m_searchKernel.setArg (1 , m_header[0 ]);
868
870
m_searchKernel.setArg (2 , m_dag[0 ]);
869
- m_searchKernel.setArg (3 , m_dagItems);
871
+ m_searchKernel.setArg (3 , m_dag[1 ]);
872
+ m_searchKernel.setArg (4 , m_dagItems);
870
873
871
874
// create mining buffers
872
- ETHCL_LOG ( " Creating mining buffer" ) ;
875
+ cllog << " Creating mining buffer" ;
873
876
m_searchBuffer.clear ();
874
877
m_searchBuffer.emplace_back (m_context[0 ], CL_MEM_WRITE_ONLY, sizeof (SearchResults));
875
878
876
879
m_dagKernel.setArg (1 , m_light[0 ]);
877
880
m_dagKernel.setArg (2 , m_dag[0 ]);
878
- m_dagKernel.setArg (3 , (uint32_t )(m_epochContext.lightSize / 64 ));
881
+ m_dagKernel.setArg (3 , m_dag[1 ]);
882
+ m_dagKernel.setArg (4 , (uint32_t )(m_epochContext.lightSize / 64 ));
879
883
880
884
const uint32_t workItems = m_dagItems * 2 ; // GPU computes partial 512-bit DAG items.
881
885
0 commit comments