CUDA Version 12.0 causing compiler error with TProcessExecutor::Map


ROOT Version: Occurs on both 6.24.02 and 6.26.00
Platform: Ubuntu 22.04
Compiler: Occurs on both GCC 9.5 and GCC 11.3


Hi all,

I’m running into what I consider to be a very strange issue. I have some software I developed a couple of years ago, which makes use of ROOT, and has compiled succesfully on various Linux platforms. I noticed that on a new computer, the compiler threw an error:

>/usr/local/etc/root-6.26.00_install/include/ROOT/TExecutorCRTP.hxx:191:1: error: no declaration matches ‘std::vector<typename std::result_of<F(INTEGER)>::type> ROOT::TExecutorCRTP<SubC>::Map(F, ROOT::TSeq<INTEGER>)’
   191 | auto TExecutorCRTP<SubC>::Map(F func, ROOT::TSeq<INTEGER> args) -> std::vector<typename std::result_of<F(INTEGER)>::type>
....
"Error: no matching function for call to ‘ROOT::TProcessExecutor::Map(SuperTrackManager::Run()::<lambda(ThreadAllocation)>&, std::vector<ThreadAllocation>&)’"

As part of troubleshooting, I tested older verions of ROOT and of GCC which the software had succesfully compiled with in the past but received the same result. Only when I reverted my version of CUDA from 12.0 to 11.5, did the compiler error above go away. The application I am compiling does make use of CUDA, but I can’t imagine why changing the version of CUDA would affect a compiler error related to TProcessExecutor. Also, ROOT itself was compiled with CUDA 12.0, so it’s not a CUDA version mismatch issue.

I would really appreciate any insight as to what might be happening here,

Best,

Joseph

Indeed it looks like a wierd issue. The error message would suggest that TExecutorCRTP is called wrongly but you say it works in some different context. I am not sure who can help you with that. May be @Axel or @bellenot have an idea.

Hi @JDecunha,

This somehow rings a bell on me; I have seen/read it recently (in the last year or so). Let me try to dig a bit to see what I can find.

Cheers,
J.

Thanks for looking into it @jalopezg!

@JDecunha could you share the compiler invocation leading to this error message, more of the build context (ideally the complete log), and your CMakeCache.txt? That might help @jalopezg

@Axel, @jalopezg,

Absolutely.

The compiler is invoked by calling “cmake ..” and then “make” from within a build folder of the project directory. I have attached the output generated by calling “cmake ..” in the file cmakeLog.txt and the output that follows calling “make” in the file makeLog.txt. The salient part of the compilation errors begins on line 79 of makeLog.txt. The warnings which exist prior to that have all existed previously and have not hindered compilation of the software.

Regarding, the CMakeCache. Were you interested in the CMakeCache for this project, or the CMakeCache of my ROOT installation?

Thank you again,

Joseph

cmakeLog.txt (1.2 KB)
makeLog.txt (54.1 KB)
CMakeCache.txt (27.3 KB)

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.

FWIW, this is the GitHub issue (originally) used to track the problem: TExecutorCRTP and TSequentialExecutor errors when building application with CUDA 11.6+ · Issue #11511 · root-project/root · GitHub.

Cheers,
J.

1 Like