Re: [R-pkg-devel] Checking the number of cores used
20 сентября 2023 г. 8:27:31 UTC, Shu Fai Cheung пишет: >Third, the "testthat.Rout" file only shows the total time: > >> proc.time() > user system elapsed > 13.530 0.291 29.492 > >I believe the user time is not useful as we can use two processes in >testthat. How can we detect the use of more than two cores in the >tests? R could report CPU and elapsed tme for each test file in tests/*.R, but with testthat, it only sees tests/testthat.R, which isn't very useful. If you know R6, it should be possible to implement a CPUTimeReporter that would collect information about CPU and "wallclock" time taken by each individual test: https://testthat.r-lib.org/reference/Reporter.html It may be worth submitting a feature request for such a reporter. -- Best regards, Ivan __ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel
Re: [R-pkg-devel] Checking the number of cores used
Thanks for the suggestion. I will use rhub and a virtual machine to check again. I read some previous posts and I thought I need to check the times to see if there is any unintended usage of parallel processing, e.g., CPU time > 2 x elapsed time. May I ask a few questions on this part? This is from the "-Ex.Rout" file: > base::cat("Time elapsed: ", proc.time() - base::get("ptime", pos = > 'CheckExEnv'),"\n") Time elapsed: 14.94 0.27 15.26 NA NA First, is this something I can ignore, unless the CPU time is substantially larger than elapsed time? This is the total time but the parallel process may be triggered in only one of the many examples. Second, are the files "-Ex.timings", showing per-example timing, only available on some platforms? I could get it locally in Windows, and can find it in Winbuilder output. However, I could not find them in the rhub platforms I tried, not even in the Windows platform. I suppose adding "--as-cran" will also add "--timings"? Third, the "testthat.Rout" file only shows the total time: > proc.time() user system elapsed 13.530 0.291 29.492 I believe the user time is not useful as we can use two processes in testthat. How can we detect the use of more than two cores in the tests? Last, how can we detect the use of more than two cores in vignettes? I checked and couldn't find similar timing information on vignettes. Sorry for asking so many questions. I would like to have a reliable way to detect hidden use of parallel processing such that I can prevent the problem from happening. I have some ideas which package I imported is causing the problem but I have used it before without problem. Therefore, I would like to see if I overlooked anything. Regards, Shu Fai On Tue, Sep 19, 2023 at 5:02 PM Uwe Ligges wrote: > > > > On 18.09.2023 16:10, Shu Fai Cheung wrote: > > Hi All, > > > > I know we should not use more than 2 cores in tests, vignettes, etc. I > > encountered and solved this issue before. However, I still committed > > this mistake in a new package and would like find out where the cause > > is. > > > > I have a package that already has parallel processing disabled by > > default and I did not enable parallel processing in the examples and > > tests (except for one test, which is always skipped by skip()). > > However, I was told that somewhere in the package more than 2 cores > > are used. > > > > I checked several times and even added a temporary 'stop()` to "trap" > > parallel processing but still could not find where the source of the > > problem is. > > > > I checked the timing in the log in R CMD check results from winbuilder > > but everything seems OK. The user time and elapsed time are similar > > for all the examples. > > > > Is there any quick way to check where things go wrong regarding the > > number of cores? It is not easy to find the source of the problems > > when there are many examples and tests. > > If it is OK on winbuilder but not on Linux, then likely something makes > use of multithreading. > > Best, > Uwe Ligges > > > > > Regards, > > Shu Fai > > > > __ > > R-package-devel@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-package-devel __ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel
Re: [R-pkg-devel] Checking the number of cores used
Thanks a lot. I don't have a physical linux box and so I need to use rhub. But I don't know why there are no "-Ex.timings" files in the check. E.g, check(platform = "debian-gcc-release", show_status = FALSE, check_args = "--as-cran") I can only see these files in artifacts: [ ]00check.log2023-09-20 08:00 3.4K [ ]00install.out2023-09-20 08:00 702 [ ]Rdlatex.log2023-09-20 08:00 30K [ ]modelbpp-Ex.Rout2023-09-20 08:00 28K [ ]modelbpp-manual.log2023-09-20 08:00 19K The case is the same for this, no "-Ex.timings" files: check(platform = "windows-x86_64-release", show_status = FALSE, check_args = "--as-cran") Although I think I need to, I tried adding "--timings" but still do not see the "-Ex.timings". However, if I run the check locally in Windows 10 using R CMD check with --as-cran, I can find the "-Ex.timings" files. I can find the total time at the end of "-Ex.Rout" but I think this is not what I need: > base::cat("Time elapsed: ", proc.time() - base::get("ptime", pos = > 'CheckExEnv'),"\n") Time elapsed: 10.963 0.161 13.589 0.302 0.081 Regards, Shu Fai On Tue, Sep 19, 2023 at 5:59 PM Duncan Murdoch wrote: > > On 18/09/2023 10:10 a.m., Shu Fai Cheung wrote: > > Hi All, > > > > I know we should not use more than 2 cores in tests, vignettes, etc. I > > encountered and solved this issue before. However, I still committed > > this mistake in a new package and would like find out where the cause > > is. > > > > I have a package that already has parallel processing disabled by > > default and I did not enable parallel processing in the examples and > > tests (except for one test, which is always skipped by skip()). > > However, I was told that somewhere in the package more than 2 cores > > are used. > > > > I checked several times and even added a temporary 'stop()` to "trap" > > parallel processing but still could not find where the source of the > > problem is. > > > > I checked the timing in the log in R CMD check results from winbuilder > > but everything seems OK. The user time and elapsed time are similar > > for all the examples. > > > > Is there any quick way to check where things go wrong regarding the > > number of cores? It is not easy to find the source of the problems > > when there are many examples and tests. > > If you run R CMD check at the command line, it will produce a > directory *.Rcheck containing a number of files. One of those files > will be *-Ex.timings, which will give the individual timings of each of > the examples in your package. Maybe you can recognize from those which > of the examples are problematic ones, and add `proc.time()` calls to the > example to figure out which line(s) cause the issue. > > I don't remember whether winbuilder keeps the timings file when it runs > a check. > > Duncan Murdoch > __ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel
Re: [R-pkg-devel] Checking the number of cores used
Sorry, I missed the --as-cran option: you run R CMD check --as-cran Duncan Murdoch On 19/09/2023 5:59 a.m., Duncan Murdoch wrote: On 18/09/2023 10:10 a.m., Shu Fai Cheung wrote: Hi All, I know we should not use more than 2 cores in tests, vignettes, etc. I encountered and solved this issue before. However, I still committed this mistake in a new package and would like find out where the cause is. I have a package that already has parallel processing disabled by default and I did not enable parallel processing in the examples and tests (except for one test, which is always skipped by skip()). However, I was told that somewhere in the package more than 2 cores are used. I checked several times and even added a temporary 'stop()` to "trap" parallel processing but still could not find where the source of the problem is. I checked the timing in the log in R CMD check results from winbuilder but everything seems OK. The user time and elapsed time are similar for all the examples. Is there any quick way to check where things go wrong regarding the number of cores? It is not easy to find the source of the problems when there are many examples and tests. If you run R CMD check at the command line, it will produce a directory *.Rcheck containing a number of files. One of those files will be *-Ex.timings, which will give the individual timings of each of the examples in your package. Maybe you can recognize from those which of the examples are problematic ones, and add `proc.time()` calls to the example to figure out which line(s) cause the issue. I don't remember whether winbuilder keeps the timings file when it runs a check. Duncan Murdoch __ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel
Re: [R-pkg-devel] Checking the number of cores used
On 18/09/2023 10:10 a.m., Shu Fai Cheung wrote: Hi All, I know we should not use more than 2 cores in tests, vignettes, etc. I encountered and solved this issue before. However, I still committed this mistake in a new package and would like find out where the cause is. I have a package that already has parallel processing disabled by default and I did not enable parallel processing in the examples and tests (except for one test, which is always skipped by skip()). However, I was told that somewhere in the package more than 2 cores are used. I checked several times and even added a temporary 'stop()` to "trap" parallel processing but still could not find where the source of the problem is. I checked the timing in the log in R CMD check results from winbuilder but everything seems OK. The user time and elapsed time are similar for all the examples. Is there any quick way to check where things go wrong regarding the number of cores? It is not easy to find the source of the problems when there are many examples and tests. If you run R CMD check at the command line, it will produce a directory *.Rcheck containing a number of files. One of those files will be *-Ex.timings, which will give the individual timings of each of the examples in your package. Maybe you can recognize from those which of the examples are problematic ones, and add `proc.time()` calls to the example to figure out which line(s) cause the issue. I don't remember whether winbuilder keeps the timings file when it runs a check. Duncan Murdoch __ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel
Re: [R-pkg-devel] Checking the number of cores used
On 18.09.2023 16:10, Shu Fai Cheung wrote: Hi All, I know we should not use more than 2 cores in tests, vignettes, etc. I encountered and solved this issue before. However, I still committed this mistake in a new package and would like find out where the cause is. I have a package that already has parallel processing disabled by default and I did not enable parallel processing in the examples and tests (except for one test, which is always skipped by skip()). However, I was told that somewhere in the package more than 2 cores are used. I checked several times and even added a temporary 'stop()` to "trap" parallel processing but still could not find where the source of the problem is. I checked the timing in the log in R CMD check results from winbuilder but everything seems OK. The user time and elapsed time are similar for all the examples. Is there any quick way to check where things go wrong regarding the number of cores? It is not easy to find the source of the problems when there are many examples and tests. If it is OK on winbuilder but not on Linux, then likely something makes use of multithreading. Best, Uwe Ligges Regards, Shu Fai __ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel __ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel
[R-pkg-devel] Checking the number of cores used
Hi All, I know we should not use more than 2 cores in tests, vignettes, etc. I encountered and solved this issue before. However, I still committed this mistake in a new package and would like find out where the cause is. I have a package that already has parallel processing disabled by default and I did not enable parallel processing in the examples and tests (except for one test, which is always skipped by skip()). However, I was told that somewhere in the package more than 2 cores are used. I checked several times and even added a temporary 'stop()` to "trap" parallel processing but still could not find where the source of the problem is. I checked the timing in the log in R CMD check results from winbuilder but everything seems OK. The user time and elapsed time are similar for all the examples. Is there any quick way to check where things go wrong regarding the number of cores? It is not easy to find the source of the problems when there are many examples and tests. Regards, Shu Fai __ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel