Issue 1680: "FtblockDN.cc RGB_denoise": this patch add a Performance tab to limit the number of core used for RGB denoising tool

This commit is contained in:
natureh 510 2013-02-26 01:05:44 +01:00
parent d59fab9f17
commit d6e42edcc6
8 changed files with 56 additions and 2 deletions

View File

@ -712,6 +712,8 @@ PREFERENCES_PROFILESAVECACHE;Verarbeitungsparameter im Zwischenspeicher speicher
PREFERENCES_PROFILESAVEINPUT;Verarbeitungsparameter zusammen mit Datei speichern (Sidecar) PREFERENCES_PROFILESAVEINPUT;Verarbeitungsparameter zusammen mit Datei speichern (Sidecar)
PREFERENCES_PROPERTY;Eigenschaft PREFERENCES_PROPERTY;Eigenschaft
PREFERENCES_PSPATH;Adobe Photoshop Installationsverzeichnis PREFERENCES_PSPATH;Adobe Photoshop Installationsverzeichnis
PREFERENCES_RGBDTL_LABEL;Max. Anzahl Threads für Rauschminderung
PREFERENCES_RGBDTL_TOOLTIP;Die Rauschminderung benötigt mindestens 128MB RAM für ein 10 Megapixel-Bild oder 512MB für ein 40 Megapixel-Bild, und zusätzlich 128MB RAM pro Thread. Je mehr Threads parallel ablaufen, desto schneller ist die Berechnung. Bei Einstellung "0" werden so viele Threads wie möglich benutzt.
PREFERENCES_SELECTFONT;Schriftart PREFERENCES_SELECTFONT;Schriftart
PREFERENCES_SELECTICCDIRDLG;Wähle ICC-Profile-Verzeichnis... PREFERENCES_SELECTICCDIRDLG;Wähle ICC-Profile-Verzeichnis...
PREFERENCES_SELECTLANG;Sprache PREFERENCES_SELECTLANG;Sprache
@ -738,6 +740,7 @@ PREFERENCES_TAB_COLORMGR;Farbmanagement
PREFERENCES_TAB_GENERAL;Allgemein PREFERENCES_TAB_GENERAL;Allgemein
PREFERENCES_TAB_IMPROC;Bildbearbeitung PREFERENCES_TAB_IMPROC;Bildbearbeitung
PREFERENCES_TAB_OUTPUT;Ausgabe PREFERENCES_TAB_OUTPUT;Ausgabe
PREFERENCES_TAB_PERFORMANCE;Performance
PREFERENCES_TAB_SOUND;Systemklänge PREFERENCES_TAB_SOUND;Systemklänge
PREFERENCES_THUMBSIZE;Größe der Vorschau PREFERENCES_THUMBSIZE;Größe der Vorschau
PREFERENCES_TP_LABEL;Werkzeugbereich: PREFERENCES_TP_LABEL;Werkzeugbereich:

View File

@ -778,6 +778,8 @@ PREFERENCES_PROFILESAVECACHE;Enregistrer la paramètres de traitement dans le Ca
PREFERENCES_PROFILESAVEINPUT;Enregistrer la paramètres de traitement accolé au fichier d'entrée PREFERENCES_PROFILESAVEINPUT;Enregistrer la paramètres de traitement accolé au fichier d'entrée
PREFERENCES_PROPERTY;Propriété PREFERENCES_PROPERTY;Propriété
PREFERENCES_PSPATH;Dossier d'installation d'Adobe Photoshop PREFERENCES_PSPATH;Dossier d'installation d'Adobe Photoshop
PREFERENCES_RGBDTL_LABEL;Nombre maximum d'unités de calcul pour la Réduction du bruit
PREFERENCES_RGBDTL_TOOLTIP;La réduction du bruit nécessite un minimum d'à peu près 128Mo de RAM pour une image de 10MPix ou 512Mo pour une image de 40MPix, ainsi que 128Mo de RAM supplémentaire par unité de calcul. Plus il y aura d'unité de calcul travaillant en parallèle, plus ce sera rapide. Laissez la valeur à "0" pour utiliser automatiquement autant d'unité de calcul que possible.
PREFERENCES_SELECTFONT;Police de caractère PREFERENCES_SELECTFONT;Police de caractère
PREFERENCES_SELECTICCDIRDLG;Choix du dossier des profils ICC... PREFERENCES_SELECTICCDIRDLG;Choix du dossier des profils ICC...
PREFERENCES_SELECTLANG;Choix de la langue PREFERENCES_SELECTLANG;Choix de la langue
@ -804,6 +806,7 @@ PREFERENCES_TAB_COLORMGR;Gestion des couleurs
PREFERENCES_TAB_GENERAL;Général PREFERENCES_TAB_GENERAL;Général
PREFERENCES_TAB_IMPROC;Traitement de l'image PREFERENCES_TAB_IMPROC;Traitement de l'image
PREFERENCES_TAB_OUTPUT;Options de sortie PREFERENCES_TAB_OUTPUT;Options de sortie
PREFERENCES_TAB_PERFORMANCE;Performance
PREFERENCES_TAB_SOUND;Sons PREFERENCES_TAB_SOUND;Sons
PREFERENCES_THUMBSIZE;Tailles des vignettes PREFERENCES_THUMBSIZE;Tailles des vignettes
PREFERENCES_TP_LABEL;Panneau des outils: PREFERENCES_TP_LABEL;Panneau des outils:

View File

@ -774,6 +774,8 @@ PREFERENCES_PROFILESAVECACHE;Save processing profile to the cache
PREFERENCES_PROFILESAVEINPUT;Save processing profile next to the input file PREFERENCES_PROFILESAVEINPUT;Save processing profile next to the input file
PREFERENCES_PROPERTY;Property PREFERENCES_PROPERTY;Property
PREFERENCES_PSPATH;Adobe Photoshop installation directory PREFERENCES_PSPATH;Adobe Photoshop installation directory
PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction
PREFERENCES_RGBDTL_TOOLTIP;Noise Reduction requires a baseline of about 128MB RAM for a 10MPix image or 512MB for a 40MPix image, and additionally 128MB RAM per thread. The more threads run in parallel, the faster the computation. Leave the setting at "0" to automatically use as many threads as possible.
PREFERENCES_SELECTFONT;Select font PREFERENCES_SELECTFONT;Select font
PREFERENCES_SELECTICCDIRDLG;Select Color Profile Directory... PREFERENCES_SELECTICCDIRDLG;Select Color Profile Directory...
PREFERENCES_SELECTLANG;Select language PREFERENCES_SELECTLANG;Select language
@ -800,6 +802,7 @@ PREFERENCES_TAB_COLORMGR;Color Management
PREFERENCES_TAB_GENERAL;General PREFERENCES_TAB_GENERAL;General
PREFERENCES_TAB_IMPROC;Image Processing PREFERENCES_TAB_IMPROC;Image Processing
PREFERENCES_TAB_OUTPUT;Output Options PREFERENCES_TAB_OUTPUT;Output Options
PREFERENCES_TAB_PERFORMANCE;Performance
PREFERENCES_TAB_SOUND;Sounds PREFERENCES_TAB_SOUND;Sounds
PREFERENCES_THUMBSIZE;Thumbnail Size PREFERENCES_THUMBSIZE;Thumbnail Size
PREFERENCES_TP_LABEL;Tool panel: PREFERENCES_TP_LABEL;Tool panel:

View File

@ -227,7 +227,7 @@ namespace rtengine {
// Calculate number of tiles. If less than omp_get_max_threads(), then limit num_threads to number of tiles // Calculate number of tiles. If less than omp_get_max_threads(), then limit num_threads to number of tiles
int numtiles = numtiles_W * numtiles_H; int numtiles = numtiles_W * numtiles_H;
int numthreads = MIN(numtiles,omp_get_max_threads()); int numthreads = MIN(numtiles,omp_get_max_threads());
//if(options.RgbDenoiseThreadLimit > 0) numthreads = MIN(numthreads,options.RgbDenoiseThreadLimit); if(options.rgbDenoiseThreadLimit > 0) numthreads = MIN(numthreads,options.rgbDenoiseThreadLimit);
#pragma omp parallel num_threads(numthreads) #pragma omp parallel num_threads(numthreads)
#endif #endif
{ {

View File

@ -304,6 +304,8 @@ void Options::setDefaults () {
histogramBar = true; histogramBar = true;
histogramFullMode = false; histogramFullMode = false;
rgbDenoiseThreadLimit = 0;
showProfileSelector = true; showProfileSelector = true;
FileBrowserToolbarSingleRow = false; FileBrowserToolbarSingleRow = false;
hideTPVScrollbar = false; hideTPVScrollbar = false;
@ -603,6 +605,10 @@ if (keyFile.has_group ("Clipping Indication")) {
if (keyFile.has_key ("Clipping Indication", "BlinkClipped")) blinkClipped = keyFile.get_boolean ("Clipping Indication", "BlinkClipped"); if (keyFile.has_key ("Clipping Indication", "BlinkClipped")) blinkClipped = keyFile.get_boolean ("Clipping Indication", "BlinkClipped");
} }
if (keyFile.has_group ("Performance")) {
if (keyFile.has_key ("Performance", "RgbDenoiseThreadLimit")) rgbDenoiseThreadLimit = keyFile.get_integer ("Performance", "RgbDenoiseThreadLimit");
}
if (keyFile.has_group ("GUI")) { if (keyFile.has_group ("GUI")) {
if (keyFile.has_key ("GUI", "Font")) font = keyFile.get_string ("GUI", "Font"); if (keyFile.has_key ("GUI", "Font")) font = keyFile.get_string ("GUI", "Font");
if (keyFile.has_key ("GUI", "WindowWidth")) windowWidth = keyFile.get_integer ("GUI", "WindowWidth"); if (keyFile.has_key ("GUI", "WindowWidth")) windowWidth = keyFile.get_integer ("GUI", "WindowWidth");
@ -820,6 +826,8 @@ int Options::saveToFile (Glib::ustring fname) {
keyFile.set_integer ("Clipping Indication", "ShadowThreshold", shadowThreshold); keyFile.set_integer ("Clipping Indication", "ShadowThreshold", shadowThreshold);
keyFile.set_boolean ("Clipping Indication", "BlinkClipped", blinkClipped); keyFile.set_boolean ("Clipping Indication", "BlinkClipped", blinkClipped);
keyFile.set_integer ("Performance", "RgbDenoiseThreadLimit", rgbDenoiseThreadLimit);
keyFile.set_string ("Output", "Format", saveFormat.format); keyFile.set_string ("Output", "Format", saveFormat.format);
keyFile.set_integer ("Output", "JpegQuality", saveFormat.jpegQuality); keyFile.set_integer ("Output", "JpegQuality", saveFormat.jpegQuality);
keyFile.set_integer ("Output", "JpegSubSamp", saveFormat.jpegSubSamp); keyFile.set_integer ("Output", "JpegSubSamp", saveFormat.jpegSubSamp);

View File

@ -194,6 +194,9 @@ class Options {
bool UseIconNoText; bool UseIconNoText;
int whiteBalanceSpotSize; int whiteBalanceSpotSize;
// Performance options
int rgbDenoiseThreadLimit; // maximum number of threads for the denoising tool ; 0 = use the maximum available
bool menuGroupRank; bool menuGroupRank;
bool menuGroupLabel; bool menuGroupLabel;
bool menuGroupFileOperations; bool menuGroupFileOperations;

View File

@ -82,6 +82,7 @@ Preferences::Preferences (RTWindow *rtwindow):parent(rtwindow) {
nb->append_page (*getFileBrowserPanel(), M("PREFERENCES_TAB_BROWSER")); nb->append_page (*getFileBrowserPanel(), M("PREFERENCES_TAB_BROWSER"));
nb->append_page (*getColorManagementPanel(),M("PREFERENCES_TAB_COLORMGR")); nb->append_page (*getColorManagementPanel(),M("PREFERENCES_TAB_COLORMGR"));
nb->append_page (*getBatchProcPanel(), M("PREFERENCES_BATCH_PROCESSING")); nb->append_page (*getBatchProcPanel(), M("PREFERENCES_BATCH_PROCESSING"));
nb->append_page (*getPerformancePanel(), M("PREFERENCES_TAB_PERFORMANCE"));
// Sounds only on Windows and Linux // Sounds only on Windows and Linux
#if defined(WIN32) || defined(__linux__) #if defined(WIN32) || defined(__linux__)
nb->append_page (*getSoundPanel(), M("PREFERENCES_TAB_SOUND")); nb->append_page (*getSoundPanel(), M("PREFERENCES_TAB_SOUND"));
@ -395,6 +396,32 @@ Gtk::Widget* Preferences::getProcParamsPanel () {
return mvbpp; return mvbpp;
} }
Gtk::Widget* Preferences::getPerformancePanel () {
Gtk::VBox* mainContainer = Gtk::manage( new Gtk::VBox () );
mainContainer->set_spacing(4);
Gtk::HBox* threadLimitHB = Gtk::manage( new Gtk::HBox () );
threadLimitHB->set_border_width(4);
threadLimitHB->set_spacing(4);
threadLimitHB->set_tooltip_text(M("PREFERENCES_RGBDTL_TOOLTIP"));
Gtk::Label* RGBDTLl = Gtk::manage( new Gtk::Label (M("PREFERENCES_RGBDTL_LABEL") + ":", Gtk::ALIGN_LEFT));
rgbDenoiseTreadLimitSB = Gtk::manage( new Gtk::SpinButton () );
rgbDenoiseTreadLimitSB->set_digits (0);
rgbDenoiseTreadLimitSB->set_increments (1, 5);
rgbDenoiseTreadLimitSB->set_max_length(2); // Will this be sufficient? :)
int maxThreadNumber = 10;
#ifdef _OPENMP
maxThreadNumber = omp_get_max_threads();
#endif
rgbDenoiseTreadLimitSB->set_range (0, maxThreadNumber);
threadLimitHB->pack_start (*RGBDTLl, Gtk::PACK_SHRINK, 0);
threadLimitHB->pack_end (*rgbDenoiseTreadLimitSB, Gtk::PACK_SHRINK, 0);
mainContainer->pack_start(*threadLimitHB, Gtk::PACK_SHRINK, 4);
return mainContainer;
}
Gtk::Widget* Preferences::getColorManagementPanel () { Gtk::Widget* Preferences::getColorManagementPanel () {
Gtk::VBox* mvbcm = Gtk::manage (new Gtk::VBox ()); Gtk::VBox* mvbcm = Gtk::manage (new Gtk::VBox ());
@ -1134,6 +1161,8 @@ void Preferences::storePreferences () {
moptions.overwriteOutputFile = chOverwriteOutputFile->get_active (); moptions.overwriteOutputFile = chOverwriteOutputFile->get_active ();
moptions.UseIconNoText = ckbUseIconNoText->get_active(); moptions.UseIconNoText = ckbUseIconNoText->get_active();
moptions.rgbDenoiseThreadLimit = rgbDenoiseTreadLimitSB->get_value_as_int();
// Sounds only on Windows and Linux // Sounds only on Windows and Linux
#if defined(WIN32) || defined(__linux__) #if defined(WIN32) || defined(__linux__)
moptions.sndEnable = ckbSndEnable->get_active (); moptions.sndEnable = ckbSndEnable->get_active ();
@ -1250,6 +1279,8 @@ void Preferences::fillPreferences () {
ckbHideTPVScrollbar->set_active(moptions.hideTPVScrollbar); ckbHideTPVScrollbar->set_active(moptions.hideTPVScrollbar);
ckbUseIconNoText->set_active(moptions.UseIconNoText); ckbUseIconNoText->set_active(moptions.UseIconNoText);
rgbDenoiseTreadLimitSB->set_value(moptions.rgbDenoiseThreadLimit);
//darkFrameDir->set_filename( moptions.rtSettings.darkFramesPath ); //darkFrameDir->set_filename( moptions.rtSettings.darkFramesPath );
//updateDFinfos(); //updateDFinfos();
darkFrameDir->set_current_folder( moptions.rtSettings.darkFramesPath ); darkFrameDir->set_current_folder( moptions.rtSettings.darkFramesPath );

View File

@ -111,6 +111,8 @@ class Preferences : public Gtk::Dialog {
Gtk::Button* delExt; Gtk::Button* delExt;
Gtk::CheckButton* overlayedFileNames; Gtk::CheckButton* overlayedFileNames;
Gtk::SpinButton* rgbDenoiseTreadLimitSB;
Gtk::CheckButton* ckbmenuGroupRank; Gtk::CheckButton* ckbmenuGroupRank;
Gtk::CheckButton* ckbmenuGroupLabel; Gtk::CheckButton* ckbmenuGroupLabel;
Gtk::CheckButton* ckbmenuGroupFileOperations; Gtk::CheckButton* ckbmenuGroupFileOperations;
@ -172,6 +174,7 @@ class Preferences : public Gtk::Dialog {
Gtk::Widget* getFileBrowserPanel (); Gtk::Widget* getFileBrowserPanel ();
Gtk::Widget* getGeneralPanel (); Gtk::Widget* getGeneralPanel ();
Gtk::Widget* getBatchProcPanel (); Gtk::Widget* getBatchProcPanel ();
Gtk::Widget* getPerformancePanel ();
Gtk::Widget* getSoundPanel (); Gtk::Widget* getSoundPanel ();
public: public: