{"id":168,"date":"2019-10-03T14:15:04","date_gmt":"2019-10-03T12:15:04","guid":{"rendered":"http:\/\/blog.zhaw.ch\/high-performance\/?p=168"},"modified":"2019-12-18T14:15:23","modified_gmt":"2019-12-18T13:15:23","slug":"direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma","status":"publish","type":"post","link":"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/","title":{"rendered":"Direct communication between FPGA and GPU using Frame Based DMA (FDMA)"},"content":{"rendered":"\n<p>By Philipp Huber, Hans-Joachim Gelke, Matthias Rosenthal<\/p>\n\n\n\n<p><strong>GPUs with their immense parallelization are best fitted for real-time video and signal processing. However, in a real-time system, the direct high-speed interface to the signal sources, such as cameras or sensors, is often missing. For this task, field programmable gate arrays (FPGA) are ideal for capturing and preprocessing multiple video streams or high speed sensor data in real time.<br>Besides the partitioning of computational tasks between GPU and FPGA the direct communication between GPU and FPGA is the key challenge in such a design. However, since the Data communication is typically controlled by the CPU, this often becomes the bottleneck of the system<br><br>This blog shows a new method for an efficient GPU-FPGA co-design called Frame based DMA (FDMA) which is based on GPUDirect, but without using the CPU for data transfer. This versatile solution can be used for a variety of different applications, where hard real-time capabilities are required.<\/strong><br><strong>The Institute of Embedded Systems, an entity of Zurich University of Applied Sciences (ZHAW), developed the FDMA methodology for direct data transfers between the FPGA and the GPU. This IP has been compared with an implementation based on the Xilinx XDMA IP. <\/strong><\/p>\n\n\n\n<p><strong>GPUDirect DMA in NVIDIA Devices<\/strong><br>Nvidia Quadro and Tesla GPUs support GPUDirect RDMA mapping of GPU RAM to the Linux IO-memory address space.<br>The CPU and other PCIe devices can access the mapped memory directly. Using GPUDirect the FPGA has direct access to the mapped GPU RAM.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"845\" height=\"424\" src=\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/Screenshot-2019-10-03-at-11.17.37-2.png\" alt=\"\" class=\"wp-image-193\" srcset=\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/Screenshot-2019-10-03-at-11.17.37-2.png 845w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/Screenshot-2019-10-03-at-11.17.37-2-300x151.png 300w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/Screenshot-2019-10-03-at-11.17.37-2-768x385.png 768w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/Screenshot-2019-10-03-at-11.17.37-2-676x339.png 676w\" sizes=\"auto, (max-width: 845px) 100vw, 845px\" \/><figcaption>Fig. 1: Direct transfer without CPU involvement<\/figcaption><\/figure>\n\n\n\n<p><strong>XDMA Implementation from Xilinx<\/strong><br>This implementation is based on the XDMA IP from Xilinx. With this IP the host can initialize any DMA transfer between the FPGA internal address space and the I\/O-memory address space. This allows direct transfers between the FPGA internal address space and the mapped GPU RAM. However, the host has to initialize each data transfer. As a result, an application has to run on the host, which is listening to messages from the devices. This application starts the data transfers if the devices are ready.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"542\" src=\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/xdma_concept-1.png\" alt=\"\" class=\"wp-image-179\" srcset=\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/xdma_concept-1.png 1000w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/xdma_concept-1-300x163.png 300w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/xdma_concept-1-768x416.png 768w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/xdma_concept-1-676x366.png 676w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption>Fig. 2: Xilinx XDMA IP based implementation<\/figcaption><\/figure>\n\n\n\n<p><strong>ZHAW FDMA Implementation<\/strong><br>For this concept of direct FPGA-GPU communication, a special DMA-IP was developed at ZHAW InES. This DMA-IP is called Frame based DMA (FDMA) and is designed to work without any host interactions after system setup. This approach uses the AXI to PCIe Bridge IP from Xilinx to translate AXI transactions to PCIe transactions. FDMA supports multiple RX and TX buffers in the GPU. This allows using one buffer for reading or writing and the other buffers for GPU processing. Each GPU buffer has a flag in the GPU RAM. This flag indicates who has access to this buffer and is used for synchronization between the GPU and the FPGA.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"542\" src=\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/fdma_concept-2.png\" alt=\"\" class=\"wp-image-183\" srcset=\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/fdma_concept-2.png 1000w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/fdma_concept-2-300x163.png 300w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/fdma_concept-2-768x416.png 768w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/fdma_concept-2-676x366.png 676w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption>Fig. 3: InES frame based DMA implementation<\/figcaption><\/figure>\n\n\n\n<p><strong>Achieved Data rates of  FDMA Implementation<\/strong><br>For the following measurements, a Xilinx Kintex 7 FPGA with PCIe Gen2x4 and an Nvidia Quadro P2000 PCIe Gen3x16 have been used.<br>The data rates with the two implementations have been measured with the Xilinx Kintex-7 FPGA and the Nvidia Quadro P2000. The slowest link between them is PCIe Gen2x4 with a link speed of 16Gbit\/s. The Figure 4 shows the average data rate for different transfer sizes. FDMA is faster for small transfers, because the host doesn\u2019t have to initialize every transfer. For larger block sizes the XDMA implementation is faster, because of performance issues in the Xilinx AXI to PCIe Bridge IP.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"616\" src=\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/xdma_fdma_comparison-1.png\" alt=\"\" class=\"wp-image-184\" srcset=\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/xdma_fdma_comparison-1.png 1000w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/xdma_fdma_comparison-1-300x185.png 300w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/xdma_fdma_comparison-1-768x473.png 768w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/xdma_fdma_comparison-1-676x416.png 676w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption>Fig. 4: Average data rates comparing FDMA with XDMA<\/figcaption><\/figure>\n\n\n\n<p><strong>Resulting Transaction Jitter FDMA vs. XDMA<\/strong><br> For real time data processing a low execution jitter is needed. This execution jitter was measured with both implementations by measuring the transfer rate of 10\u2019000\u2019000 data transfers of 32 bytes. Based on these measurements, the three distributions shown in Figure 5 to 7 have been calculated <\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"625\" src=\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/xdma_jitter-1.png\" alt=\"\" class=\"wp-image-185\" srcset=\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/xdma_jitter-1.png 1000w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/xdma_jitter-1-300x188.png 300w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/xdma_jitter-1-768x480.png 768w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/xdma_jitter-1-676x423.png 676w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption>Fig. 5: XDMA transfer jitter<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/12\/fdma_jitter-1024x640.png\" alt=\"\" class=\"wp-image-217\" srcset=\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/12\/fdma_jitter-1024x640.png 1024w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/12\/fdma_jitter-300x188.png 300w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/12\/fdma_jitter-768x480.png 768w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/12\/fdma_jitter-676x423.png 676w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/12\/fdma_jitter.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption><em>Fig. 6: FDMA transfer jitter with FDMA and X11<\/em><\/figcaption><\/figure>\n\n\n\n<p>As these measurements reveal, the XDMA implementation has a huge transaction jitter. This is the case because the Linux host has to initialize every single transfer and Linux is not a real time operating system. The two measurements of the FDMA implementation reveal that there is still a small transaction jitter when the X11 server is running on the same GPU but it disappears nearly completely when disabling the X11 server, as shown in the drawing below.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"358\" src=\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/fdma_jitter_no_x11-2.png\" alt=\"\" class=\"wp-image-187\" srcset=\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/fdma_jitter_no_x11-2.png 1000w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/fdma_jitter_no_x11-2-300x107.png 300w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/fdma_jitter_no_x11-2-768x275.png 768w, https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/fdma_jitter_no_x11-2-676x242.png 676w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption>Fig. 7: FDMA transfer jitter when X11 Server is disabled<\/figcaption><\/figure>\n\n\n\n<p><strong>Conclusion<\/strong><br>Both\n implementations, FDMA and XDMA make use of the direct transfers between\n the FPGA and the GPU and therefore reduce the load on the CPU. The FDMA\n developed at Institute of Embedded Systems does not need any host \ninteraction after setup and such transfer jitter is extremely low. This \nmakes the FDMA implementation perfect for time critical \nstreaming-applications.<\/p>\n\n\n\n<p>For further information please contact hans.gelke@zhaw.ch or matthias.rosenthal@zhaw.ch<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Philipp Huber, Hans-Joachim Gelke, Matthias Rosenthal GPUs with their immense parallelization are best fitted for real-time video and signal processing. However, in a real-time system, the direct high-speed interface to the signal sources, such as cameras or sensors, is often missing. For this task, field programmable gate arrays (FPGA) are ideal for capturing and [&hellip;]<\/p>\n","protected":false},"author":271,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[1],"tags":[],"features":[],"class_list":["post-168","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Direct communication between FPGA and GPU using Frame Based DMA (FDMA) - Embedded High Performance Multimedia Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Direct communication between FPGA and GPU using Frame Based DMA (FDMA)\" \/>\n<meta property=\"og:description\" content=\"By Philipp Huber, Hans-Joachim Gelke, Matthias Rosenthal GPUs with their immense parallelization are best fitted for real-time video and signal processing. However, in a real-time system, the direct high-speed interface to the signal sources, such as cameras or sensors, is often missing. For this task, field programmable gate arrays (FPGA) are ideal for capturing and [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/\" \/>\n<meta property=\"og:site_name\" content=\"Embedded High Performance Multimedia Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-03T12:15:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-12-18T13:15:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/Screenshot-2019-10-03-at-11.17.37-2.png\" \/>\n<meta name=\"author\" content=\"gelk\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"gelk\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/\"},\"author\":{\"name\":\"gelk\",\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/#\/schema\/person\/f4fab1587a03110cf79f1bf51f32ebfa\"},\"headline\":\"Direct communication between FPGA and GPU using Frame Based DMA (FDMA)\",\"datePublished\":\"2019-10-03T12:15:04+00:00\",\"dateModified\":\"2019-12-18T13:15:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/\"},\"wordCount\":819,\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/Screenshot-2019-10-03-at-11.17.37-2.png\",\"articleSection\":[\"Allgemein\"],\"inLanguage\":\"en-GB\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/\",\"url\":\"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/\",\"name\":\"Direct communication between FPGA and GPU using Frame Based DMA (FDMA) - Embedded High Performance Multimedia Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/Screenshot-2019-10-03-at-11.17.37-2.png\",\"datePublished\":\"2019-10-03T12:15:04+00:00\",\"dateModified\":\"2019-12-18T13:15:23+00:00\",\"author\":{\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/#\/schema\/person\/f4fab1587a03110cf79f1bf51f32ebfa\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/#primaryimage\",\"url\":\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/Screenshot-2019-10-03-at-11.17.37-2.png\",\"contentUrl\":\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/Screenshot-2019-10-03-at-11.17.37-2.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.zhaw.ch\/high-performance\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Direct communication between FPGA and GPU using Frame Based DMA (FDMA)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/#website\",\"url\":\"https:\/\/blog.zhaw.ch\/high-performance\/\",\"name\":\"Embedded High Performance Multimedia Blog\",\"description\":\"A Blog of the ZHAW Zurich University of Applied Sciences\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.zhaw.ch\/high-performance\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/#\/schema\/person\/f4fab1587a03110cf79f1bf51f32ebfa\",\"name\":\"gelk\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2016\/05\/blog_portrait-e1464078746248.png\",\"url\":\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2016\/05\/blog_portrait-e1464078746248.png\",\"contentUrl\":\"https:\/\/blog.zhaw.ch\/high-performance\/files\/2016\/05\/blog_portrait-e1464078746248.png\",\"caption\":\"gelk\"},\"url\":\"https:\/\/blog.zhaw.ch\/high-performance\/author\/gelk\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Direct communication between FPGA and GPU using Frame Based DMA (FDMA) - Embedded High Performance Multimedia Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/","og_locale":"en_GB","og_type":"article","og_title":"Direct communication between FPGA and GPU using Frame Based DMA (FDMA)","og_description":"By Philipp Huber, Hans-Joachim Gelke, Matthias Rosenthal GPUs with their immense parallelization are best fitted for real-time video and signal processing. However, in a real-time system, the direct high-speed interface to the signal sources, such as cameras or sensors, is often missing. For this task, field programmable gate arrays (FPGA) are ideal for capturing and [&hellip;]","og_url":"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/","og_site_name":"Embedded High Performance Multimedia Blog","article_published_time":"2019-10-03T12:15:04+00:00","article_modified_time":"2019-12-18T13:15:23+00:00","og_image":[{"url":"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/Screenshot-2019-10-03-at-11.17.37-2.png","type":"","width":"","height":""}],"author":"gelk","twitter_card":"summary_large_image","twitter_misc":{"Written by":"gelk","Estimated reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/#article","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/"},"author":{"name":"gelk","@id":"https:\/\/blog.zhaw.ch\/high-performance\/#\/schema\/person\/f4fab1587a03110cf79f1bf51f32ebfa"},"headline":"Direct communication between FPGA and GPU using Frame Based DMA (FDMA)","datePublished":"2019-10-03T12:15:04+00:00","dateModified":"2019-12-18T13:15:23+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/"},"wordCount":819,"image":{"@id":"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/Screenshot-2019-10-03-at-11.17.37-2.png","articleSection":["Allgemein"],"inLanguage":"en-GB"},{"@type":"WebPage","@id":"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/","url":"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/","name":"Direct communication between FPGA and GPU using Frame Based DMA (FDMA) - Embedded High Performance Multimedia Blog","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/high-performance\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/#primaryimage"},"image":{"@id":"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/Screenshot-2019-10-03-at-11.17.37-2.png","datePublished":"2019-10-03T12:15:04+00:00","dateModified":"2019-12-18T13:15:23+00:00","author":{"@id":"https:\/\/blog.zhaw.ch\/high-performance\/#\/schema\/person\/f4fab1587a03110cf79f1bf51f32ebfa"},"breadcrumb":{"@id":"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/#primaryimage","url":"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/Screenshot-2019-10-03-at-11.17.37-2.png","contentUrl":"https:\/\/blog.zhaw.ch\/high-performance\/files\/2019\/10\/Screenshot-2019-10-03-at-11.17.37-2.png"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.zhaw.ch\/high-performance\/2019\/10\/03\/direct-communication-between-fpga-and-gpu-using-frame-based-dma-fdma\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.zhaw.ch\/high-performance\/"},{"@type":"ListItem","position":2,"name":"Direct communication between FPGA and GPU using Frame Based DMA (FDMA)"}]},{"@type":"WebSite","@id":"https:\/\/blog.zhaw.ch\/high-performance\/#website","url":"https:\/\/blog.zhaw.ch\/high-performance\/","name":"Embedded High Performance Multimedia Blog","description":"A Blog of the ZHAW Zurich University of Applied Sciences","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.zhaw.ch\/high-performance\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/blog.zhaw.ch\/high-performance\/#\/schema\/person\/f4fab1587a03110cf79f1bf51f32ebfa","name":"gelk","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/blog.zhaw.ch\/high-performance\/files\/2016\/05\/blog_portrait-e1464078746248.png","url":"https:\/\/blog.zhaw.ch\/high-performance\/files\/2016\/05\/blog_portrait-e1464078746248.png","contentUrl":"https:\/\/blog.zhaw.ch\/high-performance\/files\/2016\/05\/blog_portrait-e1464078746248.png","caption":"gelk"},"url":"https:\/\/blog.zhaw.ch\/high-performance\/author\/gelk\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/posts\/168","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/users\/271"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/comments?post=168"}],"version-history":[{"count":16,"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/posts\/168\/revisions"}],"predecessor-version":[{"id":219,"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/posts\/168\/revisions\/219"}],"wp:attachment":[{"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/media?parent=168"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/categories?post=168"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/tags?post=168"},{"taxonomy":"features","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/high-performance\/wp-json\/wp\/v2\/features?post=168"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}