Updated FAQ document for the new 'number of instances' algorithm.

This commit is contained in:
LoRd_MuldeR 2011-11-26 22:28:00 +01:00
parent 431bf4b9ff
commit 3a74f55c5f
4 changed files with 80 additions and 64 deletions

View File

@ -36,7 +36,7 @@ a:visited { color: #0000EE; }
<li><a href="#df406578">The LameXP startup (splash screen) takes very long on my system. What can I do?</a> <li><a href="#df406578">The LameXP startup (splash screen) takes very long on my system. What can I do?</a>
<li><a href="#900a2a6c">Is there a way to hide/show the LameXP console ("DOS Box") window?</a> <li><a href="#900a2a6c">Is there a way to hide/show the LameXP console ("DOS Box") window?</a>
<li><a href="#9b0a5c32">Why does application 'xyz' not open the Wave files created by LameXP?</a> <li><a href="#9b0a5c32">Why does application 'xyz' not open the Wave files created by LameXP?</a>
<li><a href="#89cbd3d0">Why does LameXP run only 'n' parallel instances/threads on my computer?</a> <li><a href="#89cbd3d0">Why does LameXP run (only) N instances/threads in parallel on my computer?</a>
<li><a href="#12d077d5">How can I force LameXP to create ID3 version 2 (ID3v2) tags?</a> <li><a href="#12d077d5">How can I force LameXP to create ID3 version 2 (ID3v2) tags?</a>
<li><a href="#d83ab3c6">Why does LameXP use LAME v3.99 rather than v3.98?</a><br> <li><a href="#d83ab3c6">Why does LameXP use LAME v3.99 rather than v3.98?</a><br>
<li><a href="#4213adbc">Can LameXP be used to convert/extract tracks from an Audio CD?</a> <li><a href="#4213adbc">Can LameXP be used to convert/extract tracks from an Audio CD?</a>
@ -464,22 +464,38 @@ You can use a command-line like this:<br>
<br><br> <br><br>
<a name="89cbd3d0"></a><b>Why does LameXP run only 'n' parallel instances/threads on my computer?</b><br> <a name="89cbd3d0"></a><b>Why does LameXP run (only) N instances/threads in parallel on my computer?</b><br>
<br> <br>
By default LameXP will detect the number of CPU cores that are available on your system and run as many<br> LameXP is able to run multiple instances of the encoder or decoder in parallel. This is done in order to<br>
encoder/decoder instances in parallel as CPU cores are available. This is done in order to maximize the CPU<br> maximize the CPU utilization on modern "multi-core" processors, which will significantly speed up the overall<br>
usage on modern multi-core processors and thus speed up the overall encoding process. However be aware that<br> encoding process. However be aware that LameXP uses file-based parallelization. This means that the maximum<br>
the number of instances that can run in parallel is also limited by the number of files you are converting.<br> number of instances that can run in parallel is limited by the number of files that are processed. If, for<br>
Consequently the number of instances that will run in parallel is the minimum(!) of the number of CPU cores<br> example, you convert only a single file, then NO parallelization will be possible. If, instead, you convert<br>
and the number of files to convert. Moreover the number of parallel instances is currently bounded at four!<br> multiple files at once, then LameXP can run as many instances in parallel as files are being converted.<br>
<br> <br>
Limiting the maximum number of parallel instances to exactly four might seem somewhat arbitrary. But the more<br> Within the aforementioned limitations, LameXP will selected the number of parallel instances based on the<br>
instances are running in parallel, the more instances will be competing for the hard disk. At some point this<br> number of available processors (CPU cores) on the individual system. However LameXP will NOT use a one-to-one<br>
will result in "HDD trashing" and actually slow down the encoding process! The limit will prevent this<br> mapping! Instead a custom-made 'cubic spline' function is used to map the number of CPU cores to the maximum<br>
situation on computers with a lot of CPU cores. If, however, you want to use even more (or fewer) instances,<br> number of instances. This function has the following properties: On systems with at most four CPU cores, the<br>
then you can use LameXP's option to manually overwrite the maximum number of parallel instances/threads.<br> maximum number of parallel instances will be identical to the number of CPU cores. On systems with eight CPU<br>
cores, the maximum number of parallel instances is six. On systems with 16 cores, the maximum number of<br>
parallel instances is eight. On systems with 32 cores, the maximum number of parallel instances is ten. And<br>
on systems with 64 cores, the maximum number of parallel instances is twelve. Twelve is the upper limit.<br>
<br> <br>
Also be aware that LameXP only controls the number of instances that will run in parallel, but it does NOT<br> <a href="http://img265.imageshack.us/img265/9200/cpucoresmapping.png" target="_blank"><img src="http://img265.imageshack.us/img265/9200/cpucoresmapping.th.png" border="0" alt="thumb"></a><br>
<br>
You may wonder why LameXP doesn't always create one instance for each CPU core. In theory, the more instances<br>
we create, the more CPU cores can be utilized. In reality, however, there are more "shared" resources on the<br>
computer. And, the more instances we run in parallel, the more processes will be competing for the shared<br>
resources! More specifically, the amount of main memory (RAM) is limited. Creating a huge number of instances<br>
in parallel can easily use up all RAM, which will cause the operating system to make heavy use of the page<br>
file. This can result in HDD thrasing and may significantly hurt the overall performance! But even when there<br>
is enough RAM available on the system, each encoder or decoder instance needs to access the HDD, e.g. for<br>
reading the input file and for writing the output file. Thus too many instances will cause an I/O bottleneck!<br>
If, however, you think that LameXP's choice of the number of parallel instances is too conservative, you may<br>
overwrite the number of parallel instances on the "Advanced Options" tab. The upper limit is 16.<br>
<br>
Finally, note that LameXP only controls the number of instances that will run in parallel, but it does NOT<br>
control how many threads an individual instance will create! Some encoders use "built-in" multi-threading and<br> control how many threads an individual instance will create! Some encoders use "built-in" multi-threading and<br>
thus a single encoder instance may create several threads - LameXP has no control over that.<br><br> thus a single encoder instance may create several threads - LameXP has no control over that.<br><br>

View File

@ -2633,114 +2633,114 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="147"/> <location filename="../../src/Dialog_Processing.cpp" line="152"/>
<source>Show details for selected job</source> <source>Show details for selected job</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="148"/> <location filename="../../src/Dialog_Processing.cpp" line="153"/>
<source>Browse Output File Location</source> <source>Browse Output File Location</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="166"/> <location filename="../../src/Dialog_Processing.cpp" line="171"/>
<source>Encoding Files</source> <source>Encoding Files</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="166"/> <location filename="../../src/Dialog_Processing.cpp" line="171"/>
<source>Your files are being encoded, please be patient...</source> <source>Your files are being encoded, please be patient...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="327"/> <location filename="../../src/Dialog_Processing.cpp" line="332"/>
<source>Encoding files, please wait...</source> <source>Encoding files, please wait...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="370"/> <location filename="../../src/Dialog_Processing.cpp" line="375"/>
<source>Multi-threading enabled: Running %1 instances in parallel!</source> <source>Multi-threading enabled: Running %1 instances in parallel!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="384"/> <location filename="../../src/Dialog_Processing.cpp" line="389"/>
<source>Aborted! Waiting for running jobs to terminate...</source> <source>Aborted! Waiting for running jobs to terminate...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="399"/> <location filename="../../src/Dialog_Processing.cpp" line="404"/>
<source>Encoding: %1 files of %2 completed so far, please wait...</source> <source>Encoding: %1 files of %2 completed so far, please wait...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="427"/> <location filename="../../src/Dialog_Processing.cpp" line="432"/>
<source>Creating the playlist file, please wait...</source> <source>Creating the playlist file, please wait...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="437"/> <location filename="../../src/Dialog_Processing.cpp" line="442"/>
<source>Process was aborted by the user after %1 file(s)!</source> <source>Process was aborted by the user after %1 file(s)!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="437"/> <location filename="../../src/Dialog_Processing.cpp" line="442"/>
<source>Process was aborted prematurely by the user!</source> <source>Process was aborted prematurely by the user!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="438"/> <location filename="../../src/Dialog_Processing.cpp" line="443"/>
<source>LameXP - Aborted</source> <source>LameXP - Aborted</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="438"/> <location filename="../../src/Dialog_Processing.cpp" line="443"/>
<source>Process was aborted by the user.</source> <source>Process was aborted by the user.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="450"/> <location filename="../../src/Dialog_Processing.cpp" line="455"/>
<source>Error: %1 of %2 files failed. Double-click failed items for detailed information!</source> <source>Error: %1 of %2 files failed. Double-click failed items for detailed information!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="451"/> <location filename="../../src/Dialog_Processing.cpp" line="456"/>
<source>LameXP - Error</source> <source>LameXP - Error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="451"/> <location filename="../../src/Dialog_Processing.cpp" line="456"/>
<source>At least one file has failed!</source> <source>At least one file has failed!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="461"/> <location filename="../../src/Dialog_Processing.cpp" line="466"/>
<location filename="../../src/Dialog_Processing.cpp" line="462"/> <location filename="../../src/Dialog_Processing.cpp" line="467"/>
<source>All files completed successfully.</source> <source>All files completed successfully.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="462"/> <location filename="../../src/Dialog_Processing.cpp" line="467"/>
<source>LameXP - Done</source> <source>LameXP - Done</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="859"/> <location filename="../../src/Dialog_Processing.cpp" line="864"/>
<source>Playlist creation failed</source> <source>Playlist creation failed</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="859"/> <location filename="../../src/Dialog_Processing.cpp" line="864"/>
<source>The playlist file could not be created:</source> <source>The playlist file could not be created:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="929"/> <location filename="../../src/Dialog_Processing.cpp" line="934"/>
<source>Warning: Computer will shutdown in %1 seconds...</source> <source>Warning: Computer will shutdown in %1 seconds...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="933"/> <location filename="../../src/Dialog_Processing.cpp" line="938"/>
<location filename="../../src/Dialog_Processing.cpp" line="934"/> <location filename="../../src/Dialog_Processing.cpp" line="939"/>
<source>Cancel Shutdown</source> <source>Cancel Shutdown</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -2633,114 +2633,114 @@
<translation type="unfinished">Powrót</translation> <translation type="unfinished">Powrót</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="147"/> <location filename="../../src/Dialog_Processing.cpp" line="152"/>
<source>Show details for selected job</source> <source>Show details for selected job</source>
<translation type="unfinished">Pokaż szczegóły wybranego zadania</translation> <translation type="unfinished">Pokaż szczegóły wybranego zadania</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="148"/> <location filename="../../src/Dialog_Processing.cpp" line="153"/>
<source>Browse Output File Location</source> <source>Browse Output File Location</source>
<translation type="unfinished">Wybierz lokalizację dla plików wyjściowych</translation> <translation type="unfinished">Wybierz lokalizację dla plików wyjściowych</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="166"/> <location filename="../../src/Dialog_Processing.cpp" line="171"/>
<source>Encoding Files</source> <source>Encoding Files</source>
<translation type="unfinished">Kompresowanie plików</translation> <translation type="unfinished">Kompresowanie plików</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="166"/> <location filename="../../src/Dialog_Processing.cpp" line="171"/>
<source>Your files are being encoded, please be patient...</source> <source>Your files are being encoded, please be patient...</source>
<translation type="unfinished">Twoje pliki właśnie kompresowane, prosze być cierpliwy...</translation> <translation type="unfinished">Twoje pliki właśnie kompresowane, prosze być cierpliwy...</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="327"/> <location filename="../../src/Dialog_Processing.cpp" line="332"/>
<source>Encoding files, please wait...</source> <source>Encoding files, please wait...</source>
<translation type="unfinished">Kompresowanie plików, prosze czekać...</translation> <translation type="unfinished">Kompresowanie plików, prosze czekać...</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="370"/> <location filename="../../src/Dialog_Processing.cpp" line="375"/>
<source>Multi-threading enabled: Running %1 instances in parallel!</source> <source>Multi-threading enabled: Running %1 instances in parallel!</source>
<translation type="unfinished">Wielowątkowosć włączona: Równolegle wykonywanych jest %1 kodowań!</translation> <translation type="unfinished">Wielowątkowosć włączona: Równolegle wykonywanych jest %1 kodowań!</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="384"/> <location filename="../../src/Dialog_Processing.cpp" line="389"/>
<source>Aborted! Waiting for running jobs to terminate...</source> <source>Aborted! Waiting for running jobs to terminate...</source>
<translation type="unfinished">Przerwano! Czekanie na wyłączenie procesu...</translation> <translation type="unfinished">Przerwano! Czekanie na wyłączenie procesu...</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="399"/> <location filename="../../src/Dialog_Processing.cpp" line="404"/>
<source>Encoding: %1 files of %2 completed so far, please wait...</source> <source>Encoding: %1 files of %2 completed so far, please wait...</source>
<translation type="unfinished">Kompresja: Prosze czekać, jak dotąd wykonano %1 z %2 plików...</translation> <translation type="unfinished">Kompresja: Prosze czekać, jak dotąd wykonano %1 z %2 plików...</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="427"/> <location filename="../../src/Dialog_Processing.cpp" line="432"/>
<source>Creating the playlist file, please wait...</source> <source>Creating the playlist file, please wait...</source>
<translation type="unfinished">Tworzenie pliku playlisty, prosze czekać...</translation> <translation type="unfinished">Tworzenie pliku playlisty, prosze czekać...</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="437"/> <location filename="../../src/Dialog_Processing.cpp" line="442"/>
<source>Process was aborted by the user after %1 file(s)!</source> <source>Process was aborted by the user after %1 file(s)!</source>
<translation type="unfinished">Proces został przerwany przez użytkownika po wykonaniu %1 plików!</translation> <translation type="unfinished">Proces został przerwany przez użytkownika po wykonaniu %1 plików!</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="437"/> <location filename="../../src/Dialog_Processing.cpp" line="442"/>
<source>Process was aborted prematurely by the user!</source> <source>Process was aborted prematurely by the user!</source>
<translation type="unfinished">Proces został przedwcześnie zakończony przez użytkownika!</translation> <translation type="unfinished">Proces został przedwcześnie zakończony przez użytkownika!</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="438"/> <location filename="../../src/Dialog_Processing.cpp" line="443"/>
<source>LameXP - Aborted</source> <source>LameXP - Aborted</source>
<translation type="unfinished">LameXP - Przerwano</translation> <translation type="unfinished">LameXP - Przerwano</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="438"/> <location filename="../../src/Dialog_Processing.cpp" line="443"/>
<source>Process was aborted by the user.</source> <source>Process was aborted by the user.</source>
<translation type="unfinished">Proces został przerwany przez użytkownika.</translation> <translation type="unfinished">Proces został przerwany przez użytkownika.</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="450"/> <location filename="../../src/Dialog_Processing.cpp" line="455"/>
<source>Error: %1 of %2 files failed. Double-click failed items for detailed information!</source> <source>Error: %1 of %2 files failed. Double-click failed items for detailed information!</source>
<translation type="unfinished">Błąd: %1 z %2 plików nie zostało skompresowanych. Kliknij dwukrotnie na plik aby zobaczyć szczegóły!</translation> <translation type="unfinished">Błąd: %1 z %2 plików nie zostało skompresowanych. Kliknij dwukrotnie na plik aby zobaczyć szczegóły!</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="451"/> <location filename="../../src/Dialog_Processing.cpp" line="456"/>
<source>LameXP - Error</source> <source>LameXP - Error</source>
<translation type="unfinished">LameXP - Błąd</translation> <translation type="unfinished">LameXP - Błąd</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="451"/> <location filename="../../src/Dialog_Processing.cpp" line="456"/>
<source>At least one file has failed!</source> <source>At least one file has failed!</source>
<translation type="unfinished">Przynajmniej jeden plik nie został skompresowany!</translation> <translation type="unfinished">Przynajmniej jeden plik nie został skompresowany!</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="461"/> <location filename="../../src/Dialog_Processing.cpp" line="466"/>
<location filename="../../src/Dialog_Processing.cpp" line="462"/> <location filename="../../src/Dialog_Processing.cpp" line="467"/>
<source>All files completed successfully.</source> <source>All files completed successfully.</source>
<translation type="unfinished">Kompresja wszystkich plików zakończona powodzeniem.</translation> <translation type="unfinished">Kompresja wszystkich plików zakończona powodzeniem.</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="462"/> <location filename="../../src/Dialog_Processing.cpp" line="467"/>
<source>LameXP - Done</source> <source>LameXP - Done</source>
<translation type="unfinished">LameXP - Zrobione</translation> <translation type="unfinished">LameXP - Zrobione</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="859"/> <location filename="../../src/Dialog_Processing.cpp" line="864"/>
<source>Playlist creation failed</source> <source>Playlist creation failed</source>
<translation type="unfinished">Tworzenie playlisty zakończone niepowodzeniem</translation> <translation type="unfinished">Tworzenie playlisty zakończone niepowodzeniem</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="859"/> <location filename="../../src/Dialog_Processing.cpp" line="864"/>
<source>The playlist file could not be created:</source> <source>The playlist file could not be created:</source>
<translation type="unfinished">Playlista nie mogła zostać utworzona:</translation> <translation type="unfinished">Playlista nie mogła zostać utworzona:</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="929"/> <location filename="../../src/Dialog_Processing.cpp" line="934"/>
<source>Warning: Computer will shutdown in %1 seconds...</source> <source>Warning: Computer will shutdown in %1 seconds...</source>
<translation type="unfinished">Ostrzeżenie: Komputer zostanie zamknięty za %1 sekund/y...</translation> <translation type="unfinished">Ostrzeżenie: Komputer zostanie zamknięty za %1 sekund/y...</translation>
</message> </message>
<message> <message>
<location filename="../../src/Dialog_Processing.cpp" line="933"/> <location filename="../../src/Dialog_Processing.cpp" line="938"/>
<location filename="../../src/Dialog_Processing.cpp" line="934"/> <location filename="../../src/Dialog_Processing.cpp" line="939"/>
<source>Cancel Shutdown</source> <source>Cancel Shutdown</source>
<translation type="unfinished">Anuluj wyłączenie komputera</translation> <translation type="unfinished">Anuluj wyłączenie komputera</translation>
</message> </message>

View File

@ -29,8 +29,8 @@
#define VER_LAMEXP_MINOR_HI 0 #define VER_LAMEXP_MINOR_HI 0
#define VER_LAMEXP_MINOR_LO 4 #define VER_LAMEXP_MINOR_LO 4
#define VER_LAMEXP_TYPE Alpha #define VER_LAMEXP_TYPE Alpha
#define VER_LAMEXP_PATCH 3 #define VER_LAMEXP_PATCH 4
#define VER_LAMEXP_BUILD 791 #define VER_LAMEXP_BUILD 792
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// Tool versions (minimum expected versions!) // Tool versions (minimum expected versions!)