Hi All,it looks like the latest jt9 using OpenMP and multi-threaded FFTs along with Joe's recent re-factorings for performance seem to be approaching stability. If anyone wants to try them out on air with WSJT-X, the attached patch will allow WSJT-X to be built with them enabled.
Note that the patch enables a fairly lengthy FFT plan optimization and the first decode cycle may take a few minutes to complete, do not kill the program as the accumulated FFT wisdom is written out at the end of a session. Once the FFTW wisdom is saved there will be no further delays.
Testing here results in decodes that are so fast that it hardly seems worth looking fro any more performance improvements until we start getting 100's concurrent of QSOs per band. Impressive stuff!
Running on a quad-core Core i7 laptop here. 73 Bill G4WJS.
diff --git a/mainwindow.cpp b/mainwindow.cpp index 26658bd..5c26815 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -345,7 +345,7 @@ MainWindow::MainWindow(bool multiple, QSettings * settings, QSharedMemory *shdme { while(true) { - int iret=killbyname("jt9.exe"); + int iret=killbyname("jt9_omp.exe"); if(iret == 603) break; if(iret != 0) msgBox("KillByName return code: " + QString::number(iret)); @@ -375,14 +375,14 @@ MainWindow::MainWindow(bool multiple, QSettings * settings, QSharedMemory *shdme QStringList jt9_args { "-s", QApplication::applicationName () - , "-w", "1" //FFTW patience - , "-m", "1" //FFTW threads + , "-w", "2" //FFTW patience + , "-m", QString::number (qMax (QThread::idealThreadCount () - 2, 1)) //FFTW threads , "-e", QDir::toNativeSeparators (m_appDir) , "-a", QDir::toNativeSeparators (m_dataDir.absolutePath ()) , "-t", QDir::toNativeSeparators (m_config.temp_dir ().absolutePath ()) }; proc_jt9.start(QDir::toNativeSeparators (m_appDir) + QDir::separator () + - "jt9", jt9_args, QIODevice::ReadWrite | QIODevice::Unbuffered); + "jt9_omp", jt9_args, QIODevice::ReadWrite | QIODevice::Unbuffered); QString fname {QDir::toNativeSeparators(m_dataDir.absoluteFilePath ("wsjtx_wisdom.dat"))}; QByteArray cfname=fname.toLocal8Bit(); @@ -1321,7 +1321,7 @@ void MainWindow::decode() //decode() void MainWindow::jt9_error (QProcess::ProcessError e) { if(!m_killAll) { - msgBox("Error starting or running\n" + m_appDir + "/jt9 -s"); + msgBox("Error starting or running\n" + m_appDir + "/jt9_omp -s"); qDebug() << e; // silence compiler warning exit(1); }
------------------------------------------------------------------------------ Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________ wsjt-devel mailing list wsjt-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wsjt-devel