System.NotImplementedException when generating bindings for Nvidia CUDA
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
Research direction
Reproduce the failure with cuda_runtime.h and the CUDA 11.7 include and library directories from the issue. Start at PrimitiveTypeExtensions.GetInfo and follow LayoutFieldExtensions.CalculateOffset into CSharpSources.GenerateClassInternalsFields. Done means C# binding generation completes without the NotImplementedException for this CUDA input.
Written by the indexing model from the issue text.
Description
Brief Description
The app fails to generate bindings for Nvidia CUDA library.
OS: Windows 10
Used headers
Download and install this library: https://developer.nvidia.com/cuda-downloads
My main goal was to generate the bindings for all files in that folder:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\include\
cuda_runtime.h and cuda_runtime_api.h look the most interesting.
Used settings
public void Setup(Driver driver)
{
var options = driver.Options;
options.GeneratorKind = GeneratorKind.CSharp;
options.Quiet = false;
var module = options.AddModule("YCuda");
module.IncludeDirs.Add(@"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\include");
var headerDirectory = new DirectoryInfo("C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.7\\include");
var headers = headerDirectory.GetFiles();
// I've tried with this one as well and got the same error
//foreach (var header in headers)
//{
// module.Headers.Add(header.Name);
//}
module.Headers.Add("cuda_runtime.h");
module.LibraryDirs.Add(@"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\lib\x64");
var libDirectory = new DirectoryInfo("C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.7\\lib\\x64");
var libs = libDirectory.GetFiles();
foreach(var lib in libs)
{
module.Libraries.Add(lib.Name);
}
}
Target: C#
Other settings
I run it like this:
ConsoleDriver.Run(new YCudaLibrary());
Where YCudaLibrary is a class where my setup function is located.
Stack trace or incompilable generated code
Parsing libraries...
Parsed 'cublas.lib'
Parsed 'cublasLt.lib'
Parsed 'cuda.lib'
Parsed 'cudadevrt.lib'
Parsed 'cudart.lib'
Parsed 'cudart_static.lib'
Parsed 'cufft.lib'
Parsed 'cufftw.lib'
Parsed 'cufilt.lib'
Parsed 'curand.lib'
Parsed 'cusolver.lib'
Parsed 'cusolverMg.lib'
Parsed 'cusparse.lib'
Parsed 'nppc.lib'
Parsed 'nppial.lib'
Parsed 'nppicc.lib'
Parsed 'nppidei.lib'
Parsed 'nppif.lib'
Parsed 'nppig.lib'
Parsed 'nppim.lib'
Parsed 'nppist.lib'
Parsed 'nppisu.lib'
Parsed 'nppitc.lib'
Parsed 'npps.lib'
Parsed 'nvblas.lib'
Parsed 'nvjpeg.lib'
Parsed 'nvml.lib'
Parsed 'nvptxcompiler_static.lib'
Parsed 'nvrtc-builtins_static.lib'
Parsed 'nvrtc.lib'
Parsed 'nvrtc_static.lib'
Parsed 'OpenCL.lib'
Parsing code...
Parsed 'cuda_runtime.h'
Processing code...
Found ambiguous overload: __cudaOccupancyB2DHelper::operator=
Found ambiguous overload: cudaChannelFormatDesc::operator=
Found ambiguous overload: cudaArraySparseProperties::operator=
Found ambiguous overload: cudaArraySparseProperties::operator=
Found ambiguous overload: cudaArrayMemoryRequirements::operator=
Found ambiguous overload: cudaPitchedPtr::operator=
Found ambiguous overload: cudaExtent::operator=
Found ambiguous overload: cudaPos::operator=
Found ambiguous overload: cudaMemcpy3DParms::operator=
Found ambiguous overload: cudaMemcpy3DPeerParms::operator=
Found ambiguous overload: cudaMemsetParams::operator=
Found ambiguous overload: cudaAccessPolicyWindow::operator=
Found ambiguous overload: cudaHostNodeParams::operator=
Found ambiguous overload: cudaResourceDesc::operator=
Found ambiguous overload: cudaResourceDesc::operator=
Found ambiguous overload: cudaResourceDesc::operator=
Found ambiguous overload: cudaResourceDesc::operator=
Found ambiguous overload: cudaResourceDesc::operator=
Found ambiguous overload: cudaResourceDesc::operator=
Found ambiguous overload: cudaResourceViewDesc::operator=
Found ambiguous overload: cudaPointerAttributes::operator=
Found ambiguous overload: cudaFuncAttributes::operator=
Found ambiguous overload: cudaMemLocation::operator=
Found ambiguous overload: cudaMemAccessDesc::operator=
Found ambiguous overload: cudaMemPoolProps::operator=
Found ambiguous overload: cudaMemPoolPtrExportData::operator=
Found ambiguous overload: cudaMemAllocNodeParams::operator=
Found ambiguous overload: CUuuid_st::operator=
Found ambiguous overload: cudaDeviceProp::operator=
Found ambiguous overload: cudaIpcEventHandle_st::operator=
Found ambiguous overload: cudaIpcMemHandle_st::operator=
Found ambiguous overload: cudaExternalMemoryHandleDesc::operator=
Found ambiguous overload: cudaExternalMemoryHandleDesc::operator=
Found ambiguous overload: cudaExternalMemoryHandleDesc::operator=
Found ambiguous overload: cudaExternalMemoryBufferDesc::operator=
Found ambiguous overload: cudaExternalMemoryMipmappedArrayDesc::operator=
Found ambiguous overload: cudaExternalSemaphoreHandleDesc::operator=
Found ambiguous overload: cudaExternalSemaphoreHandleDesc::operator=
Found ambiguous overload: cudaExternalSemaphoreHandleDesc::operator=
Found ambiguous overload: cudaExternalSemaphoreSignalParams_v1::operator=
Found ambiguous overload: cudaExternalSemaphoreSignalParams_v1::operator=
Found ambiguous overload: cudaExternalSemaphoreSignalParams_v1::operator=
Found ambiguous overload: cudaExternalSemaphoreSignalParams_v1::operator=
Found ambiguous overload: cudaExternalSemaphoreSignalParams_v1::operator=
Found ambiguous overload: cudaExternalSemaphoreWaitParams_v1::operator=
Found ambiguous overload: cudaExternalSemaphoreWaitParams_v1::operator=
Found ambiguous overload: cudaExternalSemaphoreWaitParams_v1::operator=
Found ambiguous overload: cudaExternalSemaphoreWaitParams_v1::operator=
Found ambiguous overload: cudaExternalSemaphoreWaitParams_v1::operator=
Found ambiguous overload: cudaExternalSemaphoreSignalParams::operator=
Found ambiguous overload: cudaExternalSemaphoreSignalParams::operator=
Found ambiguous overload: cudaExternalSemaphoreSignalParams::operator=
Found ambiguous overload: cudaExternalSemaphoreSignalParams::operator=
Found ambiguous overload: cudaExternalSemaphoreSignalParams::operator=
Found ambiguous overload: cudaExternalSemaphoreWaitParams::operator=
Found ambiguous overload: cudaExternalSemaphoreWaitParams::operator=
Found ambiguous overload: cudaExternalSemaphoreWaitParams::operator=
Found ambiguous overload: cudaExternalSemaphoreWaitParams::operator=
Found ambiguous overload: cudaExternalSemaphoreWaitParams::operator=
Found ambiguous overload: dim3::operator=
Found ambiguous overload: cudaLaunchParams::operator=
Found ambiguous overload: cudaKernelNodeParams::operator=
Found ambiguous overload: cudaExternalSemaphoreSignalNodeParams::operator=
Found ambiguous overload: cudaExternalSemaphoreWaitNodeParams::operator=
Found ambiguous overload: cudaStreamAttrValue::operator=
Found ambiguous overload: cudaKernelNodeAttrValue::operator=
Found ambiguous overload: char1::operator=
Found ambiguous overload: uchar1::operator=
Found ambiguous overload: char2::operator=
Found ambiguous overload: uchar2::operator=
Found ambiguous overload: char3::operator=
Found ambiguous overload: uchar3::operator=
Found ambiguous overload: char4::operator=
Found ambiguous overload: uchar4::operator=
Found ambiguous overload: short1::operator=
Found ambiguous overload: ushort1::operator=
Found ambiguous overload: short2::operator=
Found ambiguous overload: ushort2::operator=
Found ambiguous overload: short3::operator=
Found ambiguous overload: ushort3::operator=
Found ambiguous overload: short4::operator=
Found ambiguous overload: ushort4::operator=
Found ambiguous overload: int1::operator=
Found ambiguous overload: uint1::operator=
Found ambiguous overload: int2::operator=
Found ambiguous overload: uint2::operator=
Found ambiguous overload: int3::operator=
Found ambiguous overload: uint3::operator=
Found ambiguous overload: int4::operator=
Found ambiguous overload: uint4::operator=
Found ambiguous overload: long1::operator=
Found ambiguous overload: ulong1::operator=
Found ambiguous overload: long2::operator=
Found ambiguous overload: ulong2::operator=
Found ambiguous overload: long3::operator=
Found ambiguous overload: ulong3::operator=
Found ambiguous overload: long4::operator=
Found ambiguous overload: ulong4::operator=
Found ambiguous overload: float1::operator=
Found ambiguous overload: float2::operator=
Found ambiguous overload: float3::operator=
Found ambiguous overload: float4::operator=
Found ambiguous overload: longlong1::operator=
Found ambiguous overload: ulonglong1::operator=
Found ambiguous overload: longlong2::operator=
Found ambiguous overload: ulonglong2::operator=
Found ambiguous overload: longlong3::operator=
Found ambiguous overload: ulonglong3::operator=
Found ambiguous overload: longlong4::operator=
Found ambiguous overload: ulonglong4::operator=
Found ambiguous overload: double1::operator=
Found ambiguous overload: double2::operator=
Found ambiguous overload: double3::operator=
Found ambiguous overload: double4::operator=
Found ambiguous overload: surfaceReference::operator=
Found ambiguous overload: textureReference::operator=
Found ambiguous overload: cudaTextureDesc::operator=
Found ambiguous overload: cudaCreateChannelDesc
Generating code...
Unhandled exception. System.NotImplementedException: The method or operation is not implemented.
at CppSharp.Extensions.PrimitiveTypeExtensions.GetInfo(PrimitiveType primitive, ParserTargetInfo targetInfo, Boolean& signed)
at CppSharp.Extensions.TypeExtensions.GetWidth(Type type, ParserTargetInfo targetInfo)
at CppSharp.Extensions.LayoutFieldExtensions.CalculateOffset(LayoutField field, LayoutField previousField, ParserTargetInfo targetInfo)
at CppSharp.Generators.CSharp.CSharpSources.GenerateClassInternalsFields(Class class, Boolean sequentialLayout)
at CppSharp.Generators.CSharp.CSharpSources.GenerateClassInternals(Class class)
at CppSharp.Generators.CSharp.CSharpSources.VisitClassDecl(Class class)
at CppSharp.AST.Class.Visit[T](IDeclVisitor`1 visitor)
at CppSharp.Generators.CSharp.CSharpSources.VisitDeclContext(DeclarationContext context)
at CppSharp.Generators.CodeGenerator.VisitNamespace(Namespace namespace)
at CppSharp.Generators.CSharp.CSharpSources.VisitNamespace(Namespace namespace)
at CppSharp.Generators.CodeGenerator.VisitTranslationUnit(TranslationUnit unit)
at CppSharp.AST.TranslationUnit.Visit[T](IDeclVisitor`1 visitor)
at CppSharp.Generators.CSharp.CSharpSources.Process()
at CppSharp.Generators.Generator.GenerateModule(Module module)
at CppSharp.Generators.Generator.Generate()
at CppSharp.Driver.GenerateCode()
at CppSharp.ConsoleDriver.Run(ILibrary library)
at CudaTest.Generator.Program.Main(String[] args)
- Dominant language
- C#
- Stars
- 3.4k
- Forks
- 541
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from mono/CppSharp
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
-
How to get started Open
Difficulty 3/5 1-2 days Newbie friendliness 38/100
-
Difficulty 4/5 3-5 days Newbie friendliness 25/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
:watch: Not Triaged 11.0 fundamentals/subsvc
Difficulty 2/5 1-3 hours Newbie friendliness 92/100
dotnet/AspNetCore.Docs#37699 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
SubtitleEdit/subtitleedit#15108 · 1 comment ·
-
area/docs-content Bug pulumi/docs
Difficulty 1/5 1-3 hours Newbie friendliness 94/100
-
agentic-workflows untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 76/100