245 líneas
8.8 KiB
Makefile
245 líneas
8.8 KiB
Makefile
# HDH Deployment Example - Makefile
|
|
# Automation for building, testing, and deploying HDH examples
|
|
# Special thanks to Maria Gragera Garces for the HDH library!
|
|
|
|
.PHONY: help install test clean run benchmark docker docker-build docker-run lint format docs
|
|
|
|
# Default target
|
|
.DEFAULT_GOAL := help
|
|
|
|
# Variables
|
|
PYTHON := python3
|
|
PIP := pip3
|
|
DOCKER_IMAGE := hdh-deployment
|
|
DOCKER_TAG := latest
|
|
OUTPUT_DIR := hdh_results
|
|
BENCHMARK_DIR := benchmark_results
|
|
|
|
# Colors for output
|
|
BLUE := \033[36m
|
|
GREEN := \033[32m
|
|
YELLOW := \033[33m
|
|
RED := \033[31m
|
|
NC := \033[0m # No Color
|
|
|
|
help: ## Show this help message
|
|
@echo "$(BLUE)HDH Deployment Example - Makefile$(NC)"
|
|
@echo "$(YELLOW)Special thanks to Maria Gragera Garces for the HDH library!$(NC)"
|
|
@echo ""
|
|
@echo "Available targets:"
|
|
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " $(GREEN)%-15s$(NC) %s\n", $$1, $$2}' $(MAKEFILE_LIST)
|
|
|
|
install: ## Install dependencies and HDH library
|
|
@echo "$(BLUE)Installing dependencies...$(NC)"
|
|
$(PIP) install -r requirements.txt
|
|
@echo "$(BLUE)Installing HDH library in development mode...$(NC)"
|
|
$(PIP) install -e ../HDH
|
|
@echo "$(GREEN)Installation completed!$(NC)"
|
|
|
|
install-dev: ## Install development dependencies
|
|
@echo "$(BLUE)Installing development dependencies...$(NC)"
|
|
$(PIP) install -r requirements.txt
|
|
$(PIP) install -e ".[dev]"
|
|
$(PIP) install -e ../HDH
|
|
@echo "$(GREEN)Development installation completed!$(NC)"
|
|
|
|
test: ## Run tests
|
|
@echo "$(BLUE)Running tests...$(NC)"
|
|
$(PYTHON) -m pytest tests/ -v
|
|
@echo "$(GREEN)Tests completed!$(NC)"
|
|
|
|
clean: ## Clean up generated files and directories
|
|
@echo "$(BLUE)Cleaning up...$(NC)"
|
|
rm -rf $(OUTPUT_DIR)
|
|
rm -rf $(BENCHMARK_DIR)
|
|
rm -rf qasm_examples
|
|
rm -rf logs
|
|
rm -rf __pycache__
|
|
rm -rf .pytest_cache
|
|
rm -rf *.egg-info
|
|
find . -name "*.pyc" -delete
|
|
find . -name "*.pyo" -delete
|
|
find . -name "__pycache__" -type d -exec rm -rf {} +
|
|
@echo "$(GREEN)Cleanup completed!$(NC)"
|
|
|
|
run: ## Run the main deployment example
|
|
@echo "$(BLUE)Running HDH deployment example...$(NC)"
|
|
$(PYTHON) main.py --demo-mode --output-dir $(OUTPUT_DIR)
|
|
@echo "$(GREEN)Deployment example completed!$(NC)"
|
|
|
|
run-cli: ## Run the interactive CLI
|
|
@echo "$(BLUE)Starting HDH CLI...$(NC)"
|
|
$(PYTHON) cli.py
|
|
|
|
benchmark: ## Run performance benchmarks
|
|
@echo "$(BLUE)Running performance benchmarks...$(NC)"
|
|
$(PYTHON) benchmark.py --suite all --repetitions 3 --output-dir $(BENCHMARK_DIR)
|
|
@echo "$(GREEN)Benchmarks completed!$(NC)"
|
|
|
|
benchmark-quick: ## Run quick benchmarks (fewer repetitions)
|
|
@echo "$(BLUE)Running quick benchmarks...$(NC)"
|
|
$(PYTHON) benchmark.py --suite algorithms --repetitions 1 --output-dir $(BENCHMARK_DIR)
|
|
@echo "$(GREEN)Quick benchmarks completed!$(NC)"
|
|
|
|
examples: ## Generate circuit examples and QASM files
|
|
@echo "$(BLUE)Generating circuit examples...$(NC)"
|
|
$(PYTHON) circuit_examples.py
|
|
@echo "$(GREEN)Examples generated!$(NC)"
|
|
|
|
validate: ## Validate HDH environment
|
|
@echo "$(BLUE)Validating HDH environment...$(NC)"
|
|
$(PYTHON) utils.py
|
|
@echo "$(GREEN)Validation completed!$(NC)"
|
|
|
|
lint: ## Run code linting
|
|
@echo "$(BLUE)Running linting...$(NC)"
|
|
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
|
|
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
|
|
@echo "$(GREEN)Linting completed!$(NC)"
|
|
|
|
format: ## Format code with black and isort
|
|
@echo "$(BLUE)Formatting code...$(NC)"
|
|
black .
|
|
isort .
|
|
@echo "$(GREEN)Code formatting completed!$(NC)"
|
|
|
|
type-check: ## Run type checking with mypy
|
|
@echo "$(BLUE)Running type checking...$(NC)"
|
|
mypy . --ignore-missing-imports
|
|
@echo "$(GREEN)Type checking completed!$(NC)"
|
|
|
|
# Docker targets
|
|
docker-build: ## Build Docker image
|
|
@echo "$(BLUE)Building Docker image...$(NC)"
|
|
docker build -t $(DOCKER_IMAGE):$(DOCKER_TAG) .
|
|
@echo "$(GREEN)Docker image built: $(DOCKER_IMAGE):$(DOCKER_TAG)$(NC)"
|
|
|
|
docker-run: ## Run Docker container
|
|
@echo "$(BLUE)Running Docker container...$(NC)"
|
|
docker run --rm -v $(PWD)/$(OUTPUT_DIR):/app/hdh_results $(DOCKER_IMAGE):$(DOCKER_TAG)
|
|
@echo "$(GREEN)Docker container execution completed!$(NC)"
|
|
|
|
docker-cli: ## Run Docker container with CLI
|
|
@echo "$(BLUE)Starting Docker container with CLI...$(NC)"
|
|
docker run --rm -it -v $(PWD)/$(OUTPUT_DIR):/app/hdh_results $(DOCKER_IMAGE):$(DOCKER_TAG) python cli.py
|
|
|
|
docker-benchmark: ## Run benchmarks in Docker
|
|
@echo "$(BLUE)Running benchmarks in Docker...$(NC)"
|
|
docker run --rm -v $(PWD)/$(BENCHMARK_DIR):/app/benchmark_results $(DOCKER_IMAGE):$(DOCKER_TAG) python benchmark.py --suite all
|
|
|
|
docker-compose-up: ## Start Docker Compose services
|
|
@echo "$(BLUE)Starting Docker Compose services...$(NC)"
|
|
docker-compose up -d
|
|
@echo "$(GREEN)Docker Compose services started!$(NC)"
|
|
|
|
docker-compose-down: ## Stop Docker Compose services
|
|
@echo "$(BLUE)Stopping Docker Compose services...$(NC)"
|
|
docker-compose down
|
|
@echo "$(GREEN)Docker Compose services stopped!$(NC)"
|
|
|
|
docker-compose-benchmark: ## Run benchmark with Docker Compose
|
|
@echo "$(BLUE)Running benchmark with Docker Compose...$(NC)"
|
|
docker-compose --profile benchmark up hdh-benchmark
|
|
@echo "$(GREEN)Docker Compose benchmark completed!$(NC)"
|
|
|
|
# Documentation targets
|
|
docs: ## Generate documentation (placeholder)
|
|
@echo "$(BLUE)Generating documentation...$(NC)"
|
|
@echo "$(YELLOW)Documentation generation not yet implemented$(NC)"
|
|
@echo "$(GREEN)Please refer to README.md for now$(NC)"
|
|
|
|
# Analysis targets
|
|
analyze-results: ## Analyze existing results
|
|
@echo "$(BLUE)Analyzing results...$(NC)"
|
|
@if [ -d "$(OUTPUT_DIR)" ]; then \
|
|
echo "$(GREEN)Found results in $(OUTPUT_DIR)$(NC)"; \
|
|
find $(OUTPUT_DIR) -name "*.json" -exec echo " - {}" \; ; \
|
|
find $(OUTPUT_DIR) -name "*.png" -exec echo " - {}" \; ; \
|
|
else \
|
|
echo "$(YELLOW)No results directory found. Run 'make run' first.$(NC)"; \
|
|
fi
|
|
|
|
analyze-benchmarks: ## Analyze benchmark results
|
|
@echo "$(BLUE)Analyzing benchmark results...$(NC)"
|
|
@if [ -d "$(BENCHMARK_DIR)" ]; then \
|
|
echo "$(GREEN)Found benchmarks in $(BENCHMARK_DIR)$(NC)"; \
|
|
find $(BENCHMARK_DIR) -name "*.json" -exec echo " - {}" \; ; \
|
|
find $(BENCHMARK_DIR) -name "*.png" -exec echo " - {}" \; ; \
|
|
else \
|
|
echo "$(YELLOW)No benchmark directory found. Run 'make benchmark' first.$(NC)"; \
|
|
fi
|
|
|
|
# Complete workflow targets
|
|
demo: ## Run complete demonstration workflow
|
|
@echo "$(BLUE)Running complete HDH demonstration...$(NC)"
|
|
$(MAKE) clean
|
|
$(MAKE) examples
|
|
$(MAKE) run
|
|
$(MAKE) benchmark-quick
|
|
$(MAKE) analyze-results
|
|
@echo "$(GREEN)Complete demonstration finished!$(NC)"
|
|
@echo "$(YELLOW)Thank you Maria Gragera Garces for the HDH library! 🎉$(NC)"
|
|
|
|
full-demo: ## Run full demonstration with comprehensive benchmarks
|
|
@echo "$(BLUE)Running full HDH demonstration...$(NC)"
|
|
$(MAKE) clean
|
|
$(MAKE) examples
|
|
$(MAKE) run
|
|
$(MAKE) benchmark
|
|
$(MAKE) analyze-results
|
|
$(MAKE) analyze-benchmarks
|
|
@echo "$(GREEN)Full demonstration completed!$(NC)"
|
|
@echo "$(YELLOW)Thank you Maria Gragera Garces for the HDH library! 🎉$(NC)"
|
|
|
|
# Development workflow
|
|
dev-setup: ## Set up development environment
|
|
@echo "$(BLUE)Setting up development environment...$(NC)"
|
|
$(MAKE) install-dev
|
|
$(MAKE) validate
|
|
@echo "$(GREEN)Development environment ready!$(NC)"
|
|
|
|
dev-test: ## Run development tests and checks
|
|
@echo "$(BLUE)Running development tests...$(NC)"
|
|
$(MAKE) lint
|
|
$(MAKE) format
|
|
$(MAKE) type-check
|
|
$(MAKE) test
|
|
@echo "$(GREEN)Development tests completed!$(NC)"
|
|
|
|
# CI/CD targets
|
|
ci-test: ## Run CI/CD test suite
|
|
@echo "$(BLUE)Running CI/CD tests...$(NC)"
|
|
$(MAKE) install
|
|
$(MAKE) validate
|
|
$(MAKE) lint
|
|
$(MAKE) test
|
|
$(MAKE) run
|
|
@echo "$(GREEN)CI/CD tests completed!$(NC)"
|
|
|
|
# Status and information
|
|
status: ## Show current status
|
|
@echo "$(BLUE)HDH Deployment Status$(NC)"
|
|
@echo "$(YELLOW)Special thanks to Maria Gragera Garces!$(NC)"
|
|
@echo ""
|
|
@echo "Python version: $(shell $(PYTHON) --version)"
|
|
@echo "HDH library: $(shell $(PYTHON) -c 'import hdh; print("Available")' 2>/dev/null || echo "Not available")"
|
|
@echo "Output directory: $(OUTPUT_DIR) $(shell [ -d $(OUTPUT_DIR) ] && echo "(exists)" || echo "(not found)")"
|
|
@echo "Benchmark directory: $(BENCHMARK_DIR) $(shell [ -d $(BENCHMARK_DIR) ] && echo "(exists)" || echo "(not found)")"
|
|
@echo "Docker image: $(shell docker images -q $(DOCKER_IMAGE):$(DOCKER_TAG) >/dev/null 2>&1 && echo "Built" || echo "Not built")"
|
|
|
|
info: ## Show project information
|
|
@echo "$(BLUE)HDH Deployment Example$(NC)"
|
|
@echo "$(YELLOW)Special thanks to Maria Gragera Garces for the HDH library!$(NC)"
|
|
@echo ""
|
|
@echo "This example demonstrates comprehensive deployment of the HDH"
|
|
@echo "(Hybrid Dependency Hypergraph) library for quantum computation."
|
|
@echo ""
|
|
@echo "Features:"
|
|
@echo " • Quantum circuit processing and analysis"
|
|
@echo " • Performance benchmarking suite"
|
|
@echo " • Interactive command-line interface"
|
|
@echo " • Docker containerization"
|
|
@echo " • Comprehensive visualization tools"
|
|
@echo ""
|
|
@echo "For help: make help"
|
|
@echo "To get started: make demo"
|