CUDA Graphics API Interoperability via Shared Memory Buffer
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current systems require inefficient data copying and buffer allocation when using multiple application programming interfaces (APIs) like graphics and compute APIs, leading to reduced system performance.
Innovation Solution
A method that registers a memory buffer for address mapping, allowing multiple APIs to access it, and uses semaphore mechanisms for synchronization, enabling direct access without additional buffer allocation or data copying.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If data is copied between compute API and graphics API using separate buffers, then interoperability between APIs is achieved, but system performance deteriorates due to additional memory allocation and data copying operations
Solution Approach 1:
The patent merges the memory buffers of the compute API and graphics API into a single shared memory space. Instead of maintaining separate buffers that require data copying, the system allows both APIs to access the same memory buffer directly, eliminating redundant copy operations and improving system performance while maintaining full interoperability between the APIs.
Solution Approach 2:
The patent eliminates the need for data copying between APIs by implementing direct memory buffer sharing. Rather than creating copies of data in intermediate buffers, the system enables both compute and graphics APIs to access the original data in place, removing the performance penalty associated with memory allocation and data copying.
2Reliability
If separate buffers are allocated for compute and graphics APIs, then data access isolation is ensured, but device complexity increases due to multiple buffer management requirements
Solution Approach 1:
The patent implements a universal memory buffer that serves both compute and graphics APIs simultaneously. This single buffer structure replaces the need for multiple separate buffers, simplifying buffer management while maintaining reliable data access isolation through controlled sharing mechanisms that allow both APIs to access the same memory space safely.
3Reliability
If data copying is performed between APIs, then data integrity is maintained, but loss of time occurs due to additional copy operations
Solution Approach 1:
The patent combines the memory buffers of compute and graphics APIs into a single shared buffer, eliminating the time-consuming data copying operations. Both APIs access the same data in place, maintaining data integrity through coordinated access control while significantly reducing the time lost to redundant copy operations.
Data Source
AI summary
One embodiment of the present invention sets forth a method for sharing graphics objects between a compute unified device architecture (CUDA) application programming interface (API) and a graphics API. The CUDA API includes calls used to alias graphics objects allocated by the graphics API and, subsequently, synchronize accesses to the graphics objects. When an application program emits a “register” call that targets a particular graphics object, the CUDA API ensures that the graphics object is in the device memory, and maps the graphics object into the CUDA address space. Subsequently, when the application program emits “map” and “unmap” calls, the CUDA API respectively enables and disables accesses to the graphics object through the CUDA API. Further, the CUDA API uses semaphores to synchronize accesses to the shared graphics object. Finally, when the application program emits an “unregister” call, the CUDA API configures the computing system to disregard interoperability constraints.


