mirror of
				https://git.wownero.com/wownero/RandomWOW.git
				synced 2024-08-15 00:23:14 +00:00 
			
		
		
		
	More helpful error messages in the benchmark
Move reciprocal tests before Dataset initialization Fix randomx.dll project
This commit is contained in:
		
							parent
							
								
									6ea6cceb63
								
							
						
					
					
						commit
						4a4b06e44b
					
				
					 5 changed files with 52 additions and 23 deletions
				
			
		|  | @ -192,7 +192,22 @@ There is a total of 29 different instructions. The sum of frequencies must be eq | ||||||
| 
 | 
 | ||||||
| #### Notes | #### Notes | ||||||
| 
 | 
 | ||||||
| Making large changes to the default values is not recommended. The only exceptions are the instruction pairs IROR_R/IROL_R, FADD_R/FSUB_R and FADD_M/FSUB_M, which are functionally equivalent. | Making changes to the default values is not recommended. The only exceptions are the instruction pairs IROR_R/IROL_R, FADD_R/FSUB_R and FADD_M/FSUB_M, which are functionally equivalent. Example of a safe custom configuration: | ||||||
|  | 
 | ||||||
|  | ||default|custom| | ||||||
|  | |-|------|------|-| | ||||||
|  | |`RANDOMX_FREQ_IROR_R`|8|5| | ||||||
|  | |`RANDOMX_FREQ_IROL_R`|2|5| | ||||||
|  | 
 | ||||||
|  | ||default|custom| | ||||||
|  | |-|------|------| | ||||||
|  | |`RANDOMX_FREQ_FADD_R`|16|17| | ||||||
|  | |`RANDOMX_FREQ_FSUB_R`|16|15| | ||||||
|  | 
 | ||||||
|  | ||default|custom| | ||||||
|  | |-|------|------| | ||||||
|  | |`RANDOMX_FREQ_FADD_M`|5|4| | ||||||
|  | |`RANDOMX_FREQ_FSUB_M`|5|6| | ||||||
| 
 | 
 | ||||||
| ## Unsafe configurations | ## Unsafe configurations | ||||||
| 
 | 
 | ||||||
|  | @ -200,6 +215,7 @@ There are some configurations that are considered 'unsafe' because they affect t | ||||||
| 
 | 
 | ||||||
| These checks can be disabled by definining `RANDOMX_UNSAFE` when building RandomX, e.g. by using `-DRANDOMX_UNSAFE` command line switch in GCC or MSVC. It is not recommended to disable these checks except for testing purposes. | These checks can be disabled by definining `RANDOMX_UNSAFE` when building RandomX, e.g. by using `-DRANDOMX_UNSAFE` command line switch in GCC or MSVC. It is not recommended to disable these checks except for testing purposes. | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| ### 1. Memory-time tradeoffs | ### 1. Memory-time tradeoffs | ||||||
| 
 | 
 | ||||||
| #### Condition | #### Condition | ||||||
|  |  | ||||||
|  | @ -204,7 +204,10 @@ int main(int argc, char** argv) { | ||||||
| 
 | 
 | ||||||
| 	try { | 	try { | ||||||
| 		if (jit && !RANDOMX_HAVE_COMPILER) { | 		if (jit && !RANDOMX_HAVE_COMPILER) { | ||||||
| 			throw std::runtime_error("JIT compilation is not supported on this platform"); | 			throw std::runtime_error("JIT compilation is not supported on this platform. Try without --jit"); | ||||||
|  | 		} | ||||||
|  | 		if (!jit && RANDOMX_HAVE_COMPILER) { | ||||||
|  | 			std::cout << "WARNING: You are using the interpreter mode. Use --jit for optimal performance." << std::endl; | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		Stopwatch sw(true); | 		Stopwatch sw(true); | ||||||
|  | @ -243,7 +246,13 @@ int main(int argc, char** argv) { | ||||||
| 		for (int i = 0; i < threadCount; ++i) { | 		for (int i = 0; i < threadCount; ++i) { | ||||||
| 			randomx_vm *vm = randomx_create_vm(flags, cache, dataset); | 			randomx_vm *vm = randomx_create_vm(flags, cache, dataset); | ||||||
| 			if (vm == nullptr) { | 			if (vm == nullptr) { | ||||||
| 				throw std::runtime_error("Unsupported virtual machine options"); | 				if (!softAes) { | ||||||
|  | 					throw std::runtime_error("Cannot create VM with the selected options. Try using --softAes"); | ||||||
|  | 				} | ||||||
|  | 				if (largePages) { | ||||||
|  | 					throw std::runtime_error("Cannot create VM with the selected options. Try without --largePages"); | ||||||
|  | 				} | ||||||
|  | 				throw std::runtime_error("Cannot create VM"); | ||||||
| 			} | 			} | ||||||
| 			vms.push_back(vm); | 			vms.push_back(vm); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | @ -118,6 +118,26 @@ int main() { | ||||||
| 		} | 		} | ||||||
| 	}); | 	}); | ||||||
| 
 | 
 | ||||||
|  | 	runTest("randomx_reciprocal", true, []() { | ||||||
|  | 		assert(randomx_reciprocal(3) == 12297829382473034410U); | ||||||
|  | 		assert(randomx_reciprocal(13) == 11351842506898185609U); | ||||||
|  | 		assert(randomx_reciprocal(33) == 17887751829051686415U); | ||||||
|  | 		assert(randomx_reciprocal(65537) == 18446462603027742720U); | ||||||
|  | 		assert(randomx_reciprocal(15000001) == 10316166306300415204U); | ||||||
|  | 		assert(randomx_reciprocal(3845182035) == 10302264209224146340U); | ||||||
|  | 		assert(randomx_reciprocal(0xffffffff) == 9223372039002259456U); | ||||||
|  | 	}); | ||||||
|  | 
 | ||||||
|  | 	runTest("randomx_reciprocal_fast", RANDOMX_HAVE_FAST_RECIPROCAL, []() { | ||||||
|  | 		assert(randomx_reciprocal_fast(3) == 12297829382473034410U); | ||||||
|  | 		assert(randomx_reciprocal_fast(13) == 11351842506898185609U); | ||||||
|  | 		assert(randomx_reciprocal_fast(33) == 17887751829051686415U); | ||||||
|  | 		assert(randomx_reciprocal_fast(65537) == 18446462603027742720U); | ||||||
|  | 		assert(randomx_reciprocal_fast(15000001) == 10316166306300415204U); | ||||||
|  | 		assert(randomx_reciprocal_fast(3845182035) == 10302264209224146340U); | ||||||
|  | 		assert(randomx_reciprocal_fast(0xffffffff) == 9223372039002259456U); | ||||||
|  | 	}); | ||||||
|  | 
 | ||||||
| 	runTest("Dataset initialization (interpreter)", stringsEqual(RANDOMX_ARGON_SALT, "RandomX\x03"), []() { | 	runTest("Dataset initialization (interpreter)", stringsEqual(RANDOMX_ARGON_SALT, "RandomX\x03"), []() { | ||||||
| 		initCache("test key 000"); | 		initCache("test key 000"); | ||||||
| 		uint64_t datasetItem[8]; | 		uint64_t datasetItem[8]; | ||||||
|  | @ -154,26 +174,6 @@ int main() { | ||||||
| 		assert(equalsHex(state, "fa89397dd6ca422513aeadba3f124b5540324c4ad4b6db434394307a17c833ab")); | 		assert(equalsHex(state, "fa89397dd6ca422513aeadba3f124b5540324c4ad4b6db434394307a17c833ab")); | ||||||
| 	}); | 	}); | ||||||
| 
 | 
 | ||||||
| 	runTest("randomx_reciprocal", true, []() { |  | ||||||
| 		assert(randomx_reciprocal(3) == 12297829382473034410U); |  | ||||||
| 		assert(randomx_reciprocal(13) == 11351842506898185609U); |  | ||||||
| 		assert(randomx_reciprocal(33) == 17887751829051686415U); |  | ||||||
| 		assert(randomx_reciprocal(65537) == 18446462603027742720U); |  | ||||||
| 		assert(randomx_reciprocal(15000001) == 10316166306300415204U); |  | ||||||
| 		assert(randomx_reciprocal(3845182035) == 10302264209224146340U); |  | ||||||
| 		assert(randomx_reciprocal(0xffffffff) == 9223372039002259456U); |  | ||||||
| 	}); |  | ||||||
| 
 |  | ||||||
| 	runTest("randomx_reciprocal_fast", RANDOMX_HAVE_FAST_RECIPROCAL, []() { |  | ||||||
| 		assert(randomx_reciprocal_fast(3) == 12297829382473034410U); |  | ||||||
| 		assert(randomx_reciprocal_fast(13) == 11351842506898185609U); |  | ||||||
| 		assert(randomx_reciprocal_fast(33) == 17887751829051686415U); |  | ||||||
| 		assert(randomx_reciprocal_fast(65537) == 18446462603027742720U); |  | ||||||
| 		assert(randomx_reciprocal_fast(15000001) == 10316166306300415204U); |  | ||||||
| 		assert(randomx_reciprocal_fast(3845182035) == 10302264209224146340U); |  | ||||||
| 		assert(randomx_reciprocal_fast(0xffffffff) == 9223372039002259456U); |  | ||||||
| 	}); |  | ||||||
| 
 |  | ||||||
| 	randomx::NativeRegisterFile reg; | 	randomx::NativeRegisterFile reg; | ||||||
| 	randomx::BytecodeMachine decoder; | 	randomx::BytecodeMachine decoder; | ||||||
| 	randomx::InstructionByteCode ibc; | 	randomx::InstructionByteCode ibc; | ||||||
|  |  | ||||||
|  | @ -59,6 +59,7 @@ | ||||||
|     <ClCompile Include="..\src\assembly_generator_x86.cpp" /> |     <ClCompile Include="..\src\assembly_generator_x86.cpp" /> | ||||||
|     <ClCompile Include="..\src\blake2\blake2b.c" /> |     <ClCompile Include="..\src\blake2\blake2b.c" /> | ||||||
|     <ClCompile Include="..\src\blake2_generator.cpp" /> |     <ClCompile Include="..\src\blake2_generator.cpp" /> | ||||||
|  |     <ClCompile Include="..\src\bytecode_machine.cpp" /> | ||||||
|     <ClCompile Include="..\src\dataset.cpp" /> |     <ClCompile Include="..\src\dataset.cpp" /> | ||||||
|     <ClCompile Include="..\src\instruction.cpp" /> |     <ClCompile Include="..\src\instruction.cpp" /> | ||||||
|     <ClCompile Include="..\src\instructions_portable.cpp" /> |     <ClCompile Include="..\src\instructions_portable.cpp" /> | ||||||
|  |  | ||||||
|  | @ -169,5 +169,8 @@ | ||||||
|     <ClCompile Include="..\src\blake2\blake2b.c"> |     <ClCompile Include="..\src\blake2\blake2b.c"> | ||||||
|       <Filter>Source Files</Filter> |       <Filter>Source Files</Filter> | ||||||
|     </ClCompile> |     </ClCompile> | ||||||
|  |     <ClCompile Include="..\src\bytecode_machine.cpp"> | ||||||
|  |       <Filter>Source Files</Filter> | ||||||
|  |     </ClCompile> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
| </Project> | </Project> | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue