DroidFish: Allow using more threads and more hash memory. Useful for network engines.

This commit is contained in:
Peter Osterlund
2012-08-05 19:28:18 +00:00
parent a7e21224b8
commit 5a7bd52687
3 changed files with 32 additions and 21 deletions

View File

@@ -364,26 +364,38 @@ you are not actively using the program.\
<item>2</item> <item>2</item>
<item>3</item> <item>3</item>
<item>4</item> <item>4</item>
</string-array> <item>6</item>
<item>8</item>
</string-array>
<string-array name="engine_threads_values"> <string-array name="engine_threads_values">
<item>0</item> <item>0</item>
<item>1</item> <item>1</item>
<item>2</item> <item>2</item>
<item>3</item> <item>3</item>
<item>4</item> <item>4</item>
</string-array> <item>6</item>
<item>8</item>
</string-array>
<string-array name="engine_hash_texts"> <string-array name="engine_hash_texts">
<item>16 MB</item> <item>16 MB</item>
<item>32 MB</item> <item>32 MB</item>
<item>64 MB</item> <item>64 MB</item>
<item>128 MB</item> <item>128 MB</item>
</string-array> <item>256 MB</item>
<item>512 MB</item>
<item>1024 MB</item>
<item>2048 MB</item>
</string-array>
<string-array name="engine_hash_values"> <string-array name="engine_hash_values">
<item>16</item> <item>16</item>
<item>32</item> <item>32</item>
<item>64</item> <item>64</item>
<item>128</item> <item>128</item>
</string-array> <item>256</item>
<item>512</item>
<item>1024</item>
<item>2048</item>
</string-array>
<string-array name="moves_per_session_texts"> <string-array name="moves_per_session_texts">
<item>Whole Game</item> <item>Whole Game</item>
<item>1 move</item> <item>1 move</item>

View File

@@ -787,7 +787,7 @@ public class DroidFish extends Activity implements GUIInterface {
bookOptions.random = (settings.getInt("bookRandom", 500) - 500) * (3.0 / 500); bookOptions.random = (settings.getInt("bookRandom", 500) - 500) * (3.0 / 500);
setBookOptions(); setBookOptions();
engineOptions.hashMB = getHashMB(); engineOptions.hashMB = getIntSetting("hashMB", 16);
engineOptions.hints = settings.getBoolean("tbHints", false); engineOptions.hints = settings.getBoolean("tbHints", false);
engineOptions.hintsEdit = settings.getBoolean("tbHintsEdit", false); engineOptions.hintsEdit = settings.getBoolean("tbHintsEdit", false);
engineOptions.rootProbe = settings.getBoolean("tbRootProbe", true); engineOptions.rootProbe = settings.getBoolean("tbRootProbe", true);
@@ -824,19 +824,6 @@ public class DroidFish extends Activity implements GUIInterface {
ctrl.prefsChanged(); ctrl.prefsChanged();
} }
/** Get hash size in MB from settings, but reduce size to an amount that the device can handle. */
private final int getHashMB() {
int hashMB = getIntSetting("hashMB", 16);
if (hashMB > 16) {
int maxMem = (int)(Runtime.getRuntime().maxMemory() / (1024*1024));
if (maxMem < 16)
maxMem = 16;
if (hashMB > maxMem)
hashMB = maxMem;
}
return hashMB;
}
private void updateButtons() { private void updateButtons() {
boolean largeButtons = settings.getBoolean("largeButtons", false); boolean largeButtons = settings.getBoolean("largeButtons", false);
Resources r = getResources(); Resources r = getResources();

View File

@@ -171,8 +171,8 @@ public class ExternalEngine extends UCIEngineBase {
@Override @Override
public void initOptions(EngineOptions engineOptions) { public void initOptions(EngineOptions engineOptions) {
super.initOptions(engineOptions); super.initOptions(engineOptions);
hashMB = engineOptions.hashMB; hashMB = getHashMB(engineOptions.hashMB);
setOption("Hash", engineOptions.hashMB); setOption("Hash", hashMB);
if (engineOptions.engineProbe) { if (engineOptions.engineProbe) {
gaviotaTbPath = engineOptions.gtbPath; gaviotaTbPath = engineOptions.gtbPath;
setOption("GaviotaTbPath", engineOptions.gtbPath); setOption("GaviotaTbPath", engineOptions.gtbPath);
@@ -181,12 +181,24 @@ public class ExternalEngine extends UCIEngineBase {
optionsInitialized = true; optionsInitialized = true;
} }
/** Reduce too large hash sizes. */
private final int getHashMB(int hashMB) {
if (hashMB > 16) {
int maxMem = (int)(Runtime.getRuntime().maxMemory() / (1024*1024));
if (maxMem < 16)
maxMem = 16;
if (hashMB > maxMem)
hashMB = maxMem;
}
return hashMB;
}
/** @inheritDoc */ /** @inheritDoc */
@Override @Override
public boolean optionsOk(EngineOptions engineOptions) { public boolean optionsOk(EngineOptions engineOptions) {
if (!optionsInitialized) if (!optionsInitialized)
return true; return true;
if (hashMB != engineOptions.hashMB) if (hashMB != getHashMB(engineOptions.hashMB))
return false; return false;
if (haveOption("gaviotatbpath") && !gaviotaTbPath.equals(engineOptions.gtbPath)) if (haveOption("gaviotatbpath") && !gaviotaTbPath.equals(engineOptions.gtbPath))
return false; return false;