Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[REVIEW]: GAIM: A C++ library for Genetic Algorithms and Island Models #1839

Closed
whedon opened this issue Oct 28, 2019 · 79 comments
Assignees
Labels

Comments

@whedon
Copy link
Collaborator

@whedon whedon commented Oct 28, 2019

Submitting author: @gdetor (Georgios Detorakis)
Repository: https://gitlab.com/gdetor/genetic_alg
Version: v1.0.0
Editor: @majensen
Reviewer: @sjvrijn, @sarats
Archive: 10.5281/zenodo.3558829

Status

status

Status badge code:

HTML: <a href="https://joss.theoj.org/papers/4f926d3765b775894675e812d4c3cb01"><img src="https://joss.theoj.org/papers/4f926d3765b775894675e812d4c3cb01/status.svg"></a>
Markdown: [![status](https://joss.theoj.org/papers/4f926d3765b775894675e812d4c3cb01/status.svg)](https://joss.theoj.org/papers/4f926d3765b775894675e812d4c3cb01)

Reviewers and authors:

Please avoid lengthy details of difficulties in the review thread. Instead, please create a new issue in the target repository and link to those issues (especially acceptance-blockers) by leaving comments in the review thread below. (For completists: if the target issue tracker is also on GitHub, linking the review thread in the issue or vice versa will create corresponding breadcrumb trails in the link target.)

Reviewer instructions & questions

@sjvrijn & @sarats, please carry out your review in this issue by updating the checklist below. If you cannot edit the checklist please:

  1. Make sure you're logged in to your GitHub account
  2. Be sure to accept the invite at this URL: https://github.com/openjournals/joss-reviews/invitations

The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @majensen know.

Please try and complete your review in the next two weeks

Review checklist for @sjvrijn

Conflict of interest

  • I confirm that I have read the JOSS conflict of interest (COI) policy and that: I have no COIs with reviewing this work or that any perceived COIs have been waived by JOSS for the purpose of this review.

Code of Conduct

General checks

  • Repository: Is the source code for this software available at the repository url?
  • License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
  • Contribution and authorship: Has the submitting author (@gdetor) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?

Functionality

  • Installation: Does installation proceed as outlined in the documentation?
  • Functionality: Have the functional claims of the software been confirmed?
  • Performance: If there are any performance claims of the software, have they been confirmed? (If there are no claims, please check off this item.)

Documentation

  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
  • Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
  • Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
  • Automated tests: Are there automated tests or manual steps described so that the functionality of the software can be verified?
  • Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

Software paper

  • Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?
  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • State of the field: Do the authors describe how this software compares to other commonly-used packages?
  • Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)?
  • References: Is the list of references complete, and is everything cited appropriately that should be cited (e.g., papers, datasets, software)? Do references in the text use the proper citation syntax?

Review checklist for @sarats

Conflict of interest

  • I confirm that I have read the JOSS conflict of interest (COI) policy and that: I have no COIs with reviewing this work or that any perceived COIs have been waived by JOSS for the purpose of this review.

Code of Conduct

General checks

  • Repository: Is the source code for this software available at the repository url?
  • License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
  • Contribution and authorship: Has the submitting author (@gdetor) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?

Functionality

  • Installation: Does installation proceed as outlined in the documentation?
  • Functionality: Have the functional claims of the software been confirmed?
  • Performance: If there are any performance claims of the software, have they been confirmed? (If there are no claims, please check off this item.)

Documentation

  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
  • Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
  • Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
  • Automated tests: Are there automated tests or manual steps described so that the functionality of the software can be verified?
  • Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

Software paper

  • Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?
  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • State of the field: Do the authors describe how this software compares to other commonly-used packages?
  • Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)?
  • References: Is the list of references complete, and is everything cited appropriately that should be cited (e.g., papers, datasets, software)? Do references in the text use the proper citation syntax?
@whedon

This comment has been minimized.

Copy link
Collaborator Author

@whedon whedon commented Oct 28, 2019

Hello human, I'm @whedon, a robot that can help you with some common editorial tasks. @sjvrijn, @sarats it looks like you're currently assigned to review this paper 🎉.

⭐️ Important ⭐️

If you haven't already, you should seriously consider unsubscribing from GitHub notifications for this (https://github.com/openjournals/joss-reviews) repository. As a reviewer, you're probably currently watching this repository which means for GitHub's default behaviour you will receive notifications (emails) for all reviews 😿

To fix this do the following two things:

  1. Set yourself as 'Not watching' https://github.com/openjournals/joss-reviews:

watching

  1. You may also like to change your default settings for this watching repositories in your GitHub profile here: https://github.com/settings/notifications

notifications

For a list of things I can do to help you, just type:

@whedon commands

For example, to regenerate the paper pdf after making changes in the paper's md or bib files, type:

@whedon generate pdf
@whedon

This comment has been minimized.

Copy link
Collaborator Author

@whedon whedon commented Oct 28, 2019

Attempting PDF compilation. Reticulating splines etc...
@whedon

This comment has been minimized.

Copy link
Collaborator Author

@whedon whedon commented Oct 28, 2019

@sarats

This comment has been minimized.

Copy link

@sarats sarats commented Nov 6, 2019

@gdetor Nice work. Having worked on a scalable parallel optimization framework myself, I agree with the motivation. Scaling island models is a challenging problem.

Figure 1 shows performance for various genome sizes. It is unclear if this uses MPI/threads. Please clarify.

As a performance specialist, I would have loved to see performance scaling plots for multiple MPI processes/threads to understand computational efficiency of the framework. This is not a binding requirement; just good-to-have information. Any data you can provide to demonstrate the parallel processing capability would be great.

@gdetor

This comment has been minimized.

Copy link

@gdetor gdetor commented Nov 7, 2019

@sarats Thank you for your comments. We will fix the issue you mentioned in Figure 1 and we will add some scaling plots.

@sjvrijn

This comment has been minimized.

Copy link

@sjvrijn sjvrijn commented Nov 11, 2019

@gdetor a few questions/remarks:

  • install.sh seems to be missing (see https://gitlab.com/gdetor/genetic_alg/issues/2)

  • I've tried to install the dependencies and run make, but even after installing libconfig++9v5 (as indicated in the dependency list) and libconfig-dev, I still get the following error message on Ubuntu 18.04.3 LTS:

Compiling src/selection.cpp
In file included from src/selection.cpp:26:0:
include/gaim.h:38:10: fatal error: libconfig.h++: No such file or directory
 #include <libconfig.h++>
          ^~~~~~~~~~~~~~~
  • In the paper, you mention the potential use-cases of parameter optimization. Do you have some default configurations to recommend to potential users when they want to use it in this context? Otherwise they have to tune the options and parameters for GAIM instead, i.e. simply trading one hyperparameter optimization problem for another.

  • For the configuration files, you give examples for each of the three sub-parts of the GA config section. Are those all possible options? If not, where can I find a total overview? If so, are any of them optional?

@gdetor

This comment has been minimized.

Copy link

@gdetor gdetor commented Nov 12, 2019

@sjvrijn Thank you for your comments/suggestions. We are going to add an installation file and address your comments. (bullets 3 and 4). For the time being the fix to your issue regarding libconfig is:
sudo apt install libconfig++9v5 libconfig++-dev

Let me know if you have any other issues regarding the installation of GAIM. The installation script will take care of all this in the future.

Best,
Georgios

@sjvrijn

This comment has been minimized.

Copy link

@sjvrijn sjvrijn commented Nov 15, 2019

@gdetor Thanks for adding the install.sh

Sadly, installing using install.sh fails on Ubuntu 16.04:

$ lsb_release -si && lsb_release -sr && ./install.sh
Ubuntu
16.04
========================================
Detecting the OS distro ...
========================================
========================================
Installing dependencies ... 
========================================
[sudo] password for rijnsjvan:            <-- Sudo password asked and accepted
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libopenmpi2   <-- libopenmpi1.10 is available and installed
========================================
Now compiling the standalone project ...
========================================
Cleaning objects
Cleaning binaries
Cleaning library
Compiling src/selection.cpp
In file included from src/selection.cpp:26:0:
include/gaim.h:38:25: fatal error: libconfig.h++: No such file or directory
compilation terminated.
Makefile:62: recipe for target 'build/selection.o' failed
make: *** [build/selection.o] Error 1

I can get further by manually installing the libconfig++ packages which installs some dependencies, although this leads to a bunch of new errors further on:

$ sudo apt-get install libconfig++9v5 libconfig++-dev 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libconfig-dev libconfig-doc libconfig9
The following NEW packages will be installed:
  libconfig++-dev libconfig++9v5 libconfig-dev libconfig-doc libconfig9
[...]
$ ./install.sh 
[...]
Compiling src/island_ga.cpp
Linking bin/main
In file included from /usr/include/c++/5/random:35:0,
                 from include/gaim.h:31,
                 from gaim/main.cpp:1:
/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
 #error This file requires compiler and library support \
  ^
In file included from gaim/main.cpp:1:0:
include/gaim.h:104:26: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
     bool is_im_enabled = false; /**< Boolean flag indicating if IM is enabled or not */
                          ^
include/gaim.h:241:38: error: ‘>>’ should be ‘> >’ within a nested template argument list
         std::map<int, std::vector<int>> adj_list;   /// Adjacent list of islands
                                      ^
include/gaim.h:314:6: error: ‘tuple’ in namespace ‘std’ does not name a template type
 std::tuple<ga_parameter_s, pr_parameter_s, im_parameter_s> read_parameters_file(const char *);
      ^
gaim/main.cpp: In function ‘int main()’:
gaim/main.cpp:4:5: error: ‘tuple’ is not a member of ‘std’
     std::tuple<ga_parameter_s, pr_parameter_s, im_parameter_s> pms;
     ^
gaim/main.cpp:4:30: error: expected primary-expression before ‘,’ token
     std::tuple<ga_parameter_s, pr_parameter_s, im_parameter_s> pms;
                              ^
gaim/main.cpp:4:46: error: expected primary-expression before ‘,’ token
     std::tuple<ga_parameter_s, pr_parameter_s, im_parameter_s> pms;
                                              ^
gaim/main.cpp:4:62: error: expected primary-expression before ‘>’ token
     std::tuple<ga_parameter_s, pr_parameter_s, im_parameter_s> pms;
                                                              ^
gaim/main.cpp:4:64: error: ‘pms’ was not declared in this scope
     std::tuple<ga_parameter_s, pr_parameter_s, im_parameter_s> pms;
                                                                ^
gaim/main.cpp:9:5: error: ‘tie’ is not a member of ‘std’
     std::tie(ga_pms, pr_pms, im_pms) = read_parameters_file("./examples/demo.cfg");
     ^
gaim/main.cpp:9:82: error: ‘read_parameters_file’ was not declared in this scope
     std::tie(ga_pms, pr_pms, im_pms) = read_parameters_file("./examples/demo.cfg");
                                                                                  ^
Makefile:49: recipe for target 'bin/main' failed
make: *** [bin/main] Error 1

My g++ version:

$ g++ --version
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609
@sjvrijn

This comment has been minimized.

Copy link

@sjvrijn sjvrijn commented Nov 15, 2019

@gdetor I also think there is a typo in install.sh:

rpms="g++ make openmpi libconfig libcongig-devel libconfig++-devel
                                       ^
@gdetor

This comment has been minimized.

Copy link

@gdetor gdetor commented Nov 15, 2019

@sjvrijn Regarding the linking errors you're getting. Try to replace the -std=c++0x instead of -std=c++11 in the Makefile (line 4) and let me know if that worked. The problem is essentially your gcc version (kind of old). Thank you also for spotting the typo in install.sh (fixed).

@sjvrijn

This comment has been minimized.

Copy link

@sjvrijn sjvrijn commented Nov 16, 2019

@gdetor I've tested again on a fresh install of Ubuntu 19.10. With a newer version (9.2.1) the g++ compiler is indeed no longer a problem, but the libconfig++ dependencies are still not installed properly by the install.sh script.

After running sudo apt install libconfig++9v5 libconfig++-dev manually, it does compile and work as intended.

Here is the console output of my install: (I had already used sudo apt install ... earlier in this same terminal session)

$ git clone https://gitlab.com/gdetor/genetic_alg.git
Cloning into 'genetic_alg'...
remote: Enumerating objects: 467, done.
remote: Counting objects: 100% (467/467), done.
remote: Compressing objects: 100% (210/210), done.
remote: Total 1294 (delta 287), reused 421 (delta 248)
Receiving objects: 100% (1294/1294), 1.41 MiB | 2.43 MiB/s, done.
Resolving deltas: 100% (693/693), done.

$ cd genetic_alg/

$ ./install.sh 
========================================
Detecting the OS distro ...
========================================
========================================
Installing dependencies ... 
========================================
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libopenmpi2
========================================
Now compiling the standalone project ...
========================================
Cleaning objects
Cleaning binaries
Cleaning library
Compiling src/selection.cpp
In file included from src/selection.cpp:26:
include/gaim.h:38:10: fatal error: libconfig.h++: No such file or directory
   38 | #include <libconfig.h++>
      |          ^~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:63: build/selection.o] Error 1

$ sudo apt install libconfig++9v5 libconfig++-dev 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libconfig-dev libconfig-doc libconfig9
The following NEW packages will be installed:
  libconfig++-dev libconfig++9v5 libconfig-dev libconfig-doc libconfig9
0 upgraded, 5 newly installed, 0 to remove and 3 not upgraded.
[... details omitted for brevity ...]

$ ./install.sh 
========================================
Detecting the OS distro ...
========================================
[... details omitted for brevity ...]
Linking bin/main

$
@sjvrijn

This comment has been minimized.

Copy link

@sjvrijn sjvrijn commented Nov 16, 2019

@gdetor Now I' ve been able to test it, I have a couple more remarks:

  • I would recommend changing print_best_genome = false; to true in examples/demo.cfg, as it now leads to an error when running the plot_results.py script:
    FileNotFoundError: [Errno 2] No such file or directory: './data/best_genome_0.dat'
  • Am I correct that the bounds a and b as given in the configuration file are only used for initialization? For example, if I invert the sphere function, the best found solution using demo.cfg is (164.7, 193.0), well outside the bounds of [-1, 1]
  • main_mpi_island_model.cpp is missing from the file-list in the 'More examples' section of the Readme
  • The mpi_island example also points to the regular demo.cfg file. Should that be demo_island_model.cfg instead?
  • Can you add calling examples for the mpi cases? I'm not too experienced with it and ran into some errors with the mpi_island:

Using demo_island_model.cfg and updated error message:

$ ./mpi_island 
Simulation: GA_demo_simulation

Number of Islands (3) mistmatches MPI rank size (1)!

$ mpirun -n 3 ./mpi_island 
make: 'mpi_island' is up to date.
Simulation: GA_demo_simulation

Simulation: GA_demo_simulation

Simulation: GA_demo_simulation

[host:13745] *** An error occurred in MPI_Dist_graph_create_adjacent invalid sources
[host:13745] *** reported by process [3954638849,2]
[host:13745] *** on communicator MPI_COMM_WORLD
[host:13745] *** MPI_ERR_ARG: invalid argument of some other kind
[host:13745] *** MPI_ERRORS_ARE_FATAL (processes in this communicator will now abort,
[host:13745] ***    and potentially your MPI job)

The independent runs version worked fine:

$ ./mpi_independent_runs 
Simulation: GA_demo_simulation

Writing the average fitness to a file.
Writing the BSF fitness to a file.

$ mpirun -n 3 ./mpi_independent_runs 
Simulation: GA_demo_simulation

Simulation: GA_demo_simulation

Simulation: GA_demo_simulation

Writing the average fitness to a file.
Writing the BSF fitness to a file.
Writing the average fitness to a file.
Writing the BSF fitness to a file.
Writing the average fitness to a file.
Writing the BSF fitness to a file.
@gdetor

This comment has been minimized.

Copy link

@gdetor gdetor commented Nov 16, 2019

@sjvrijn

  • We changed the print_best_genome to true by default.
  • The intervals are indeed used in the initialization process, however they can also be used by some mutation operators to keep genomes within a specific range.
  • We added the main_mpi_island_model.cpp in the file-list in the More Examples section
  • We kept the same configuration file to show that the user needs only one config file to operate the GAIM. We could create a new one with the name you suggest.
  • We can add some examples for the MPI cases as well.
  • The error you get when you run the mpi_island is related to the number of MPI processes you specify at the runtime. The number of MPI processes should match the number of islands specified in the xxxxx_graph.dat file. In the present case, you should use #mpirun -n 5 mpi_island.

We haven't yet pushed the abovementioned changes since we are still dealing with all reviewers' comments. We will let you once we push the new code.

@gdetor

This comment has been minimized.

Copy link

@gdetor gdetor commented Nov 20, 2019

@sjvrijn In reference to your previous comments that our last response did not yet address:

  1. No, we don't have recommended hyperparameter settings because we feel there aren't general purpose recommendations that everybody can agree upon -- as much as that would constitute an ideal state of affairs. Appropriate settings would be somewhat dependent on the objective and the computing budget available to the researcher.

  2. The only settings that have choices that are specifically named are
    candidate_immigrants_pickup_method and candidate_immigrants_replace_method.
    The README file has been updated to clarify there are three values for each of
    those settings (random, elit, poor) and explains a little about each of those settings. Other settings have somewhat intuitive bounds or are filepaths. There is more detail in the documentation. It also has been changed to reflect the fact that unused settings are not actually to be removed from the configuration file. Irrelevant settings will be ignored (in only that sense are they optional), and there are no further settings included at present that are absent in the examples (i.e. all the settings currently there are in the example).

  3. We added more details about manual installation and that the installation instructions pertain only to the installation of the dependencies. The examples section is introduced a little differently to emphasize the fact that the full example including the skeleton code is given at the end of that section, and that is where the library is compiled in the tutorial information. We recommend the manual installation because it is difficult to create a fully-automated installation script that covers all the available versions of even just the most common Linux distros.

@sjvrijn

This comment has been minimized.

Copy link

@sjvrijn sjvrijn commented Nov 21, 2019

@gdetor Thanks for the thorough updates and replies 👍 I have now been able to install and run all examples without any issues.

A final reply regarding the hyperparameter recommendations: I can completely understand your reason there, so I guess the demo configurations will have to suffice for anyone without too much knowledge about (island model) GA's 🙂

@majensen This concludes the review from my part.

@majensen

This comment has been minimized.

Copy link
Member

@majensen majensen commented Nov 22, 2019

@sjvrijn thanks very much - @sarats -- have your performance concerns been addressed (I see that this box is not yet checked in your review ) ?

@sarats

This comment has been minimized.

Copy link

@sarats sarats commented Nov 25, 2019

@whedon generate pdf

@whedon

This comment has been minimized.

Copy link
Collaborator Author

@whedon whedon commented Nov 25, 2019

Attempting PDF compilation. Reticulating splines etc...
@whedon

This comment has been minimized.

Copy link
Collaborator Author

@whedon whedon commented Nov 25, 2019

PDF failed to compile for issue #1839 with the following error:

/app/vendor/ruby-2.4.4/lib/ruby/2.4.0/psych.rb:377:in parse': (tmp/1839/paper.md): did not find expected alphabetic or numeric character while scanning an alias at line 18 column 11 (Psych::SyntaxError) from /app/vendor/ruby-2.4.4/lib/ruby/2.4.0/psych.rb:377:in parse_stream'
from /app/vendor/ruby-2.4.4/lib/ruby/2.4.0/psych.rb:325:in parse' from /app/vendor/ruby-2.4.4/lib/ruby/2.4.0/psych.rb:252:in load'
from /app/vendor/ruby-2.4.4/lib/ruby/2.4.0/psych.rb:473:in block in load_file' from /app/vendor/ruby-2.4.4/lib/ruby/2.4.0/psych.rb:472:in open'
from /app/vendor/ruby-2.4.4/lib/ruby/2.4.0/psych.rb:472:in load_file' from /app/vendor/bundle/ruby/2.4.0/bundler/gems/whedon-df8b50fe58b8/lib/whedon.rb:125:in load_yaml'
from /app/vendor/bundle/ruby/2.4.0/bundler/gems/whedon-df8b50fe58b8/lib/whedon.rb:85:in initialize' from /app/vendor/bundle/ruby/2.4.0/bundler/gems/whedon-df8b50fe58b8/lib/whedon/processor.rb:36:in new'
from /app/vendor/bundle/ruby/2.4.0/bundler/gems/whedon-df8b50fe58b8/lib/whedon/processor.rb:36:in set_paper' from /app/vendor/bundle/ruby/2.4.0/bundler/gems/whedon-df8b50fe58b8/bin/whedon:55:in prepare'
from /app/vendor/bundle/ruby/2.4.0/gems/thor-0.20.3/lib/thor/command.rb:27:in run' from /app/vendor/bundle/ruby/2.4.0/gems/thor-0.20.3/lib/thor/invocation.rb:126:in invoke_command'
from /app/vendor/bundle/ruby/2.4.0/gems/thor-0.20.3/lib/thor.rb:387:in dispatch' from /app/vendor/bundle/ruby/2.4.0/gems/thor-0.20.3/lib/thor/base.rb:466:in start'
from /app/vendor/bundle/ruby/2.4.0/bundler/gems/whedon-df8b50fe58b8/bin/whedon:116:in <top (required)>' from /app/vendor/bundle/ruby/2.4.0/bin/whedon:23:in load'
from /app/vendor/bundle/ruby/2.4.0/bin/whedon:23:in `

'

@gdetor

This comment has been minimized.

Copy link

@gdetor gdetor commented Nov 25, 2019

@sarats We fixed the problem with the current figure and we added three more figures indicating the performance for both the Island Model using POSIX threads and MPI processes. We tested different population sizes and different number of threads/proccesses.

@sarats

This comment has been minimized.

Copy link

@sarats sarats commented Nov 25, 2019

@whedon generate pdf

@whedon

This comment has been minimized.

Copy link
Collaborator Author

@whedon whedon commented Nov 25, 2019

Attempting PDF compilation. Reticulating splines etc...
@whedon

This comment has been minimized.

Copy link
Collaborator Author

@whedon whedon commented Nov 25, 2019

@sarats

This comment has been minimized.

Copy link

@sarats sarats commented Nov 26, 2019

Thanks @gdetor for including detailed performance analysis.
Just a couple of minor suggestions below.

  • The x-axis label for sub-figures B and C is better off as Number of Threads/Tasks for clarity.
  • In sub-figure B: It's a bit surprising to see that much overhead with OpenMPI vs. POSIX threads, perhaps the MPI implementation needs tuning.

@majensen This is good to go from my end.

@gdetor

This comment has been minimized.

Copy link

@gdetor gdetor commented Nov 26, 2019

@sarats Thank you for the comments. The problem was that the optimization flags were disabled for the MPI. We are going to correct the figure.

@whedon

This comment has been minimized.

Copy link
Collaborator Author

@whedon whedon commented Dec 1, 2019

PDF failed to compile for issue #1839 with the following error:

Error producing PDF.
! Argument of \caption@ydblarg has an extra }.

\par
l.473 test function.}

Looks like we failed to compile the PDF

@majensen

This comment has been minimized.

Copy link
Member

@majensen majensen commented Dec 1, 2019

@gdetor uhoh - there is a problem with pdf compile that must be due to that link for the Schwefel fn. I should have checked the proof before. Could you have a look-- maybe we can simply include the url in parens without making it a hyperlink.
Apologies for that

Edit- I have updated the paper in my fork to remove the hyperlink in the markdown and just put the url in parens. This compiles fine for me locally, and is clickable in the resulting pdf. There is an open merge request that should include this change -- the commit is at https://gitlab.com/majensen1/genetic_alg/commit/aed1cec31a2ce88bde1b95a68b94390d17849f93

@majensen

This comment has been minimized.

Copy link
Member

@majensen majensen commented Dec 1, 2019

@openjournals/joss-eics please stand by until the compile issue in #1839 (comment) is fixed - thanks

@gdetor

This comment has been minimized.

Copy link

@gdetor gdetor commented Dec 2, 2019

Hi, @majensen The link has been fixed as you indicated. It should be fine now.

@majensen

This comment has been minimized.

Copy link
Member

@majensen majensen commented Dec 2, 2019

@whedon generate pdf

@whedon

This comment has been minimized.

Copy link
Collaborator Author

@whedon whedon commented Dec 2, 2019

Attempting PDF compilation. Reticulating splines etc...
@whedon

This comment has been minimized.

Copy link
Collaborator Author

@whedon whedon commented Dec 2, 2019

@majensen

This comment has been minimized.

Copy link
Member

@majensen majensen commented Dec 2, 2019

@openjournals/joss-eics, proof issues have been resolved. Please begin final check for publication. Thanks!

@danielskatz

This comment has been minimized.

Copy link

@danielskatz danielskatz commented Dec 2, 2019

👋 @gdetor - I will shortly generate some PRs for the paper and bib - please merge them or let me know what you don't agree with...

@danielskatz

This comment has been minimized.

@danielskatz

This comment has been minimized.

@gdetor

This comment has been minimized.

Copy link

@gdetor gdetor commented Dec 2, 2019

Hi, @danielskatz We merged the PRs you made. Thank you.

@danielskatz

This comment has been minimized.

Copy link

@danielskatz danielskatz commented Dec 2, 2019

@whedon generate pdf

@whedon

This comment has been minimized.

Copy link
Collaborator Author

@whedon whedon commented Dec 2, 2019

Attempting PDF compilation. Reticulating splines etc...
@whedon

This comment has been minimized.

Copy link
Collaborator Author

@whedon whedon commented Dec 2, 2019

@danielskatz

This comment has been minimized.

Copy link

@danielskatz danielskatz commented Dec 2, 2019

@whedon accept

@whedon

This comment has been minimized.

Copy link
Collaborator Author

@whedon whedon commented Dec 2, 2019

Attempting dry run of processing paper acceptance...
@whedon

This comment has been minimized.

Copy link
Collaborator Author

@whedon whedon commented Dec 2, 2019


OK DOIs

- 10.1038/s42256-018-0006-z is OK
- 10.1007/s00500-007-0172-0 is OK

MISSING DOIs

- None

INVALID DOIs

- None
@whedon

This comment has been minimized.

Copy link
Collaborator Author

@whedon whedon commented Dec 2, 2019

Check final proof 👉 openjournals/joss-papers#1144

If the paper PDF and Crossref deposit XML look good in openjournals/joss-papers#1144, then you can now move forward with accepting the submission by compiling again with the flag deposit=true e.g.

@whedon accept deposit=true
@danielskatz

This comment has been minimized.

Copy link

@danielskatz danielskatz commented Dec 2, 2019

👋 @gdetor - please update the title metadata in the zenodo archive to match the title of the paper

@gdetor

This comment has been minimized.

Copy link

@gdetor gdetor commented Dec 2, 2019

@danielskatz The title has been updated.

@danielskatz

This comment has been minimized.

Copy link

@danielskatz danielskatz commented Dec 2, 2019

@whedon accept deposit=true

@whedon whedon added the accepted label Dec 2, 2019
@whedon

This comment has been minimized.

Copy link
Collaborator Author

@whedon whedon commented Dec 2, 2019

Doing it live! Attempting automated processing of paper acceptance...
@whedon

This comment has been minimized.

Copy link
Collaborator Author

@whedon whedon commented Dec 2, 2019

🐦🐦🐦 👉 Tweet for this paper 👈 🐦🐦🐦

@whedon

This comment has been minimized.

Copy link
Collaborator Author

@whedon whedon commented Dec 2, 2019

🚨🚨🚨 THIS IS NOT A DRILL, YOU HAVE JUST ACCEPTED A PAPER INTO JOSS! 🚨🚨🚨

Here's what you must now do:

  1. Check final PDF and Crossref metadata that was deposited 👉 openjournals/joss-papers#1145
  2. Wait a couple of minutes to verify that the paper DOI resolves https://doi.org/10.21105/joss.01839
  3. If everything looks good, then close this review issue.
  4. Party like you just published a paper! 🎉🌈🦄💃👻🤘

Any issues? notify your editorial technical team...

@danielskatz

This comment has been minimized.

Copy link

@danielskatz danielskatz commented Dec 2, 2019

Thanks to @sjvrijn & @sarats for reviewing and @majensen for editing!
And congratulations to @gdetor (and co-author)!

@danielskatz danielskatz closed this Dec 2, 2019
@whedon

This comment has been minimized.

Copy link
Collaborator Author

@whedon whedon commented Dec 2, 2019

🎉🎉🎉 Congratulations on your paper acceptance! 🎉🎉🎉

If you would like to include a link to your paper from your README use the following code snippets:

Markdown:
[![DOI](https://joss.theoj.org/papers/10.21105/joss.01839/status.svg)](https://doi.org/10.21105/joss.01839)

HTML:
<a style="border-width:0" href="https://doi.org/10.21105/joss.01839">
  <img src="https://joss.theoj.org/papers/10.21105/joss.01839/status.svg" alt="DOI badge" >
</a>

reStructuredText:
.. image:: https://joss.theoj.org/papers/10.21105/joss.01839/status.svg
   :target: https://doi.org/10.21105/joss.01839

This is how it will look in your documentation:

DOI

We need your help!

Journal of Open Source Software is a community-run journal and relies upon volunteer effort. If you'd like to support us please consider doing either one (or both) of the the following:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
6 participants
You can’t perform that action at this time.