Giter Club home page Giter Club logo

bactria's People

Contributors

j-stephan avatar psychocoderhpc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

j-stephan fwyzard

bactria's Issues

Make bactria installable.

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.

Provide roofline functionality.

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...

Modularize bactria's functionality into different plugins.

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:

  1. Metrics collection. This is provided by libraries such as Score-P or CUPTI.
  2. Visualization. In some cases it is useful to annotate events / ranges in the code so that they will be highlighted in a profiler. Examples for this are NVTX ranges with the CUDA profiler or Chrome's about:tracing tool.
  3. User-defined data / metrics. Since the libraries mentioned in the first two points usually don't support this (or just to a very limited degree) bactria will allow the user to define their own events and save them in the format of their choice (CSV, JSON, a database...).

It makes sense to split up this functionality into separate plugins:

  1. BACTRIA_METRICS_PLUGIN will support metrics collection by specialized backends.
  2. BACTRIA_RANGES_PLUGIN will support tool visualization.
  3. 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

Documentation improvement: document terminal commands for the usage of the backends

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.

Profile inside CUDA kernel

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?

Improve documentation and examples.

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.

Allow plugin-specific configuration.

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.

Provide Score-P reports 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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.