Skip to content

extensive update to TBB functionality to extend/fix (replaces PR #171)#209

Open
paciorek wants to merge 60 commits into
mainfrom
tbb-rebase-on-main
Open

extensive update to TBB functionality to extend/fix (replaces PR #171)#209
paciorek wants to merge 60 commits into
mainfrom
tbb-rebase-on-main

Conversation

@paciorek

@paciorek paciorek commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

This includes a large body of work to flesh out TBB functionality. Since tbb branch had diverged a lot from main and a test merge was crazily messy, I did a rebase.

I also then manually merged in the work on the issue of nested calls to setting the number of TBB threads (issue #152 , PR #178 which became PR #188, both now closed).

paciorek and others added 30 commits March 11, 2026 10:18
- handling user-defined reduction functions
- error-trapping non-user defined invalid reduction functions
- setting default init values
- fixing up handling of inf and negative init values
- allowing a user to specify the reduction fun as char or actual function.
…ts are contained in private, and packaged names can be managed (#125)

* initial redesign of nClass to hold a private Cpublic_obj and use it by active bindings

* Add basic nClass_uncompiled tests

* major work towards redesigning nClass generation and hierarchy

* fix C++ handling (Exporter and generic interface set) of new nClass structure

* close to finished with updated class naming issues within packages

* updated tests after new packingNames and nCompile naming schemes

* update predefineds. fix nimbleModels. fix package class generation with R fields.

* fix StridedTensorMap operator() for single index

* fix cpp_tests crash

* test trials

* give each case in test-argumentPassing unique package naming

* Fix test-tensorCreation for old style
Also handle missing shareVars or copyVars args.
Also handle use of external object in parallel_for.
parallel_loop_body cases a unique ID.
This addresses problems with different parfors in different methods of a class.
- allow multiple parallel_reduce operations
- handle local method as the reduction operator.
- use without assignment or in return()
- use in return()
- multiple calls to parallel_reduce at same level of AST.
Start on setting number of threads.
Finalize parallel_reduce tests.
Put counting into class constructor/destructor.
- handling user-defined reduction functions
- error-trapping non-user defined invalid reduction functions
- setting default init values
- fixing up handling of inf and negative init values
- allowing a user to specify the reduction fun as char or actual function.
paciorek added 22 commits July 13, 2026 12:23
Also handle use of external object in parallel_for.
parallel_loop_body cases a unique ID.
This addresses problems with different parfors in different methods of a class.
- allow multiple parallel_reduce operations
- handle local method as the reduction operator.
- use without assignment or in return()
- use in return()
- multiple calls to parallel_reduce at same level of AST.
Start on setting number of threads.
Finalize parallel_reduce tests.
This passes `*this` as is also done when a member method is used without `self`.
It also flags if `self` is used in the body by replacing with `liftedSelf` and
modifying C++ generation to use `obj__.` instead of `(this)->`.
@paciorek

Copy link
Copy Markdown
Contributor Author

When we merge this in, I'll point @perrydv to the comments/questions noted in (defunct) PR #188 about the implementation of the nested TBB calls.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants