alpaka-group / bactria Goto Github PK
View Code? Open in Web Editor NEWBroadly Applicable C++ Tracing and Instrumentation API :camel:
Home Page: https://alpaka-group.github.io/bactria/
License: European Union Public License 1.2
Broadly Applicable C++ Tracing and Instrumentation API :camel:
Home Page: https://alpaka-group.github.io/bactria/
License: European Union Public License 1.2
Suggested by @bernhardmgruber. Overusing std::endl can lead to serious performance degradation.
This is currently missing. Thanks for @psychocoderHPC for bringing this up.
After #13 has been solved, we should provide a Score-P metrics plugin.
bactria currently doesn't provide any installation facilities, so users can only use it using CMake's add_subdirectory
command. This should change so find_package
works as well.
After the very interesting talk @ CASUS by @Techercise about roofline models for GPUs I now want something like this in bactria. Maybe it would be possible for certain backends to automatically generate a roofline plot for individual kernels; I'll need to read some literature...
bactria should have support for AMD's rocTX API.
The original design of bactria envisioned a single plugin that would provide all required functionality:
BACTRIA_PLUGIN=/path/to/plugin.so ./myapp
Since then, three orthogonal branches of functionality have evolved:
about:tracing
tool.It makes sense to split up this functionality into separate plugins:
BACTRIA_METRICS_PLUGIN
will support metrics collection by specialized backends.BACTRIA_RANGES_PLUGIN
will support tool visualization.BACTRIA_REPORT_PLUGIN
will support user-defined data.These should have no inter-dependencies or conflicts, so it should be entirely legal to do something like the following:
BACTRIA_METRICS_PLUGIN=/path/to/scorep-plugin.so \
BACTRIA_RANGES_PLUGIN=/path/to/nvtx-plugin.so \
BACTRIA_REPORT_PLUGIN=/path/to/mysql-plugin.so \
./myapp
Suggested by @bernhardmgruber. See the reasoning here: https://stackoverflow.com/questions/56601261/should-methods-returning-const-stdstring-return-const-stdstring-view-instea
After the building the project, I was a little bit surprised, that no plugin covers all three functions. If I look in project structure documentation, it makes sense, but a table would be better.
I think the table can be also a good place to note, which supported combinations are WIP/possible and what is not possible.
Depending on the used backend, the way how to measure and view profile and trace data changes. For example, an application, which is annotated with score-p does automatically generate a profile file, if it is executed. In contrast of it, the nvidia compiler needs to be called manually to profile an application, e.g. nsys -o trace.prof ./app --param foo && nsys-gui trace.prof
.
It would be really helpful to have a small get started guide for each backend, to know how to do a profile and view it.
I recently came across the need to profile sections inside a single CUDA kernel. We wanted to figure out which subpart of the kernel consumes how much time. In Bactria terms, that would mean that we could enter and leave phases and sectors inside CUDA device code.
Is such a feature planned or in scope of bactria?
After #13 has been solved, bactria should have a ranges plugin for NVIDIA's NVTX API.
Before we can release bactria 0.1 we need to provide better documentation and examples. This should be tackled once 0.1 is feature-complete.
Currently this only works on Linux (and maybe macOS). We still need a loader for Windows.
Since plugin-mixing will be allowed after #13 is solved it is a good idea to allow configuration for individual plugins (filtering, output files, ...). Initially, users should be able to configure plugins over the command line and configuration files. In a future step, we should investigate options for online access.
After #13 has been solved, we should provide a CUPTI metrics plugin.
Score-P allows for user-defined metrics to be included in the trace. We can take advantage of this by providing a reports plugin for bactria which communicates with the metrics plugin introduced by #19.
Found by @bernhardmgruber. Currently event
and phase
do not follow these rules, leading to a number of problems.
Suggested by @bernhardmgruber. Apparently this breaks name mangling on Windows systems.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.