Skip to content
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

cannot convert json_t* to char** in variorum connector, gcc 12.2.1 #273

Open
cwpearson opened this issue Sep 25, 2024 · 6 comments
Open

Comments

@cwpearson
Copy link
Contributor

ret = variorum_get_node_power_json(power_obj);

gcc 12.2.1 on rzadams

@masterleinad
Copy link
Contributor

Have you tried #265 with a recent variorum version?

@janciesko
Copy link

This is likely wrong and according to the example in https://variorum.readthedocs.io/en/latest/VariorumTools.html
this should be something like this:

diff --git a/profiling/variorum-connector/variorum-connector.cpp b/profiling/variorum-connector/variorum-connector.cpp
index 14c4431..5591800 100644
--- a/profiling/variorum-connector/variorum-connector.cpp
+++ b/profiling/variorum-connector/variorum-connector.cpp
@@ -89,15 +89,16 @@ bool mpiOutPut    = false;
 // value.
 std::string variorum_print_power_call() {
   std::string outputString;
-  json_t* power_obj = json_object();
+  char* s = NULL;
   double power_node, power_sock0, power_mem0, power_gpu0;
   double power_sock1, power_mem1, power_gpu1;
   int ret;
-  ret = variorum_get_node_power_json(power_obj);
+  ret = variorum_get_node_power_json(&s);
   if (ret != 0) {
     return "Print power failed!\n";
   }
   // total node measurment
+  json_t * power_obj = json_loads(s, JSON_DECODE_ANY, NULL);
   power_node = json_real_value(json_object_get(power_obj, "power_node"));
   const char* hostnameChar =
       json_string_value(json_object_get(power_obj, "hostname"));
@@ -142,14 +143,14 @@ std::string variorum_print_power_call() {
 // print json fails. No return value.
 char* variorum_json_call() {
   int ret;
-  json_t* my_power_obj = NULL;
-  my_power_obj         = json_object();
-  ret                  = variorum_get_node_power_json(my_power_obj);
+  char* s = NULL;
+  ret     = variorum_get_node_power_json(&s);
   if (ret != 0) {
     printf("First run: JSON get node power failed!\n");
   }
-  char* s = json_dumps(my_power_obj, 0);
-  return s;
+  json_t* my_power_obj = json_loads(s, JSON_DECODE_ANY, NULL);
+  char* s_dump = json_dumps(my_power_obj, 0);
+  return s_dump;
 }```

@masterleinad
Copy link
Contributor

Again, we rewrote this tool in #265.

@ndellingwood
Copy link
Contributor

ndellingwood commented Feb 3, 2025

I tried building kokkos-tools with gcc/10.3.0 and sha 2f784b3 and I'm seeing:

/ascldap/users/ndellin/kokkos-tools/profiling/variorum-connector/variorum-connector.cpp: In function 'void KokkosTools::VariorumConnector::variorum_call()':
/ascldap/users/ndellin/kokkos-tools/profiling/variorum-connector/variorum-connector.cpp:79:24: error: 'variorum_get_power_json' was not declared in this scope; did you mean 'variorum_get_node_power_json'?
   79 |   int variorum_error = variorum_get_power_json(&s);
      |                        ^~~~~~~~~~~~~~~~~~~~~~~
      |                        variorum_get_node_power_json

Is this related to issue? PR #265 was included in my repo clone. My build was a simple process:

cd kokkos-tools
cmake -B Build -DCMAKE_CXX_COMPILER=g++ .
cmake --build Build -j16

Edit: Variorum was found at /lib/cmake

ls /lib/cmake
variorum.cmake  VariorumConfig.cmake  VariorumConfigVersion.cmake  variorum-relwithdebinfo.cmake  variorum_setup_deps.cmake  variorum_setup_targets.cmake

@masterleinad
Copy link
Contributor

What variorum version are you using? The tool is only compatible with upstream versions right now.

@ndellingwood
Copy link
Contributor

set(PACKAGE_VERSION "0.5.0") according to VariorumConfigVersion.cmake

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

No branches or pull requests

4 participants