Skip to content

Gbts in throughput mt#1194

Open
m-brettell wants to merge 28 commits intoacts-project:mainfrom
m-brettell:gbts_in_throughput_mt
Open

Gbts in throughput mt#1194
m-brettell wants to merge 28 commits intoacts-project:mainfrom
m-brettell:gbts_in_throughput_mt

Conversation

@m-brettell
Copy link
Copy Markdown
Contributor

Adding the option to use GBTS in the full_chain_alg -> throughput_mt
Reads in the needed layer linking scheme configuration information from the file

Also adds placeholder configurations to other backends to keep the signature of full_chain_alg's constructor consistent between backends.

@m-brettell m-brettell force-pushed the gbts_in_throughput_mt branch 2 times, most recently from 9bd075a to 3a110a4 Compare November 21, 2025 10:44
@sonarqubecloud
Copy link
Copy Markdown

@stephenswat
Copy link
Copy Markdown
Member

@m-brettell what is the status of this PR? Can it be reviewed and merged?

@m-brettell m-brettell force-pushed the gbts_in_throughput_mt branch from 3a110a4 to 5ce1a1a Compare March 3, 2026 11:09
Copy link
Copy Markdown
Member

@krasznaa krasznaa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Making it possible to use GBTS in the throughput applications would indeed be super helpful. Please do go ahead with this development!

I would prefer to do it differently though. 🤔 Instead of modifying all the existing full chain algorithms, you should just introduce a new algorithm just for CUDA (traccc::cuda::full_chain_algorithm_gbts?). And then build a separate set of executables (traccc_throughput_st_cuda_gbts, traccc_throughput_mt_cuda_gbts) using that full chain algorithm.

Once every language has GBTS available, we could re-visit this. But for now I think this would work better. 🤔

@stephenswat
Copy link
Copy Markdown
Member

I would prefer to do it differently though. 🤔 Instead of modifying all the existing full chain algorithms, you should just introduce a new algorithm just for CUDA (traccc::cuda::full_chain_algorithm_gbts?). And then build a separate set of executables (traccc_throughput_st_cuda_gbts, traccc_throughput_mt_cuda_gbts) using that full chain algorithm.

What? 😕 I thought we agreed to reduce the number of executables, not increase it. Mark's approach is perfectly reasonable and a lot more maintainable than what you are suggesting.

@krasznaa
Copy link
Copy Markdown
Member

krasznaa commented Mar 4, 2026

What? 😕 I thought we agreed to reduce the number of executables, not increase it. Mark's approach is perfectly reasonable and a lot more maintainable than what you are suggesting.

I want to reduce the number of individual application source files. The throughput applications are very well synchronized in their code already. The new executables will need this code:

#include "../common/throughput_mt.hpp"

#include "full_chain_algorithm_gbts.hpp"

int main(int argc, char* argv[]) {

    // Execute the throughput test.
    return traccc::throughput_mt<traccc::cuda::full_chain_algorithm_gbts>(
        "Multi-threaded CUDA (GBTS) GPU throughput tests", argc, argv);
}

And:

#include "../common/throughput_st.hpp"

#include "full_chain_algorithm_gbts.hpp"

int main(int argc, char* argv[]) {

    // Execute the throughput test.
    return traccc::throughput_st<traccc::cuda::full_chain_algorithm_gbts>(
        "Single-threaded CUDA (GBTS) GPU throughput tests", argc, argv);
}

Please stop arguing with absolutely everything that I would suggest.

@stephenswat
Copy link
Copy Markdown
Member

I want to reduce the number of individual application source files. The throughput applications are very well synchronized in their code already. The new executables will need this code:

Yes, and to make that happen we'll need to make a duplicate of the full_chain_algorithm.cpp and full_chain_algorithm.hpp source files which total 450 lines of code per backend. 😛

Please stop arguing with absolutely everything that I would suggest.

I remind you that you are the one arguing with someone else's suggestion here. 😉

@flg flg force-pushed the gbts_in_throughput_mt branch from fa3ee41 to c803e17 Compare April 1, 2026 13:41
layerInfoFile >> type;
layerInfoFile >> info[0] >> info[1];
layerInfoFile >> geo[0] >> geo[1];
layerInfo.addLayer(type, info[0], info[1], geo[0], geo[1]);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will add type of ascii '0' and ascii '1', which have the int value of 48 and 49. Which as far as I can see it not intended.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added cast to fix, thanks.

@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud bot commented Apr 3, 2026

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.

4 participants