This repository contains a minimal but complete example of a BOINC application that follows the BUDA framework conventions. It demonstrates key concepts including progress reporting, proper application structure, and cross-platform compatibility.
The application runs a simple simulation that:
- Executes a 10-step process with short delays
- Reports progress through the standard BOINC
fraction_donemechanism - Provides console output for monitoring
- Demonstrates proper BOINC application lifecycle
- Cross-platform compatibility: Builds on Linux (x64 and ARM64)
- Progress reporting: Uses BOINC's standard fraction_done file for progress tracking
- Minimal dependencies: Only requires standard C++ libraries
- Clean architecture: Follows BOINC application best practices
- Automated builds: GitHub Actions workflow for continuous integration
- CMake 3.16 or higher
- C++ compiler with C++11 support
- Make or compatible build system
# Create build directory
mkdir build
cd build
# Configure the project
cmake ..
# Build the application
make# Install cross-compilation tools (on Ubuntu/Debian)
sudo apt-get install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu
# Configure for ARM64
cmake -E env CC="aarch64-linux-gnu-gcc" CXX="aarch64-linux-gnu-g++" \
CFLAGS="-march=armv8-a" CXXFLAGS="-march=armv8-a" \
cmake -B build -S .
# Build
cmake --build build --config ReleaseExecute the built application:
./build/boinc-buda-appExpected output:
Running test...
1/10
2/10
...
10/10
Test completed.
The application will also create a fraction_done file containing the completion percentage (0.0 to 1.0).
The application demonstrates BOINC's standard progress reporting mechanism:
void fraction_done(double fraction) {
std::fstream outfile("fraction_done", std::ios::trunc | std::ios::out);
if(outfile.is_open()) {
outfile << fraction << std::endl;
outfile.close();
}
}This creates a file that BOINC clients read to track computational progress.
When extending this application:
- Maintain Progress Reporting: Always update fraction_done appropriately
- Handle Interruption: BOINC applications should handle graceful shutdown
- Minimize Output: Excessive console output can impact performance
- Cross-platform Code: Ensure compatibility across target platforms
- Resource Awareness: Be mindful of CPU, memory, and disk usage
This project is part of BOINC and is licensed under the GNU General Public License v3.0. See the LICENSE file for full details.
This is a sample application maintained by the BOINC project. For contributions or issues:
- Fork the repository
- Create a feature branch
- Submit a pull request with detailed description
- Ensure all CI checks pass
For questions about BOINC application development:
- Visit the BOINC Website
- Review existing BOINC Applications