diff --git a/config.default.ini b/config.default.ini index 851f47e..cebbf62 100644 --- a/config.default.ini +++ b/config.default.ini @@ -13,9 +13,9 @@ mode = SSE # Smallest: Smallest FFT: 4K to 21K - tests L1/L2 caches, high power/heat/CPU stress # Small: Small FFT: 36K to 248K - tests L1/L2/L3 caches, maximum power/heat/CPU stress # Large: Large FFT: 426K to 8192K - stresses memory controller and RAM (although memory testing is disabled here by default!) -# All: All FFT: 4K to 8192K - all of the above -# Default: Small -FFTSize = Small +# All: All FFT: 4K to whatever is the highest FFT (32768K for SSE/AVX, 51200 for AVX2) +# Default: Huge +FFTSize = Huge # Set the runtime per core @@ -31,7 +31,7 @@ runtimePerCore = 360 # If set to 0 (default), the stress test programm will be restarted when an error # occurs and the core that caused the error will be skipped on the next iteration # Default: 0 -stopOnError = 1 +stopOnError = 0 # The number of threads to use for testing diff --git a/script-corecycler.ps1 b/script-corecycler.ps1 index dd72860..93efb2e 100644 --- a/script-corecycler.ps1 +++ b/script-corecycler.ps1 @@ -300,8 +300,10 @@ function Get-Settings { # 'Smallest': Smallest FFT: 4K to 21K - tests L1/L2 caches, high power/heat/CPU stress # 'Small': Small FFT: 36K to 248K - tests L1/L2/L3 caches, maximum power/heat/CPU stress # 'Large': Large FFT: 426K to 8192K - stresses memory controller and RAM (although memory testing is disabled here by default!) - # 'All': All FFT: 4K to 8192K - all of the above - FFTSize = 'Small' + # 'Huge': New custom mode: anything above 8192K + # 'All': All FFT: 4K to whatever is the highest FFT (32768K for SSE/AVX, 51200 for AVX2) + # Default: 'Huge' + FFTSize = 'Huge' # Set the runtime per core @@ -949,48 +951,79 @@ function Test-ProcessUsage { # DEBUG # Also add the 5 last rows of the results.txt file - #Write-Text('LAST 5 ROWS OF RESULTS.TXT:') - #Write-Text(Get-Item -Path $primeResultsPath | Get-Content -Tail 5) + #Write-Verbose('LAST 5 ROWS OF RESULTS.TXT:') + #Write-Verbose(Get-Item -Path $primeResultsPath | Get-Content -Tail 5) # Try to determine the last run FFT size # If the results.txt doesn't exist, assume that it was on the very first iteration - if (!$resultFileHandle) { - $lastRunFFT = $minFFTSize + # Note: Unfortunately Prime95 randomizes the FFT sizes for anything above Small FFT sizes + # So we cannot make an educated guess for these settings + if ($maxFFTSize -le $FFTMinMaxValues[$settings.mode]['Small'].Max) { + if (!$resultFileHandle) { + $lastRunFFT = $minFFTSize + } + + # Get the last couple of rows and find the last passed FFT size + else { + $lastFiveRows = $resultFileHandle | Get-Content -Tail 5 + $lastPassedFFTArr = @($lastFiveRows | Where-Object {$_ -like '*passed*'}) + $hasMatched = $lastPassedFFTArr[$lastPassedFFTArr.Length-1] -match 'Self-test (\d+)K passed' + $lastPassedFFT = if ($matches -is [Hashtable] -or $matches -is [Array]) { [Int]$matches[1] } # $matches is a fixed(?) variable name for -match + + # No passed FFT was found, assume it's the first FFT size + if (!$lastPassedFFT) { + $lastRunFFT = $minFFTSize + } + + # If the last passed FFT size is the max selected FFT size, start at the beginning + elseif ($lastPassedFFT -eq $maxFFTSize) { + $lastRunFFT = $minFFTSize + } + + # If the last passed FFT size is not the max size, check if the value doesn't show up at all in the FFT array + # In this case, we also assume that it successfully completed the max value and errored at the min FFT size + # Example: Smallest FFT max = 21, but the actual last size tested is 20K + elseif (!$FFTSizes[$cpuTestMode].Contains($lastPassedFFT)) { + $lastRunFFT = $minFFTSize + } + + # If it's not the max value and it does show up in the FFT array, select the next value + else { + $lastRunFFT = $FFTSizes[$cpuTestMode][$FFTSizes[$cpuTestMode].indexOf($lastPassedFFT)+1] + } + } + + # Educated guess + if ($lastRunFFT) { + Write-ColorText('ERROR: The error likely happened at FFT size ' + $lastRunFFT + 'K') Magenta + } + else { + Write-ColorText('ERROR: No additional FFT size information found in the results.txt') Magenta + } + + Write-Verbose('The last 5 entries in the results.txt:') + Write-Verbose($lastFiveRows -Join ', ') + + Write-Text('') } - - # Get the last couple of rows and find the last passed FFT size else { $lastFiveRows = $resultFileHandle | Get-Content -Tail 5 $lastPassedFFTArr = @($lastFiveRows | Where-Object {$_ -like '*passed*'}) $hasMatched = $lastPassedFFTArr[$lastPassedFFTArr.Length-1] -match 'Self-test (\d+)K passed' - $lastPassedFFT = if ($matches -is [Array]) { [Int]$matches[1] } # $matches is a fixed(?) variable name for -match + $lastPassedFFT = if ($matches -is [Hashtable] -or $matches -is [Array]) { [Int]$matches[1] } # $matches is a fixed(?) variable name for -match - # No passed FFT was found, assume it's the first FFT size - if (!$lastPassedFFT) { - $lastRunFFT = $minFFTSize + if ($lastPassedFFT) { + Write-ColorText('ERROR: The last *passed* FFT size before the error was: ' + $lastPassedFFT + 'K') Magenta + Write-ColorText('ERROR: Unfortunately FFT size fail detection only works for Smallest or Small FFT sizes.') Magenta } - - # If the last passed FFT size is the max selected FFT size, start at the beginning - elseif ($lastPassedFFT -eq $maxFFTSize) { - $lastRunFFT = $minFFTSize + else { + Write-ColorText('ERROR: No additional FFT size information found in the results.txt') Magenta } - # If the last passed FFT size is not the max size, check if the value doesn't show up at all in the FFT array - # In this case, we also assume that it successfully completed the max value and errored at the min FFT size - # Example: Smallest FFT max = 21, but the actual last size tested is 20K - elseif (!$FFTSizes[$cpuTestMode].Contains($lastPassedFFT)) { - $lastRunFFT = $minFFTSize - } + Write-Verbose('The last 5 entries in the results.txt:') + Write-Verbose($lastFiveRows -Join ', ') - # If it's not the max value and it does show up in the FFT array, select the next value - else { - $lastRunFFT = $FFTSizes[$cpuTestMode][$FFTSizes[$cpuTestMode].indexOf($lastPassedFFT)+1] - } - } - - # Educated guess - if ($lastRunFFT) { - Write-ColorText('ERROR: The error likely happened at FFT size ' + $lastRunFFT + 'K') Magenta + Write-Text('') } @@ -1218,14 +1251,17 @@ $FFTSizes = @{ 256, 288, 320, 336, 384, 400, # Large FFT + # Note: Unfortunately Prime95 seems to randomize the order for larger FFT sizes 448, 480, 512, 560, 576, 640, 672, 720, 768, 800, 896, 960, 1024, 1120, 1152, 1200, 1280, 1344, 1440, 1536, 1600, 1680, 1728, 1792, 1920, 2048, 2240, 2304, 2400, 2560, 2688, 2800, 2880, 3072, 3200, 3360, 3456, 3584, 3840, 4096, 4480, 4608, 4800, 5120, 5376, 5600, 5760, 6144, 6400, 6720, 6912, 7168, 7680, 8000, 8192 # Not used in Prime95 presets - # 32768 seems to be the maximum FFT size possible - 8960, 9216, 9600, 10240, 10752, 11200, 11520, 12288, 12800, 13440, 13824, 14336, 15360, 16000, 16384, 17920, 18432, 19200, 20480, 20480, - 21504, 22400, 23040, 24576, 25600, 26880, 27648, 28672, 30720, 32000, 32768 + # Now custom labeled "Huge" + # 32768 seems to be the maximum FFT size possible for SSE + # Note: Unfortunately Prime95 seems to randomize the order for larger FFT sizes + 8960, 9216, 9600, 10240, 10752, 11200, 11520, 12288, 12800, 13440, 13824, 14336, 15360, 16000, 16384, 17920, 18432, 19200, 20480, 21504, + 22400, 23040, 24576, 25600, 26880, 27648, 28672, 30720, 32000, 32768 ) AVX = @( @@ -1242,12 +1278,17 @@ $FFTSizes = @{ 256, 288, 320, 336, 384, 400, # Large FFT + # Note: Unfortunately Prime95 seems to randomize the order for larger FFT sizes 448, 480, 512, 560, 576, 640, 672, 720, 768, 800, 864, 896, 960, 1024, 1152, 1280, 1344, 1440, 1536, 1600, 1680, 1728, 1792, 1920, 2048, 2304, 2400, 2560, 2688, 2880, 3072, 3200, 3360, 3456, 3584, 3840, 4032, 4096, 4480, 4608, 4800, 5120, 5376, 5760, 6144, 6400, 6720, 6912, 7168, 7680, 8000, 8192 # Not used in Prime95 presets - # TODO: after 8192 for AVX + # Now custom labeled "Huge" + # 32768 seems to be the maximum FFT size possible for AVX + # Note: Unfortunately Prime95 seems to randomize the order for larger FFT sizes + 8960, 9216, 9600, 10240, 10752, 11520, 12288, 12800, 13440, 13824, 14336, 15360, 16000, 16128, 16384, 17920, 18432, 19200, 20480, 21504, + 22400, 23040, 24576, 25600, 26880, 28672, 30720, 32000, 32768 ) @@ -1265,12 +1306,22 @@ $FFTSizes = @{ 256, 280, 288, 320, 336, 384, 400, # Large FFT + # Note: Unfortunately Prime95 seems to randomize the order for larger FFT sizes 448, 480, 512, 560, 640, 672, 768, 800, 896, 960, 1024, 1120, 1152, 1280, 1344, 1440, 1536, 1600, 1680, 1792, 1920, 2048, 2240, 2304, 2400, 2560, 2688, 2800, 2880, 3072, 3200, 3360, 3584, 3840, 4096, 4480, 4608, 4800, 5120, 5376, 5600, 5760, 6144, 6400, 6720, 7168, 7680, 8000, 8064, 8192 # Not used in Prime95 presets - # TODO: after 8192 for AVX2 + # Now custom labeled "Huge" + # 51200 seems to be the maximum FFT size possible for AVX2 + # Note: Unfortunately Prime95 seems to randomize the order for larger FFT sizes + 8960, 9216, 9600, 10240, 10752, 11200, 11520, 12288, 12800, 13440, 13824, 14336, 15360, 16000, 16128, 16384, 17920, 18432, 19200, 20480, + 21504, 22400, 23040, 24576, 25600, 26880, 28672, 30720, 32000, 32768, 35840, 38400, 40960, 44800, 51200 + + # An example of the randomization: + # 11200, 8960, 9216, 9600, 10240, 10752, 11520, 11200, 11520, 12288, 11200, 8192, 11520, 12288, 12800, 13440, 13824, 8960, 14336, 15360, + # 16000, 16128, 16384, 9216, 17920, 18432, 19200, 20480, 21504, 9600, 22400, 23040, 24576, 25600, 26880, 10240, 28672, 30720, 32000, 32768, + # 35840, 10752, 38400, 40960, 44800, 51200 ) } @@ -1280,24 +1331,27 @@ $FFTSizes = @{ # depending on the selected test mode (SSE, AVX, AVX2) $FFTMinMaxValues = @{ SSE = @{ - Smallest = @{ Min = 4; Max = 20; } # Originally 4 ... 21 - Small = @{ Min = 40; Max = 240; } # Originally 36 ... 248 - Large = @{ Min = 448; Max = 8192; } # Originally 426 ... 8192 - All = @{ Min = 4; Max = 8192; } # Originally 4 ... 8192 + Smallest = @{ Min = 4; Max = 20; } # Originally 4 ... 21 + Small = @{ Min = 40; Max = 240; } # Originally 36 ... 248 + Large = @{ Min = 448; Max = 8192; } # Originally 426 ... 8192 + Huge = @{ Min = 8960; Max = 32768; } # New addition + All = @{ Min = 4; Max = 32768; } } AVX = @{ - Smallest = @{ Min = 4; Max = 21; } # Originally 4 ... 21 - Small = @{ Min = 36; Max = 240; } # Originally 36 ... 248 - Large = @{ Min = 448; Max = 8192; } # Originally 426 ... 8192 - All = @{ Min = 4; Max = 8192; } # Originally 4 ... 8192 + Smallest = @{ Min = 4; Max = 21; } # Originally 4 ... 21 + Small = @{ Min = 36; Max = 240; } # Originally 36 ... 248 + Large = @{ Min = 448; Max = 8192; } # Originally 426 ... 8192 + Huge = @{ Min = 8960; Max = 32768; } # New addition + All = @{ Min = 4; Max = 32768; } } AVX2 = @{ - Smallest = @{ Min = 4; Max = 21; } # Originally 4 ... 21 - Small = @{ Min = 36; Max = 240; } # Originally 36 ... 248 - Large = @{ Min = 448; Max = 8192; } # Originally 426 ... 8192 - All = @{ Min = 4; Max = 8192; } # Originally 4 ... 8192 + Smallest = @{ Min = 4; Max = 21; } # Originally 4 ... 21 + Small = @{ Min = 36; Max = 240; } # Originally 36 ... 248 + Large = @{ Min = 448; Max = 8192; } # Originally 426 ... 8192 + Huge = @{ Min = 8960; Max = 51200; } # New addition + All = @{ Min = 4; Max = 51200; } } }