Jawad00100/C-to-Cuda
CUDA to C Code Conversion Dataset A large-scale dataset containing 8257 pairs of CUDA code and their equivalent C code conversions, generated using Google's Gemini 2.5 Flash model. Dataset Description This dataset provides high-quality CUDA to C code translations for training code translation models, studying parallel programming patterns, and developing automated code conversion tools. Source Data Original Dataset: mzubai/cass - CUDA code samples… See the full description on the dataset page: https://huggingface.co/datasets/Jawad00100/C-to-Cuda.
CUDA to C Code Conversion Dataset
A large-scale dataset containing 8257 pairs of CUDA code and their equivalent C code conversions, generated using Google's Gemini 2.5 Flash model.
Dataset Description
This dataset provides high-quality CUDA to C code translations for training code translation models, studying parallel programming patterns, and developing automated code conversion tools.
Source Data
- Original Dataset: mzubai/cass - CUDA code samples
- Conversion Model: Google Gemini 2.5 Flash with structured output
- Processing: Parallel processing with 10 API keys, rate limiting, and quality filtering
Dataset Statistics
- Total Samples: 8257 CUDA-C pairs
- Format: CSV with structured columns
Dataset Schema
Usage Examples
Loading the Dataset
from datasets import load_dataset
# Load the dataset
dataset = load_dataset("your-username/cuda-to-c-conversion")
# Access the data
train_data = dataset['train']
print(f"Dataset size: {len(train_data)}")
# Example sample
sample = train_data[0]
print("CUDA Code:", sample['cuda_source'][:200] + "...")
print("C Code:", sample['c_code'][:200] + "...")Training Code Translation Models
# Prepare for sequence-to-sequence training
cuda_codes = [sample['cuda_source'] for sample in train_data]
c_codes = [sample['c_code'] for sample in train_data]
# Use with transformers
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
tokenizer = AutoTokenizer.from_pretrained("codet5-base")
model = AutoModelForSeq2SeqLM.from_pretrained("codet5-base")
# Tokenize inputs
inputs = tokenizer(cuda_codes, truncation=True, padding=True, return_tensors="pt")
targets = tokenizer(c_codes, truncation=True, padding=True, return_tensors="pt")Data Analysis
import pandas as pd
# Convert to pandas for analysis
df = pd.DataFrame(train_data)
# Basic statistics
print(f"Average CUDA code length: {df['cuda_source'].str.len().mean():.0f} chars")
print(f"Average C code length: {df['c_code'].str.len().mean():.0f} chars")
# Code complexity analysis
cuda_lines = df['cuda_source'].str.count('\n').mean()
c_lines = df['c_code'].str.count('\n').mean()
print(f"Average lines - CUDA: {cuda_lines:.1f}, C: {c_lines:.1f}")Dataset Creation Process
- Source: Started with CUDA code from mzubai/cass dataset
- Conversion: Used Google Gemini 2.5 Flash with structured JSON output
- Parallel Processing: 10 API keys with round-robin distribution and rate limiting
- Quality Control: Removed failed conversions and error responses
- Validation: Structured output validation using Pydantic models
Quality Assurance
Conversion Quality
- Structured Output: JSON schema validation ensures consistent format
- Error Filtering: Only successful conversions included (9.4% error rate removed)
- Manual Validation: Sample verification of conversion accuracy
- No Artifacts: Removed API error messages and malformed responses
Data Integrity
- Unique IDs: Each sample has a unique identifier
- Complete Pairs: All samples have both CUDA and C code
- Size Limits: Handles large code files (up to 1MB per field)
- Encoding: UTF-8 encoding for international character support
Use Cases
Research Applications
- Code Translation Models: Train CUDA↔C translation systems
- Programming Language Analysis: Study syntax and semantic differences
- Parallel Programming: Analyze parallelization patterns
- Code Generation: Develop automated code conversion tools
Educational Applications
- Learning Resources: Examples of CUDA to C conversions
- Curriculum Development: Teaching parallel programming concepts
- Code Comparison: Understanding different programming paradigms
Industrial Applications
- Legacy Code Migration: Automated CUDA to C conversion
- Performance Analysis: Compare parallel vs sequential implementations
- Code Optimization: Study efficient coding patterns
Limitations and Considerations
Technical Limitations
- Semantic Accuracy: Conversions may not be functionally identical
- Compilation: Generated C code may require manual adjustments
- Context: Limited by model's context window for very large files
- Complexity: Very complex CUDA kernels may not convert perfectly
Usage Guidelines
- Validation Recommended: Test converted code before production use
- Manual Review: Complex conversions should be manually verified
- Compilation Testing: Verify that generated C code compiles
- Performance: Converted code may have different performance characteristics
Dataset Metrics
Citation
If you use this dataset in your research, please cite:
@dataset{cuda_to_c_conversion_2024,
title={CUDA to C Code Conversion Dataset},
author={Generated using Google Gemini 2.5 Flash},
year={2024},
url={https://huggingface.co/datasets/your-username/cuda-to-c-conversion},
note={Derived from mzubai/cass CUDA dataset},
samples={2043}
}License
This dataset is released under the same license terms as the original mzubai/cass dataset. Please refer to the original dataset for specific license information.
Acknowledgments
- Original Dataset: mzubai/cass for providing the CUDA source code
- Conversion Model: Google Gemini 2.5 Flash for high-quality code translation
- Processing: Parallel processing pipeline for efficient dataset generation
Updates and Versions
- v1.0: Initial release with 8257 CUDA-C pairs
- Quality: Error-filtered, validated conversions only
- Format: CSV with id, filename, cudasource, ccode columns
Dataset Size: 2043 samples File Format: CSV Encoding: UTF-8 Quality: Production-ready, error-filtered
