Map rendering method, apparatus and device, and computer program product

By using a parallel loading and rendering method for map data and dynamically allocating resources, the resource bottleneck problem in traditional rendering methods is solved, achieving efficient rendering results and making it suitable for multi-GPU environments.

CN121010682APending Publication Date: 2025-11-25ZHIDAO NETWORK TECH (BEIJING) CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202511108098.7
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2025-08-08
Publication Date
2025-11-25

AI Technical Summary

Technical Problem

Traditional map rendering methods are prone to memory and GPU resource bottlenecks when handling large-scale distributed rendering tasks, making it difficult to fully utilize the parallel processing capabilities of multiple GPUs, thus affecting rendering efficiency and response speed.

Method used

A parallel loading and rendering method for map data is adopted. Map data loading and rendering resources are dynamically allocated according to the characteristics of the rendering task. The parallel processing capabilities of multi-threading and multi-GPU are utilized. Map data is loaded in parallel through a multi-threaded loader, and appropriate rendering resources are allocated for parallel rendering based on the data volume and complexity.

Benefits of technology

It improves the efficiency of map data loading and rendering, shortens data loading time, enhances rendering quality and system resource utilization, and is suitable for application scenarios with high real-time requirements, such as real-time navigation and game maps.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121010682A_ABST
    Figure CN121010682A_ABST
Patent Text Reader

Abstract

The invention discloses a map rendering method, apparatus and device, and a computer program product. The map rendering method comprises the steps of starting a corresponding map data loading resource according to a current rendering task and loading to-be-rendered map data in parallel; according to the current rendering task, allocating corresponding map data rendering resources to the to-be-rendered map data; and performing parallel rendering on the to-be-rendered map data by using the map data rendering resource corresponding to the to-be-rendered map data to obtain a map data rendering result. According to the map rendering method provided by the embodiment of the invention, the rendering data can be dynamically distributed to the appropriate map data loading resource and the map data rendering resource according to the characteristics of the rendering data and the requirements of the rendering task, and the parallel processing capability of the map data loading resource and the map data rendering resource is utilized; and the loading efficiency and the rendering efficiency of the map data are improved.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] The present application relates to the technical field of map rendering, and in particular to a map rendering method, device and equipment, and computer program product. BACKGROUND

[0002] In the fields of city planning and traffic management, map rendering is a basic and key technology. With the development of technology, the amount of map data increases dramatically, and the traditional single-thread or simple multi-thread rendering method has been unable to meet the requirements of real-time and efficiency. Especially in the multi-GPU environment, how to effectively allocate rendering tasks and improve rendering efficiency has become a problem to be solved.

[0003] At present, map rendering usually adopts a single-thread or simple multi-thread model. This way is efficient when dealing with small-scale data, but when facing large-scale distributed rendering tasks, due to the high concentration of data loading and rendering tasks, it is easy to cause the bottleneck of memory and GPU resources, affecting the rendering efficiency and response speed. In addition, the single-GPU rendering method is difficult to fully utilize the parallel processing capability of multi-GPU in modern computer systems. SUMMARY

[0004] The embodiments of the present application provide a map rendering method, device and equipment, and computer program product to improve the efficiency of map rendering.

[0005] The embodiments of the present application adopt the following technical solutions:

[0006] In a first aspect, the embodiments of the present application provide a map rendering method, which comprises:

[0007] According to the current rendering task, start the corresponding map data loading resource and load the map data to be rendered in parallel.

[0008] According to the current rendering task, allocate the corresponding map data rendering resource for the map data to be rendered.

[0009] Using the corresponding map data rendering resource of the map data to be rendered, the map data to be rendered is rendered in parallel to obtain a map data rendering result.

[0010] Optionally, the method according to the current rendering task to start the corresponding map data loading resource and load the map data to be rendered in parallel comprises:

[0011] Obtain the map data to be rendered and evaluate it to obtain an evaluation result of the map data to be rendered.

[0012] According to the evaluation result of the map data to be rendered, allocate the corresponding map data loading resource for the map data to be rendered.

[0013] According to the current rendering task, a corresponding map data loading resource is started, and the map data to be rendered is loaded in parallel.

[0014] Optionally, the assigning of the map data to be rendered with a corresponding map data loading resource according to the evaluation result of the map data to be rendered comprises:

[0015] According to the evaluation result of the map data to be rendered, the map data to be rendered is divided according to a preset data division strategy, to obtain a plurality of divided map data.

[0016] Each divided map data is assigned with a corresponding map data loading resource, and the map data loading resource comprises a data loading thread and a corresponding cache.

[0017] Optionally, the starting of the corresponding map data loading resource according to the current rendering task and the parallel loading of the map data to be rendered comprise:

[0018] According to the current rendering task, a plurality of map data loading resources are started.

[0019] Based on the plurality of started map data loading resources, the map data to be rendered corresponding to each map data loading resource is loaded into the cache corresponding to each map data loading resource in parallel.

[0020] Optionally, the map data to be rendered comprises different types of map elements to be rendered, and the assigning of the map data to be rendered with a corresponding map data rendering resource according to the current rendering task comprises:

[0021] According to the current rendering task, different map data rendering resources are assigned to different types of map elements to be rendered.

[0022] Optionally, the map data to be rendered comprises different types of map elements to be rendered, and the parallel rendering of the map data to be rendered by using the corresponding map data rendering resource of the map data to be rendered to obtain a map data rendering result comprises:

[0023] The different types of map elements to be rendered are rendered in parallel by using the corresponding map data rendering resource of the different types of map elements to be rendered, to obtain a rendering result of the different types of map elements.

[0024] The rendering results of the different types of map elements are merged to obtain a final map rendering result.

[0025] Optionally, the map rendering method further comprises:

[0026] collecting map rendering performance data;

[0027] adjusting an allocation strategy of the map data loading resource and / or an allocation strategy of the map data rendering resource according to the map rendering performance data.

[0028] In a second aspect, the embodiments of the present application further provide a map rendering device, which comprises:

[0029] a loading unit, configured to start a corresponding map data loading resource according to a current rendering task and load map data to be rendered in parallel;

[0030] an allocation unit, configured to allocate a corresponding map data rendering resource to the map data to be rendered according to the current rendering task;

[0031] a rendering unit, configured to perform parallel rendering on the map data to be rendered by using the corresponding map data rendering resource of the map data to be rendered, to obtain a map data rendering result.

[0032] In a third aspect, the embodiments of the present application further provide a device, which comprises:

[0033] a processor; and a memory arranged to store computer executable instructions, which, when executed, cause the processor to perform any of the aforementioned map rendering methods.

[0034] In a fourth aspect, the embodiments of the present application further provide a computer program product, which comprises computer programs / instructions, which, when executed by a processor, implement any of the aforementioned map rendering methods.

[0035] The above at least one technical scheme adopted by the embodiments of the present application can achieve the following beneficial effects: the map rendering method of the embodiments of the present application first starts a corresponding map data loading resource according to a current rendering task and loads map data to be rendered in parallel; then allocates a corresponding map data rendering resource to the map data to be rendered according to the current rendering task; finally, performs parallel rendering on the map data to be rendered by using the corresponding map data rendering resource of the map data to be rendered, to obtain a map data rendering result. The map rendering method of the embodiments of the present application can dynamically allocate rendering data to appropriate map data loading resources and map data rendering resources according to the characteristics of the rendering data and the requirements of the rendering task, and utilize the parallel processing capabilities of the map data loading resources and the map data rendering resources, thereby improving the loading efficiency and the rendering efficiency of the map data. BRIEF DESCRIPTION OF DRAWINGS

[0036] The accompanying drawings, which are included to provide a further understanding of the application and are incorporated in and constitute a part of this application, illustrate embodiments of the application and together with the description serve to explain the application. In the drawings:

[0037] Figure 1 A flowchart of a map rendering method in an embodiment of the present application is shown in FIG. 1.

[0038] Figure 2 A structural diagram of a map rendering device in an embodiment of the present application is shown in FIG. 2.

[0039] Figure 3 A structural diagram of a device in an embodiment of the present application is shown in FIG. 3. DETAILED DESCRIPTION

[0040] To make the objects, technical solutions and advantages of the present application clearer, the technical solutions of the present application will be described below in conjunction with the embodiments of the present application and the corresponding drawings. Obviously, the described embodiments are only some of the embodiments of the present application, but not all the embodiments. Based on the embodiments in the present application, all other embodiments obtained by those of ordinary skill in the art without any creative work fall within the scope of protection of the present application.

[0041] The technical solutions provided by the embodiments of the present application will be described in detail below with reference to the accompanying drawings.

[0042] The embodiments of the present application provide a map rendering method, as shown in FIG. 1, a flowchart of a map rendering method in an embodiment of the present application is provided, and the map rendering method at least includes the following steps S110 to S130: Figure 1

[0043] Step S110: According to a current rendering task, corresponding map data loading resources are started and the map data to be rendered is loaded in parallel.

[0044] The rendering task mainly includes the element name, type (point, line, surface), vertex data, texture data, spatial data and other information of rendering. According to the type of the map data to be rendered, the adaptive map data loading resources such as multi-threaded loader are selected from the resource pool. The map data to be rendered is loaded in parallel through the multi-threaded loader. In addition, the loaded data can also be preliminarily processed (such as coordinate conversion, data compression and decompression, format conversion) to adapt to the subsequent rendering process.

[0045] Step S120: According to the current rendering task, the map data to be rendered is allocated corresponding map data rendering resources.

[0046] ​According to the task requirements (such as rendering complexity, real-time requirements) and the hardware resource state (such as GPU load, video memory occupation), the map data rendering resources (such as multi-GPU) are dynamically allocated. For example, according to the data amount, large data amount map elements (such as road surface, lane line, etc.) are allocated to high-performance GPU, and small data amount map elements (such as stop line, zebra crossing, etc.) are allocated to low-power GPU; according to the task priority, high-priority tasks (such as navigation route rendering) preempt more rendering resources. In addition, in order to avoid the overload of a single GPU, the tasks can also be allocated by polling or performance prediction model.

[0047] The context is initialized for each allocated rendering resource to ensure independent and efficient use of resources. The loaded map data is bound to the corresponding rendering resource, and the mapping relationship between data and rendering tasks is established to ensure that the subsequent rendering steps can trace the data source.

[0048] In step S130, the map data rendering resource corresponding to the to-be-rendered map data is used to perform parallel rendering on the to-be-rendered map data, and a map data rendering result is obtained.

[0049] Each rendering resource independently processes its allocated data slice, and the rendering process is performed in parallel by multiple map data rendering resources. For example, GPU 0 renders terrain tiles, GPU 1 renders road networks, and GPU 2 renders dynamic annotations. Finally, the outputs of the rendering resources are combined into a final map picture, and the rendering result is output to a display device or the next process (such as navigation path planning).

[0050] The map rendering method of the embodiment of the application can dynamically allocate rendering data to appropriate map data loading resources and map data rendering resources according to the characteristics of the rendering data and the requirements of the rendering task, and use the parallel processing capability of the map data loading resources and the map data rendering resources to improve the loading efficiency and the rendering efficiency of the map data.

[0051] In some embodiments of the application, the starting of the corresponding map data loading resource according to the current rendering task and the parallel loading of the to-be-rendered map data include: obtaining the to-be-rendered map data and performing evaluation to obtain an evaluation result of the to-be-rendered map data; allocating the corresponding map data loading resource to the to-be-rendered map data according to the evaluation result of the to-be-rendered map data; and starting the corresponding map data loading resource according to the current rendering task and loading the to-be-rendered map data in parallel.

[0052] A preliminary analysis is performed on the map data to be rendered, which aims to determine the key characteristics of the data, namely the size and complexity of the data. For example, data size may involve the geographical area range contained in the map data, the number of bytes of data storage, etc.; complexity may cover the types of geographical elements contained in the map, such as the number and types of road surfaces, lane lines, zebra crossings, buildings, etc., the hierarchy of the data, etc. Through analysis of these aspects, the characteristics of the map data to be rendered can be fully understood.

[0053] Based on the data size and complexity obtained from the preliminary analysis, the rendering time and resources required to complete the rendering of the map data are further evaluated. For example, the larger the data size and the higher the complexity, the more computing resources and longer rendering time are usually required to complete the rendering task. The evaluation process can refer to historical data, preset algorithm models or empirical values to ensure the relative accuracy of the evaluation results.

[0054] According to the evaluation results of the map data to be rendered, the corresponding map data loading resources are allocated for the data. The resource allocation here is a dynamic and targeted process, aiming to reasonably allocate system resources according to the characteristics of the data to improve resource utilization efficiency and rendering performance. For example, for map data with large data size and high complexity, more memory space can be allocated for data caching, and more powerful computing units (such as high-performance GPUs) can be used to accelerate data processing and rendering; for map data with smaller data size and lower complexity, relatively less resources can be allocated to meet the demand. Resource allocation strategies can be dynamically adjusted according to real-time system status and task priorities.

[0055] According to the current rendering task, the corresponding map data loading resources that have been allocated are started, and the map data to be rendered is loaded in a parallel loading manner. Parallel loading technology can fully utilize multi-core processors or multi-thread processing capabilities, divide the map data into multiple parts, and load them simultaneously on different resource threads or processing units, thereby significantly shortening the data loading time and improving the overall rendering efficiency. Data synchronization, thread management and other issues need to be addressed during the parallel loading process to ensure that each thread works correctly and efficiently, avoiding data conflicts and loading errors.

[0056] Through the evaluation of the map data to be rendered, the reasonable allocation of loading resources and the use of parallel loading methods, the map data loading time is greatly shortened, and the efficient optimization of the map data loading and rendering process is achieved.

[0057] In some embodiments of the present application, the assigning of the corresponding map data loading resources to the to-be-rendered map data according to the evaluation result of the to-be-rendered map data comprises: dividing the to-be-rendered map data according to a preset data division strategy to obtain a plurality of divided map data according to the evaluation result of the to-be-rendered map data; and assigning the corresponding map data loading resources to each divided map data, wherein the map data loading resources comprise a data loading thread and a corresponding cache.

[0058] The evaluation result of the to-be-rendered map data covers the data size and complexity information mentioned in the foregoing embodiments, which are key basis for formulating the data division strategy. For example, if the data amount is extremely large and the complexity is high, a more detailed division strategy may be needed to ensure that each part can be processed efficiently; on the contrary, when the data amount is small and simple, the division strategy can be relatively loose.

[0059] The to-be-rendered map data is divided according to a preset data division strategy. One way can be to determine the peak value of data allocated to a single thread by dividing the total amount of resources to be loaded according to the number of available threads. For example, if the system can use 8 threads and the total amount of map data to be loaded is 100 MB, then theoretically each thread is allocated an average of 12.5 MB of data as a peak reference. In the division process, the same data element is emphasized to be divided into the same thread, which means that a complete geographic feature (such as a building or a road) will not be split into different threads, but will be allocated to a thread for processing in its entirety. At the same time, multiple elements are allowed to be allocated to the same thread, but a data element will not be split into different threads to avoid data disorder problems. For example, when processing map data containing multiple buildings, a certain number of buildings are divided as a whole to a thread to ensure the integrity and consistency of the data.

[0060] After completing the division of the map data, the corresponding map data loading resources are assigned to each divided map data. The resource allocation here is a fine process aimed at ensuring that each data part can be supported by appropriate resources to achieve efficient loading.

[0061] The map data loading resources mainly include a data loading thread and a corresponding cache. An independent data loading thread is assigned to each divided data, which will be responsible for the loading operation of that part of data, and the data loading speed is improved through multi-thread parallel processing. At the same time, a corresponding cache is assigned to each thread, which is used to temporarily store data during the loading process, reducing frequent access to storage devices such as disks and improving data reading efficiency. For example, a certain size of memory space is allocated to each thread as a cache, when the thread loads data, the data is first read into the cache, and the subsequent processing can directly obtain the data from the cache to speed up the data processing speed.

[0062] By dividing the to-be-rendered map data into multiple parts according to a preset strategy and assigning independent data loading threads to each part, multi-thread parallel loading of map data is realized. This parallel processing mode fully utilizes the multi-core processing capability of the system, greatly shortens the overall data loading time, and improves the data loading efficiency. In the data division process, the principle of dividing the same data element into the same thread is strictly followed, avoiding the splitting and disorder of data elements. This ensures that the data processed by each thread is complete and consistent, and the map content can be correctly presented in the subsequent rendering process, reducing the rendering abnormal problems caused by data errors, and improving the quality and stability of map rendering.

[0063] In addition, a corresponding cache is allocated for each divided data, and the memory resources are reasonably utilized. The use of cache reduces disk I / O operations, reduces system resource overhead, and improves data reading speed. This resource allocation mode dynamically adjusts according to data characteristics and processing requirements, making the system resources more effectively utilized, further improving the performance of the entire map data loading and rendering system.

[0064] In some embodiments of the present application, the method comprises: starting a plurality of map data loading resources according to the current rendering task; based on the started plurality of map data loading resources, parallel loading the to-be-rendered map data corresponding to each map data loading resource into the cache corresponding to each map data loading resource.

[0065] By analyzing the current rendering task, the key information such as the map data range to be rendered by the current rendering task, the accuracy requirement, and the rendering element type can be determined. Based on these information, a plurality of map data loading resources are started. During the starting process, each resource can be initialized and configured, including setting the priority of the thread, allocating the initial memory space, establishing the connection with the data source, etc. For example, for each data loading thread, its priority is set to a high level to ensure that it can obtain resources preferentially in the competition of system resources; a certain size of memory cache is allocated to the thread for temporarily storing the loaded data; at the same time, the connection with the map data storage server or local database is established to prepare for subsequent data loading.

[0066] Each map data loading resource (data loading thread) independently loads the map data allocated to it from the data source. During the loading process, each thread directly stores the loaded data into the corresponding cache. The cache serves as an intermediate layer between the data loading thread and the main memory, reducing the frequent access of the thread to the main memory. For example, when a data loading thread needs to read map data, it first looks for the required data in the local cache. If the data exists in the cache, it is directly obtained from the cache, avoiding the high latency operation of reading data from the main memory or a remote data source. If the data does not exist in the cache, it is loaded from the data source, and the loaded data is also stored in the cache, so that subsequent access can be quickly obtained. In this way, the data access speed is improved, and the map data loading process is accelerated.

[0067] By starting multiple map data loading resources and using parallel loading, the multi-core processing capability and parallel computing advantage of the system are fully utilized. Multiple threads simultaneously load data from the data source, greatly shortening the overall data loading time. Compared with the traditional single-thread loading method, parallel loading can complete the loading task of large-scale map data in a shorter time, improve the response speed of the system, enable users to see the rendered map content faster, and improve the user experience.

[0068] The application of the cache mechanism effectively reduces the number of accesses of the data loading thread to the main memory. Since the access speed of the cache is much higher than that of the main memory, the probability of the thread obtaining data from the cache is higher, thereby reducing the I / O load of the system and the system performance bottleneck caused by frequent access to the main memory. At the same time, by reasonably allocating and starting multiple loading resources and dynamically adjusting resource usage according to task requirements, waste and idling of resources are avoided, and the overall utilization rate of system resources is improved.

[0069] In some embodiments of the present application, the map data to be rendered includes different types of map elements to be rendered, and the allocation of corresponding map data rendering resources to the map data to be rendered according to the current rendering task includes allocating different map data rendering resources to different types of map elements to be rendered according to the current rendering task.

[0070] According to the requirements of the rendering task and the data volume evaluation results of the map elements, the resource allocation principle is formulated. For elements with large data volume, in order to ensure that they can be efficiently and smoothly rendered, different data elements can be divided into different GPUs, such as dividing lane line data into one GPU for execution and dividing road surface data into another GPU for execution. This is because large data volume elements require more computing resources and memory bandwidth to process, and allocating different GPUs to different large data volume road surface elements can avoid resource competition with other elements and improve rendering performance. For elements with small data volume, such as traffic lights, multiple elements can share one GPU to fully utilize the computing power of the GPU and avoid resource waste.

[0071] According to the determined principle, different map elements are allocated to corresponding GPUs, which can interact with the system's graphics driver and GPU management module by setting appropriate parameters and configurations to bind the rendering tasks of the elements to the specified GPUs. For example, in a system supporting multiple GPUs, the rendering context of the road surface element can be associated with GPU1 and the rendering context of the lane line element can be associated with GPU2, and so on. At the same time, the resource usage of each GPU needs to be monitored and adjusted to ensure the rationality and effectiveness of resource allocation.

[0072] By allocating different map data rendering resources to different types of map elements, especially by independently allocating large data volume elements to GPUs, resource competition between different elements is avoided, and each element can fully utilize the allocated GPU resources for efficient rendering. For elements with small data volume, multiple elements share one GPU to avoid GPU resource idling and waste. This fine-grained resource allocation strategy reasonably allocates GPU resources according to the actual needs of elements, improving the overall utilization of system resources.

[0073] This resource allocation method based on element type and data volume has good scalability. When more complex and larger data volume maps need to be rendered, the number of GPUs can be increased or the resource allocation algorithm can be optimized to adapt to new requirements.

[0074] In some embodiments of the present application, multi-process technology can be used to distribute different rendering tasks to different processes for processing. Each process can run independently on different CPU cores or GPUs, further applying for more system resources, and improving rendering efficiency as a whole. Multi-process is more from the macro level of system resource allocation and task scheduling to improve efficiency, while multi-GPU task allocation focuses on utilizing the parallel computing power of GPUs for specific rendering work.

[0075] In some embodiments of the present application, the map data to be rendered includes different types of map elements to be rendered, and the rendering resources corresponding to the map data to be rendered are utilized to perform parallel rendering on the map data to be rendered to obtain a map data rendering result, including: utilizing the rendering resources corresponding to the different types of map elements to be rendered to perform parallel rendering on the different types of map elements to be rendered to obtain rendering results of the different types of map elements; and merging the rendering results of the different types of map elements to obtain a final map rendering result.

[0076] Based on the resource allocation strategy of the foregoing embodiments, the different types of map elements to be rendered have been allocated corresponding GPUs. When starting parallel rendering, the rendering task of each map element is bound to the corresponding GPU. For example, the rendering task of the road surface element is bound to GPU1, the rendering task of the lane line element is bound to GPU2, and so on.

[0077] Each GPU executes the rendering task in an asynchronous calling manner, that is, each GPU independently processes the rendering work of the map elements allocated to it and does not block due to the execution state of other GPUs. For example, when GPU1 is rendering the road surface element, GPU2 can simultaneously start rendering the lane line element, and the two do not interfere with each other. This asynchronous execution manner fully utilizes the parallel computing capability of the multiple GPUs and improves the overall rendering efficiency.

[0078] Each GPU performs a series of rendering operations according to the geometric data, texture data, and attribute data of the allocated map elements. When each GPU completes the respective rendering task, the rendering results of each GPU are collected for merging processing. When merging the rendering results, the spatial relationship and rendering priority between different map elements need to be considered. According to the hierarchy and drawing order of the map elements, the display position and coverage relationship of each element in the final rendered map are determined. For example, the merging is performed in the order of ground, road surface, lane line, zebra crossing, landmark, traffic light, building, and other obstacles. If the order is incorrect, problems such as the ground being above the lane line, causing the lane line to be invisible or flickering, and the like, will occur.

[0079] By utilizing multiple GPUs to perform parallel rendering on different types of map elements, the parallel computing resources of the system are fully utilized, and the overall rendering time is greatly shortened. Compared with the traditional single-GPU rendering manner, parallel rendering can complete the rendering task of large-scale map data in a shorter time, improves the response speed of the system, and is particularly suitable for application scenarios with high real-time requirements, such as real-time navigation, game maps, and the like.

[0080] In the process of combining the rendering results, the spatial relationship and rendering priority between different elements are considered, and the occlusion and transparency effects between elements can be correctly handled, so that the final rendered map image is more realistic and accurate.

[0081] In some embodiments of the present application, the map rendering method further comprises collecting map rendering performance data; and adjusting the allocation strategy of the map data loading resources and / or the allocation strategy of the map data rendering resources according to the map rendering performance data.

[0082] During the entire rendering process, the index data related to map rendering performance can be collected in real time or periodically. These indexes should be able to comprehensively reflect the resource usage and efficiency in the rendering process, for example, they can include rendering time and GPU utilization, etc. The rendering time is the time spent from starting rendering to obtaining the final map rendering result, which can be measured by setting a timer at the key nodes of the rendering process. The GPU utilization reflects the workload degree of the GPU in the rendering process, which can be obtained through the performance monitoring tools provided by the GPU manufacturer or the related APIs of the operating system.

[0083] The collection frequency of performance data can be reasonably set according to the real-time requirements of map rendering and system performance. If the rendering scene changes quickly, such as real-time navigation application, a higher frequency of collection is needed to capture the performance changes in time; while for static map rendering or slowly changing scenes, the collection frequency can be appropriately reduced to reduce the impact of data collection on system performance.

[0084] The collected performance data is analyzed in depth to determine whether the allocation strategy of the current map data loading resources and rendering resources is reasonable. For example, if it is found that the utilization rate of a certain GPU is continuously too high, close to or exceeding its maximum load capacity, while the utilization rate of other GPUs is low, it indicates that the GPU resource allocation is unbalanced; if the rendering time has significantly increased compared to when the current scheme is not used, it may indicate that the current resource allocation strategy cannot meet the rendering requirements.

[0085] According to the analysis result, the allocation of map data loading resources is adjusted. If data loading becomes a performance bottleneck, such as long data loading time leading to rendering waiting, the number of data loading threads can be increased or the data loading algorithm can be optimized to improve the data loading speed. For example, originally 4 data loading threads are used, and it is found that the data loading time is too long, so the number of threads can be increased to 6, and the data loading order can be optimized to preferentially load data that has a greater impact on rendering.

[0086] For the allocation of map data rendering resources, if the GPU resource allocation is unbalanced, such as some GPU is overloaded while other GPUs are idle, a dynamic load balancing algorithm can be used to redistribute the rendering tasks. For example, part of the map element rendering tasks on the overloaded GPU are migrated to the idle GPU. At the same time, according to the performance data and the demand for rendering effect, the binding relationship between different types of map elements and GPUs can also be considered. If the resource allocation is already reasonable, but the rendering effect does not meet the expectation, the GPU resources allocated to key elements (such as buildings, road signs, etc.) can be appropriately increased to pursue better rendering effect under the premise of ensuring system performance; on the contrary, if the system resources are tight, the GPU resource allocation of some non-key elements can be reduced or the rendering quality of the non-key elements can be reduced.

[0087] By collecting performance data and adjusting the resource allocation strategy accordingly, unreasonable situations in resource use can be monitored and discovered in real time, and timely adjustments can be made, thereby avoiding the problem of some GPUs being overloaded while other GPUs being idle, making full use of each resource, improving the overall resource utilization efficiency and rendering efficiency, and reducing the waste of system resources.

[0088] The embodiment of the application also provides a map rendering device 200, as shown in Figure 2 The structure diagram of the map rendering device in the embodiment of the application is provided, and the map rendering device 200 comprises a loading unit 210, an allocation unit 220 and a rendering unit 230, wherein:

[0089] The loading unit 210 is configured to start corresponding map data loading resources and parallelly load map data to be rendered according to a current rendering task.

[0090] The allocation unit 220 is configured to allocate corresponding map data rendering resources for the map data to be rendered according to the current rendering task.

[0091] The rendering unit 230 is configured to perform parallel rendering on the map data to be rendered by using the corresponding map data rendering resources of the map data to be rendered, and obtain a map data rendering result.

[0092] In some embodiments of the application, the loading unit 210 is specifically configured to: obtain map data to be rendered and perform evaluation to obtain an evaluation result of the map data to be rendered; allocate corresponding map data loading resources for the map data to be rendered according to the evaluation result of the map data to be rendered; and start corresponding map data loading resources and parallelly load the map data to be rendered according to the current rendering task.

[0093] In some embodiments of the present application, the loading unit 210 is specifically configured to: according to an evaluation result of the to-be-rendered map data, divide the to-be-rendered map data according to a preset data division strategy, to obtain a plurality of divided map data; and respectively assign each divided map data with corresponding map data loading resources, the map data loading resources including data loading threads and corresponding caches.

[0094] In some embodiments of the present application, the loading unit 210 is specifically configured to: start a plurality of map data loading resources corresponding to the current rendering task; and based on the started plurality of map data loading resources, load the to-be-rendered map data corresponding to each map data loading resource into the cache corresponding to each map data loading resource in parallel.

[0095] In some embodiments of the present application, the to-be-rendered map data includes different types of map elements to be rendered, and the assigning unit 220 is specifically configured to: according to the current rendering task, assign different map data rendering resources to different types of map elements to be rendered.

[0096] In some embodiments of the present application, the to-be-rendered map data includes different types of map elements to be rendered, and the rendering unit 230 is specifically configured to: use the map data rendering resources corresponding to the different types of map elements to be rendered to perform parallel rendering on the different types of map elements to be rendered, to obtain rendering results of different types of map elements; and combine the rendering results of different types of map elements to obtain a final map rendering result.

[0097] In some embodiments of the present application, the map rendering device 200 further includes: a collecting unit configured to collect map rendering performance data; and an adjusting unit configured to adjust the allocation strategy of the map data loading resources and / or the allocation strategy of the map data rendering resources according to the map rendering performance data.

[0098] It can be understood that the above map rendering device can implement each step of the map rendering method provided in the foregoing embodiments, and the related explanations about the map rendering method are all applicable to the map rendering device, which will not be repeated here.

[0099] Figure 3 is a structural schematic diagram of a device in an embodiment of the present application. As shown in Figure 3 , the device includes one or more processors (or processing units), can also include one or more memories coupled to the processors, and can also include a communication module coupled to the processors.

[0100] A communication module can be used for communication with other devices or apparatuses, such as transmission or reception of data and / or signals. The communication module can have at least one communication module for communication. The communication module can include any interface necessary to communicate with other devices. By way of example, the communication module can be a transceiver, a circuit, a bus, a module, or other type of communication module.

[0101] The processor can include, but is not limited to, at least one of a general-purpose computer, a special-purpose computer, a microcontroller, a Digital Signal Processor (DSP), or one or more of a multi-core controller-based architecture. The device can have multiple processors, such as an application-specific integrated circuit chip, which is time-slaved to a clock that is synchronized with the main processor.

[0102] The memory can include one or more non-volatile memories and one or more volatile memories. Examples of non-volatile memories include, but are not limited to, at least one of a Read-Only-Memory (ROM), an Electrically Programmable Read-Only-Memory (EPROM), a flash memory, a hard disk, a Compact Disc (CD), a Digital Video Disk (DVD), or other magnetic storage and / or optical storage. Examples of volatile memories include, but are not limited to, at least one of a Random Access Memory (RAM), or other volatile memory that does not persist through a power duration.

[0103] The computer program includes computer-executable instructions executed by an associated processor. The program can be stored in the ROM. The processor can perform any suitable action and processing by loading the program into the RAM.

[0104] Possible implementations of the present application can be implemented by means of a program, such that the communication apparatus can perform any process as discussed in the foregoing embodiments. Possible implementations of the present application can also be implemented by means of hardware or by means of a combination of software and hardware.

[0105] In some embodiments, the program can be tangibly embodied in a computer-readable storage medium, which can be included in the device, such as in the memory, or other storage devices accessible by the device. The program can be loaded from the computer-readable storage medium to the RAM for execution. The computer-readable storage medium can include any type of tangible non-volatile memory, such as a ROM, an EPROM, a flash memory, a hard disk, a CD, a DVD, etc.

[0106] The embodiments of the present application further provide a computer readable storage medium having computer instructions or program codes stored thereon, which, when executed by a processor, cause the processor to perform the methods and functions involved in any of the above embodiments. The computer readable medium can be any tangible medium containing or storing a program for or about an instruction execution system, apparatus or device. The computer readable medium can be a computer readable signal medium or a computer readable storage medium. The computer readable medium can include, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared or semiconductor system, apparatus or device, or any suitable combination thereof. The computer readable storage medium can be any available medium accessible by a computer or data storage device such as a server, data center, etc. integrated with one or more available media. More detailed examples of the computer readable storage medium include an electrical connection with one or more wires, a magnetic medium (e.g., a disk, a floppy disk, a hard disk, a magnetic tape, a magnetic storage device), an optical medium (e.g., an optical storage device, a DVD), a semiconductor medium (e.g., a solid-state hard disk), a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), or any suitable combination thereof, etc.

[0107] In the above embodiments, all or part of the embodiments can be implemented by software, hardware, firmware or any combination thereof. When implemented by software, all or part of the embodiments can be implemented in the form of a computer program product. The embodiments of the present application also provide at least one computer program product tangibly stored on a non-transitory computer readable storage medium. The computer program product includes one or more computer executable instructions, such as instructions included in program modules, which are executed in a device on a real or virtual processor of a target to perform the processes, methods and functions involved in any of the above embodiments. When the computer program instructions are loaded and executed on a computer, all or part of the processes or functions according to the embodiments of the present application are generated. The computer can be a general purpose computer, a special purpose computer, a computer network or other programmable device. The computer instructions can be stored in a computer readable storage medium or transferred from one computer readable storage medium to another, for example, the computer instructions can be transferred from one website, computer, server or data center to another by wire (such as coaxial cable, optical fiber, digital subscriber line) or wireless (such as infrared, wireless, microwave, etc.).

[0108] The embodiments of the present application also provide a computer program product, including computer programs or instructions, which, when running on a computer, enable the computer to perform the processes, methods and functions described in the above embodiments. Generally, program modules include routines, programs, libraries, objects, classes, components, data structures, etc. that perform particular tasks or implement particular abstract data types. In various embodiments, the functions of program modules can be combined or divided among program modules according to the needs of the application. Machine-executable instructions for program modules can be executed within a local or distributed device. In a distributed device, program modules can be located in local and remote storage media.

[0109] Generally, various embodiments of the present application can be implemented in hardware or special-purpose circuits, software, logic or any combination thereof. Some aspects can be implemented in hardware, while other aspects can be implemented in firmware or software which can be executed by a controller, microprocessor or other computing device. While various aspects of an embodiment of the present disclosure are illustrated and described as block diagrams, flow charts, or using some other pictorial representation, it is well understood that these blocks, apparatus, systems, techniques or methods described herein can be implemented in, as non-limiting examples, hardware, software, firmware, special-purpose circuits or logic, general purpose hardware or controller or other computing devices, or some combination thereof.

[0110] It should be noted that although the embodiments of the present application are described above in conjunction with the drawings, the embodiments above are not independent of each other, and they can also be combined to obtain other embodiments. The manners, cases, categories and divisions of embodiments in the embodiments of the present application are only for the convenience of description, and should not constitute special limitations. The features in various manners, categories, cases and embodiments can be combined with each other as long as they are logically consistent. The various embodiments of the present application can be combined to achieve different technical effects. The embodiments of the present application do not list various combinations again.

[0111] In addition, although the operations of the methods of the present disclosure are described in a particular order in the drawings, this does not require or imply that the operations must be performed in that particular order, or that all of the illustrated operations must be performed to achieve the desired results. On the contrary, the steps depicted in the flowcharts can change the order of execution. Additionally or alternatively, some steps can be omitted, combined into one step, and / or decomposed into multiple steps. It should also be noted that the features and functions of two or more devices according to the present disclosure can be embodied in one device. Conversely, the features and functions of one device described above can be further divided into multiple devices.

[0112] It should also be noted that the terms "comprising," "including," or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but can also include other elements not expressly listed or inherent to such process, method, article, or apparatus. An element proceeded by "comprises a... " does not, without more constraints, exclude the existence of additional identical elements in the process, method, article, or apparatus that comprises the element.

[0113] The above description is merely illustrative of the application, and not restrictive. Various modifications and changes can become apparent to those skilled in the art. Incorporating any modification, equivalent substitution, improvement, etc. within the spirit and principle of the application, shall be included in the scope of the claims of the application.

Claims

1. A map rendering method, characterized by, The map rendering method comprises: According to the current rendering task, the corresponding map data loading resource is started and the map data to be rendered is loaded in parallel; According to the current rendering task, the corresponding map data rendering resource is allocated to the map data to be rendered; The map data to be rendered is rendered in parallel by using the corresponding map data rendering resource of the map data to be rendered, and a map data rendering result is obtained.

2. The map rendering method of claim 1, wherein, According to the current rendering task, the corresponding map data loading resource is started and the map data to be rendered is loaded in parallel, which comprises: Obtain the map data to be rendered and evaluate it to obtain an evaluation result of the map data to be rendered; According to the evaluation result of the map data to be rendered, the corresponding map data loading resource is allocated to the map data to be rendered; According to the current rendering task, the corresponding map data loading resource is started and the map data to be rendered is loaded in parallel.

3. The map rendering method of claim 2, wherein, According to the evaluation result of the map data to be rendered, the map data to be rendered is divided according to a preset data division strategy to obtain a plurality of divided map data; Each divided map data is allocated a corresponding map data loading resource, which comprises a data loading thread and a corresponding cache. According to the current rendering task, the corresponding map data loading resource is started and the map data to be rendered is loaded in parallel, which comprises:

4. The map rendering method of claim 3, wherein, According to the current rendering task, a plurality of map data loading resources are started; Based on the started plurality of map data loading resources, the map data to be rendered corresponding to each map data loading resource is loaded into the cache corresponding to each map data loading resource in parallel. The map data to be rendered comprises different types of map elements to be rendered, and the corresponding map data rendering resource is allocated to the map data to be rendered according to the current rendering task, which comprises:

5. The map rendering method of claim 1, wherein, According to the current rendering task, different map data rendering resources are allocated to different types of map elements to be rendered. The map data to be rendered comprises different types of map elements to be rendered, and the corresponding map data rendering resource is allocated to the map data to be rendered according to the current rendering task, which comprises:

6. The map rendering method of claim 1, wherein, Different types of map elements to be rendered are rendered in parallel by using the corresponding map data rendering resource of the different types of map elements to be rendered, and a rendering result of different types of map elements is obtained; The rendering results of different types of map elements are merged to obtain a final map rendering result. The map rendering method further comprises:

7. The map rendering method according to any one of claims 1 to 6, characterized in that, Collecting map rendering performance data; According to the map rendering performance data, the allocation strategy of the map data loading resource and / or the allocation strategy of the map data rendering resource is adjusted. The map rendering device comprises:

8. A map rendering apparatus, characterized by comprising: A loading unit for starting the corresponding map data loading resource according to the current rendering task and loading the map data to be rendered in parallel; ​ an allocating unit, configured to allocate corresponding map data rendering resources to the map data to be rendered according to the current rendering task; a rendering unit, configured to perform parallel rendering on the map data to be rendered by using the corresponding map data rendering resources of the map data to be rendered, to obtain a map data rendering result.

9. An apparatus comprising: a processor; and a memory arranged to store computer executable instructions that, when executed by the processor, cause the processor to perform the map rendering method of any one of claims 1-7.

10. A computer program product comprising computer programs / instructions, characterized in that, The computer program / instructions, when executed by the processor, implement the map rendering method of any one of claims 1-7.