Skip to content

Instantly share code, notes, and snippets.

@DavidPoliakoff
Last active October 5, 2021 21:11
Show Gist options
  • Save DavidPoliakoff/2e3c0ff13b4277c18371ab600a53b58e to your computer and use it in GitHub Desktop.
Save DavidPoliakoff/2e3c0ff13b4277c18371ab600a53b58e to your computer and use it in GitHub Desktop.
Writing the Tool Layer
function_pointer_that_takes_a_string begin_parallel_for_ptr;
function_pointer_that_takes_a_string end_parallel_for_ptr;
void initialize(std::string toolLibrary) {
void* handle = dlopen(toolLibrary);
begin_parallel_for_ptr = dlsym(handle, "kokkosp_begin_parallel_for");
end_parallel_for_ptr = dlsym(handle, "kokkosp_end_parallel_for");
}
void parallel_for(std::string label, boring_parallelism_stuff stuff) {
if(begin_parallel_for_ptr){
fence_kokkos(); // this is a _small_ lie
(*begin_parallel_for_ptr)(label);
}
// run boring parallel code here
if(end_parallel_for_ptr){
fence_kokkos(); // this is a _small_ lie
(*end_parallel_for_ptr)(label);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment