Skip to content

Add support for the PTX compilation API #385

@eyalroz

Description

@eyalroz

Somehow, NVIDIA's separate library for compiling PTX code into SASS escaped me...

It's documented at:

https://docs.nvidia.com/cuda/ptx-compiler-api/index.html

and we should definitely add support for it.

There's a "handle" type, similar to an NVRTC "program"; and the functions are:

Functions:

  • nvPTXCompilerCompile ( nvPTXCompilerHandle compiler, int numCompileOptions, const char** compileOptions )
    Compile a PTX program with the given compiler options.
  • nvPTXCompilerCreate ( nvPTXCompilerHandle* compiler, size_t ptxCodeLen, const char* ptxCode )
    Obtains the handle to an instance of the PTX compiler initialized with the given PTX program ptxCode.
  • nvPTXCompilerDestroy ( nvPTXCompilerHandle* compiler )
    Destroys and cleans the already created PTX compiler.
  • nvPTXCompilerGetCompiledProgram ( nvPTXCompilerHandle compiler, void* binaryImage )
    Obtains the image of the compiled program.
  • nvPTXCompilerGetCompiledProgramSize ( nvPTXCompilerHandle compiler, size_t* binaryImageSize )
    Obtains the size of the image of the compiled program.
  • nvPTXCompilerGetErrorLog ( nvPTXCompilerHandle compiler, char* errorLog )
    Query the error message that was seen previously for the handle.
  • nvPTXCompilerGetErrorLogSize ( nvPTXCompilerHandle compiler, size_t* errorLogSize )
    Query the size of the error message that was seen previously for the handle.
  • nvPTXCompilerGetInfoLog ( nvPTXCompilerHandle compiler, char* infoLog )
    Query the information message that was seen previously for the handle.
  • nvPTXCompilerGetInfoLogSize ( nvPTXCompilerHandle compiler, size_t* infoLogSize )
    Query the size of the information message that was seen previously for the handle.

and a version function:

  • nvPTXCompileResult nvPTXCompilerGetVersion] ( unsigned int* major, unsigned int* minor )

Need to think about where that's going to go, namespace-wise (and reconsider the same for NVRTC - if it even has a version number).

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions