-
Notifications
You must be signed in to change notification settings - Fork 128
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
extended values example to show some current bugs with string processing #4050
base: master
Are you sure you want to change the base?
Conversation
With BP5. bpls works as expected:
Relevant output of adios2_basics_valuesRead (and adios2_basics_valuesReadRandom).
|
With BP4, bpls output is identical to BP5.
|
@vicentebolea Could we have adios2::core target available during the adios build too? External codes have to use adios2::core when trying to use adios2::helper functions. During the adios build, adios2_core is available as a target but then that is not available in an external build. |
@pnorbert do you mean if we can export the adios2::core target, so projects doing find_package(adios2) can have that target ? |
The opposite. Projects can use adios2::core once they find_package(adios2). They cannot use adios2_core as target. However, when building adios itself, the examples have no access to adios2::core yet, but they can use adios2_core for some reason. More on that, I see cmake files having
I don't know what the latter is trying to achieve. |
Actually, it would be simpler if the adios2::cxx11 adios2::cxx11_mpi targets would already add libadios2_core.so to the linker line. We have been installing all the headers to include/adios2 for a while to give access to plugins (and users) to use all the internal adios functions. But then we need to go through this extra step to be able to link the code. |
This already is the case adios2::core is its private dependency. |
This was needed for having the tests being buildable in our build tree and also being able to build as standalone projects. (So users can refer to these cmakelists.txt when trying adios) |
Now I understand the question, Well we could but this is a common pattern in cmake projects, it makes a clear divison of internal and external targets, this will be an expensive change. Why do you need this? |
…y every proces. It shows up as 1D array of strings that can be read back easily into a vector<string> in C++. It also shows problems with the two possible block-by-block access, through metadata (AllStepsBlocksInfo), or through SetBlockSelection. One of them is always retrieving the first block. GlobalStringEveryoneWrites is another string variable, declared as global value, yet written by every process. These can only be accessed by block-by-block methods, and again, one of them is wrong. Which one is wrong, depends on using BP4 or BP5. use adios2::core in external build mode, use adios2_core in internal build mode to get access to adios2::helper functions
LocalString
is a stringLocalValue
written by every process. It shows up as 1D array of strings that can be read back easily into a vector in C++.However, it shows problems with the two possible block-by-block access, through metadata (
AllStepsBlocksInfo
), or throughSetBlockSelection
. One of them is always retrieving the first block.GlobalStringEveryoneWrites
is another string variable, declared as global value, yet written by every process. These can only be accessed by block-by-block methods, and again, one of them is wrong. Which one is wrong, depends on using BP4 or BP5.