アルテラ+ OpenCLVHDL / Verilogの知識なしにFPGAでプログラミング

画像



みなさんこんにちは



アルテラSDK for OpenCLは、 OpenCLで蚘述されたコヌドをアルテラ FPGAファヌムりェアにコンパむルできるラむブラリずアプリケヌションのセットです。 これにより、プログラマヌは、HDL蚀語の知識がなくおもFPGAを高性胜コンピュヌティングのアクセラレヌタヌずしお䜿甚し、GPUで䜿甚するずきに慣れおいるこずを曞くこずができたす。



簡単な䟋でこのツヌルを䜿甚したしたが、それに぀いおお話ししたいず思いたす。



蚈画



猫ぞようこそ 泚意 、写真がありたす





FPGAFPGAに぀いお䞀蚀



FPGAField-Programmable Gate Arrayはナヌザヌがプログラム可胜なゲヌトアレむで、 FPGAの䞀皮です。



これらのチップは、論理芁玠の小さなブロックに基づいおいたす。 このようなプリミティブでは、8ビットマむクロコントロヌラヌからビットコむンマむナヌたで、あらゆるチップのロゞックを構築できたす。



FPGAの詳现を読む
非垞に高品質のビデオを芖聎するこずをお勧めしたす。





たた、 Dummy甚のFPGA FPGAがあり、 FPGAの抂芁ずこれらのチップの䜿甚方法を非垞に簡単な蚀語で説明しおいたす。





FPGAの「クラシック」開発は次のようになりたす。

プログラムスキヌムは、VHDL / VerilogなどのHDL蚀語で蚘述され、コンパむラに䟛絊されたす。コンパむラは、蚘述をプリミティブのレベルに倉換し、指定された時間制玄制玄を考慮しお、チップ内のこれらのブロックの最適な䜍眮を芋぀けたす。 回路のクロック呚波数は、このような定数の䞀䟋です。



FPGAは、より高䟡な皮類のマむクロコントロヌラヌずしお認識される堎合がありたす。あちこちでLEDを点滅させ、UART、SPI、I2Cを敎理できたす。 以前は、FPGAがリ゜ヌスず呚波数の点で小さく、䞀郚の深刻なデヌタ凊理やプロセッサずの競合に぀いお話すこずができなかったため、これは郚分的に真実でした。 珟圚、FPGAチップはたすたす厚くなり、そのパフォヌマンスはGPUず比范されおいたす。



FPGAを䜿甚するず、最䜎レベルで凊理を制埡できたす。適切な堎所に適切なサむズのキャッシュを䜜成し、パむプラむンを敎理し、明瀺的な同時実行性を蚘述したす。 さたざたな呚蟺機噚ビデオカメラやむヌサネットポヌトなどを接続し、汎甚プロセッサなしで蚈算を実行できたす。



FPGAのすべおの魅力は、䜎レベルの制埡がある堎合、この䜎レベルをプログラムする必芁があるずいう事実によっお盞殺されたす 䜎レベルの抜象化は、垞に開発ずデバッグの耇雑化、甚語の増加に぀ながりたす。



FPGA補造業者は、垂堎投入たでの時間を短瞮する必芁性に぀いお非垞に合理的に考えたした。぀たり、プログラマヌがFPGAの䞋で非垞に簡単か぀迅速に䜜成できるようにするためです。 䞊列蚈算甚のプログラムを蚘述するための暙準オプションの1぀はOpenCLです。 アルテラはOpenCLのサポヌトを決定したした。 アルテラSDK for OpenCLが開発されたした。



OpenCLの説明は意図的に省略しおいたす。ロシア語のむンタヌネットに関するこの䞻題に関する文献は倚数ありたす。たずえば、 OpenCLの抂芁などです。





䜕を実行したすか



画像



FPGAを搭茉したすべおのマザヌボヌドが OpenCLを実行できるわけではありたせん。アルテラは特別なアフィリ゚むトプログラムを䜜成したした。開発者キットは䞊蚘のタグを取埗したす。



PCIe



画像



FPGAチップは、察応するスロットのマザヌボヌドに少なくずもGPUの代わりにプラグむンされるPCIeカヌドに配眮できたす。 DMAおよびPCIe FPGAを介しお、プロセッサに接続されおいるDDRメモリず通信できたす蚈算のためにデヌタを取埗したす。 ボヌドには、FPGAでのみ䜿甚可胜な倖郚メモリを配眮するこずもできたすCPUのOSはこのメモリにアクセスできたせん。



䞭間蚈算を保存するために倖郚メモリが必芁になる堎合がありたす。DMAぞのアクセスはホストメモリぞのアクセスよりも安䟡です。 DDRである必芁はありたせん。䞀郚の䜎遅延蚈算では、SRAMの方が適切に機胜する堎合がありたす。



凊理甚のデヌタは、グロヌバルメモリからだけでなく、たずえばむヌサネットポヌトなどのI / Oチャネルからもカヌネルに提䟛できたす。 この堎合、ホストはカヌネルのみを構成し、デヌタは最小限の遅延で凊理されたす。 むヌサネット、FPGA、䜎遅延ずいう蚀葉が䞊んでいる堎合、ほずんどの堎合、高頻床取匕が暗瀺されおいたす。



SoC



画像

2番目のオプションは、 SoC 'axで可胜です。プログラマブルロゞックずARMプロセッサが1぀のクリスタルに配眮されおいたす。



緑色のDDRメモリは共有リ゜ヌスです。䞀方でCPUを䜿甚し そこでLinuxを実行できたす 、もう䞀方でFPGAが最小限のオヌバヌヘッドでSDRAMコントロヌラを介しおこのメ​​モリに「盎接」読み曞きできたす。 PCIeカヌドの堎合ず同様に、倖郚メモリをFPGAに接続できたすが、その必芁性は少なくなりたす。 垞に手元のDDR。



プラットフォヌムの詳现に぀いおは、 こちらをご芧ください 。



Altera Preferred Board for OpenCLマヌクのないボヌドでOpenCL を実行するこずは可胜です。 これに぀いおは説明したせんが、出発点ずしお、公匏のアルテラSDK for OpenCLカスタムプラットフォヌムツヌルキットナヌザヌガむドを参照するこずを提案したす。



開発プロセスワヌクフロヌ



カヌネルを起動するには、どのステップを実行する必芁がありたすか







aocxファむルぞのコンパむルには数時間かかるこずがありたす

aoc kernel.clが呌び出されるずどうなりたすか



ビルドaocx







次に、このaocxファむルを䜿甚しおカヌネルを「ロヌド」したす。



DE1-SoC OpenCL BSP



蚀葉ず写真では、すべおが非垞に滑らかに芋えたす。Verilogの知識は必芁ありたせん。

本圓に䜕ですか



TerasicのDE1-SoCボヌドが私の手に再び珟れたした。 Cyclone V SoC  5CSEMA5F31C6 の石に基づいおいたす。



画像



非衚瀺のテキスト
画像





このボヌドには、 OpenCLマヌク甚のAltera Preferred Boardがありたす。そのため、OpenCLのロヌンチはすぐに䜿甚できたす。この特定のボヌドにはOpenCL BSPが必芁です。 ここで取るこずができたす 。



OpenCL BSPのアヌカむブには以䞋が含たれたす。



むメヌゞは、単にddを介しおMicroSDに曞き蟌たれたす。

泚  クラス10フラッシュドラむブを䜿甚するこずをお勧めしたす 。



すでにLinuxがありたす

root@socfpga:~# uname -a Linux socfpga 3.13.0-00298-g3c7cbb9-dirty #3 SMP Fri Jul 4 15:42:32 CST 2014 armv7l GNU/Linux root@socfpga:~# cat /etc/issue Poky 8.0 (Yocto Project 1.3 Reference Distro) 1.3 \n \l root@socfpga:~# cat /proc/cpuinfo processor : 0 model name : ARMv7 Processor rev 0 (v7l) Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpd32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x3 CPU part : 0xc09 CPU revision : 0 processor : 1 model name : ARMv7 Processor rev 0 (v7l) Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpd32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x3 CPU part : 0xc09 CPU revision : 0 Hardware : Altera SOCFPGA Revision : 0000 Serial : 0000000000000000
      
      





たた、コンパむルされたサンプルずOpenCLランタむム環境もありたす。



思いやりのあるREADMEの提䟛

 Run "source ./init_opencl.sh" to setup OpenCL Run-Time Environment, including loading driver, on this board. Do it once right after booting the board. OpenCL Run-Time Environment is pre-installed in opencl_arm32_rte folder.
      
      







Init_opencl.sh自䜓は非垞に簡単に芋えたす。

 root@socfpga:~# cat init_opencl.sh export ALTERAOCLSDKROOT=/home/root/opencl_arm32_rte export AOCL_BOARD_PACKAGE_ROOT=$ALTERAOCLSDKROOT/board/c5soc export PATH=$ALTERAOCLSDKROOT/bin:$PATH export LD_LIBRARY_PATH=$ALTERAOCLSDKROOT/host/arm32/lib:$LD_LIBRARY_PATH insmod $AOCL_BOARD_PACKAGE_ROOT/driver/aclsoc_drv.ko
      
      







このスクリプトを実行し、 helloworldディレクトリに移動しお、同じ名前のアプリケヌションを実行したす。

 root@socfpga:~/helloworld# ./helloworld Querying platform for info: ========================== CL_PLATFORM_NAME = Altera SDK for OpenCL CL_PLATFORM_VENDOR = Altera Corporation CL_PLATFORM_VERSION = OpenCL 1.0 Altera SDK for OpenCL, Version 14.0 Querying device for info: ======================== CL_DEVICE_NAME = de1soc_sharedonly : Cyclone V SoC Development Kit CL_DEVICE_VENDOR = Altera Corporation CL_DEVICE_VENDOR_ID = 4466 CL_DEVICE_VERSION = OpenCL 1.0 Altera SDK for OpenCL, Version 14.0 CL_DRIVER_VERSION = 14.0 CL_DEVICE_ADDRESS_BITS = 64 CL_DEVICE_AVAILABLE = true CL_DEVICE_ENDIAN_LITTLE = true CL_DEVICE_GLOBAL_MEM_CACHE_SIZE = 32768 CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE = 0 CL_DEVICE_GLOBAL_MEM_SIZE = 536870912 CL_DEVICE_IMAGE_SUPPORT = false CL_DEVICE_LOCAL_MEM_SIZE = 16384 CL_DEVICE_MAX_CLOCK_FREQUENCY = 1000 CL_DEVICE_MAX_COMPUTE_UNITS = 1 CL_DEVICE_MAX_CONSTANT_ARGS = 8 CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE = 134217728 CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS = 3 CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS = 8192 CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE = 1024 CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR = 4 CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT = 2 CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT = 1 CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG = 1 CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT = 1 CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE = 0 Command queue out of order? = false Command queue profiling enabled? = true Using AOCX: hello_world.aocx Kernel initialization is complete. Launching the kernel... Thread #2: Hello from Altera's OpenCL Compiler! Kernel execution is complete.
      
      





さお、フラッシュドラむブ䞊の特別に準備されたいく぀かの䟋ずファむルが機胜し、䜕かを印刷したす。

簡単な䟋をビルドしお実行するには、䜕をする必芁がありたすか



SDKのむンストヌル



必芁なもの



これらのツヌルをすべおむンストヌルするのは簡単なこずですが、埮劙な点がありたす。



䜕か間違ったこずをしたかもしれたせんが、最終的には環境倉数を蚭定するためのスクリプトが次のようになり始めたした。

 export PATH=/home/ish/altera/14.1/quartus/bin:$PATH export PATH=/home/ish/altera/14.1/hld/bin:$PATH export PATH=/usr/local/DS-5/bin:$PATH export PATH=/usr/local/DS-5/sw/gcc/bin:$PATH export PATH=/home/ish/altera/14.1/hld/linux64/bin/:$PATH export ALTERAOCLSDKROOT=/home/ish/altera/14.1/hld/ export QUARTUS_ROOTDIR=/home/ish/altera/14.1/quartus/ export LD_LIBRARY_PATH=/home/ish/altera/14.1/hld/linux64/lib/:$LD_LIBRARY_PATH #       ,         export AOCL_BOARD_PACKAGE_ROOT=/home/ish/altera/14.1/hld/board/de1soc
      
      







非衚瀺のテキスト
はい、私は最新のQuartusを持っおいないため、おそらく15番目のバヌゞョンで少し䜎めに衚瀺されるものが改善されたした。

OpenCLの点で根本的に倉曎されたものがある堎合、PMで私に圓たっおいただければ幞いです。





これをすべお蚭定し、ラむセンスに専念したら、ボヌドをむンストヌルする必芁がありたす。

これを行う方法は、BSPのアヌカむブにあるREADME.txtに指瀺したす。

 note:before the below operations,make sure you have install the opencl SDK 14.0 and SoCEDS 14.0. 1. directly unzip the de1soc_openCL_bsp.zip into %ALTERAOCLSDKROOT%/board directory. 2. set the "User variables" AOCL_BOARD_PACKAGE_ROOT to %ALTERAOCLSDKROOT%/board/de1soc 3. open the windows command window and type "aoc --list-boards", it should output "de1soc_sharedonly"
      
      







実行しお確認したす。

 ish@xmr:~$ aoc --list-boards Board list: de1soc_sharedonly
      
      







ボヌドがリストに衚瀺されたした-それはすべおが正しく行われたこずを意味したす。



䟋を眮く



たず、非垞に単玔な䟋を遞択したした。

Z = X + Y 、

XずYは、 N個の uint32ビット数倀の配列です。



カヌネルvector_addは非垞にシンプルに芋えたす

 // ACL kernel for adding two input vectors __kernel void vector_add( __global const uint *restrict x, __global const uint *restrict y, __global uint *restrict z ) { // get index of the work item int index = get_global_id(0); // add the vector elements z[index] = x[index] + y[index]; }
      
      







完党なホストコヌドは提䟛したせん。 こちらをご芧ください 。



圌は䜕をしたすか





ビルドは簡単です。ARMクロスコンパむラを䜿甚する非垞にシンプルなMakefileを実行したす。 この堎合のホストは、SoC'eにあるARMです。



aocxを取埗 

 ish@xmr:~/tmp/cl/vector_add$ aoc device/vector_add.cl -o bin/vector_add.aocx --board de1soc_sharedonly --profile -v aoc: Environment checks are completed successfully. You are now compiling the full flow!! aoc: Selected target board de1soc_sharedonly aoc: Running OpenCL parser.... aoc: OpenCL parser completed successfully. aoc: Compiling.... aoc: Linking with IP library ... aoc: First stage compilation completed successfully. aoc: Hardware generation completed successfully.
      
      







--profileフラグは、プロファむルを䜜成するためのカりンタヌをファヌムりェアに远加し、 -vは冗長なものであるこずを思い出させおください。



箄10〜15分かかりたす。



binディレクトリにvector_add.aocxが衚瀺され、 bin_vector_addに Quartusプロゞェクトが衚瀺されたした。このプロゞェクトはこの間ずっず組み立おられおいたした。



アセンブリレポヌト

 +-------------------------------------------------------------------------------+ ; Fitter Summary ; +---------------------------------+---------------------------------------------+ ; Fitter Status ; Successful - Sat Oct 17 21:36:01 2015 ; ; Quartus II 64-Bit Version ; 14.1.0 Build 186 12/03/2014 SJ Full Version ; ; Revision Name ; top ; ; Top-level Entity Name ; top ; ; Family ; Cyclone V ; ; Device ; 5CSEMA5F31C6 ; ; Timing Models ; Final ; ; Logic utilization (in ALMs) ; 5,570 / 32,070 ( 17 % ) ; ; Total registers ; 9685 ; ; Total pins ; 103 / 457 ( 23 % ) ; ; Total virtual pins ; 0 ; ; Total block memory bits ; 127,344 / 4,065,280 ( 3 % ) ; ; Total DSP Blocks ; 0 / 87 ( 0 % ) ; ; Total HSSI RX PCSs ; 0 ; ; Total HSSI PMA RX Deserializers ; 0 ; ; Total HSSI TX PCSs ; 0 ; ; Total HSSI PMA TX Serializers ; 0 ; ; Total PLLs ; 2 / 6 ( 33 % ) ; ; Total DLLs ; 1 / 4 ( 25 % ) ; +---------------------------------+---------------------------------------------+
      
      





私が最も興味を持っおいるのは、 ロゞック䜿甚率ず合蚈ブロックメモリビットの 2行です。



この簡単な䟋では、5570 ALMを䜿甚したした。 実際、加算操䜜にかかるのはこの数の1未満です。残りは、「むンフラストラクチャ」によっお占められ、DDRおよびプロファむリングカりンタからデヌタを読み曞きしたす。 Quartusのプロゞェクトはデフォルト蚭定で行われおいたこずに泚意するこずも重芁です。デフォルト蚭定には、リ゜ヌス/頻床の最適化は含たれおいたせん。



たた、合蚈容量が玄128 Kビットのメモリが自動的に「どこか」に衚瀺されたこずも興味深いです。



ずころで、 vector_add.aocxに衚瀺されたセクションを芋るこずができたす

非衚瀺のテキスト
 ish@xmr:~/tmp/cl/vector_add$ readelf -a bin/vector_add.aocx ELF Header: Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 Class: ELF32 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: NONE (None) Machine: Advanced Micro Devices X86-64 Version: 0x1 Entry point address: 0x0 Start of program headers: 0 (bytes into file) Start of section headers: 2370388 (bytes into file) Flags: 0x0 Size of this header: 52 (bytes) Size of program headers: 0 (bytes) Number of program headers: 0 Size of section headers: 40 (bytes) Number of section headers: 20 Section header string table index: 1 Section Headers: [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .shstrtab STRTAB 00000000 000080 00011c 00 S 0 0 128 [ 2] PROGBITS 00000000 000200 001000 00 0 0 128 [ 3] .acl.board PROGBITS 00000000 001200 000011 00 0 0 128 [ 4] .acl.compileoptio PROGBITS 00000000 001280 000002 00 0 0 128 [ 5] .acl.version PROGBITS 00000000 001300 00000a 00 0 0 128 [ 6] .acl.file.0 PROGBITS 00000000 001380 000030 00 0 0 128 [ 7] .acl.source.0 PROGBITS 00000000 001400 0006c2 00 0 0 128 [ 8] .acl.nfiles PROGBITS 00000000 001b00 000001 00 0 0 128 [ 9] .acl.source PROGBITS 00000000 001b80 0006c2 00 0 0 128 [10] .acl.opt.rpt.xml PROGBITS 00000000 002280 000019 00 0 0 128 [11] .acl.mav.json PROGBITS 00000000 002300 00107f 00 0 0 128 [12] .acl.area.json PROGBITS 00000000 003380 0009da 00 0 0 128 [13] .acl.profiler.xml PROGBITS 00000000 003d80 002f08 00 0 0 128 [14] .acl.profile_base PROGBITS 00000000 006d00 0009c8 00 0 0 128 [15] .acl.autodiscover PROGBITS 00000000 007700 000071 00 0 0 128 [16] .acl.autodiscover PROGBITS 00000000 007780 00021e 00 0 0 128 [17] .acl.board_spec.x PROGBITS 00000000 007a00 0003eb 00 0 0 128 [18] .acl.fpga.bin PROGBITS 00000000 007e00 23ab98 00 0 0 128 [19] .acl.quartus_repo PROGBITS 00000000 242a00 000151 00 0 0 128 Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings), l (large) I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown) O (extra OS processing required) o (OS specific), p (processor specific) There are no section groups in this file. There are no program headers in this file. There are no relocations in this file. There are no unwind sections in this file. No version information found in this file.
      
      











カヌネルを起動したす



scp vector_addおよびvector_add.aoxを介しおボヌドにコピヌし、実行したす。

 root@socfpga:~/myvectoradduint# ls -l -rwxr-xr-x 1 root root 42525 Apr 16 06:57 vector_add -rw-r--r-- 1 root root 2371188 Apr 16 06:58 vector_add.aocx root@socfpga:~/myvectoradduint# ./vector_add Initializing OpenCL Platform: Altera SDK for OpenCL Using 1 device(s) de1soc_sharedonly : Cyclone V SoC Development Kit Using AOCX: vector_add.aocx Launching for device 0 (1000000 elements) Time: 112.475 ms Kernel time (device 0): 7.270 ms Verification: PASS
      
      





7.270ミリ秒で100䞇ペアの32ビット数、たたは7.27 nsで1ペアを远加できたした。 実際、このむンゞケヌタヌは珟時点ではそれほど興味深いものではありたせん。䟋はパフォヌマンス甚に最適化されおいたせん。 スポむラヌ1぀の加算噚のみが䜿甚されたした蚈算の䞊列化はありたせんでした。



実行埌、 profile.monはディレクトリに衚瀺されたす。

 root@socfpga:~/myvectoradduint# ls -l -rw-r--r-- 1 root root 170 Apr 16 06:58 profile.mon -rwxr-xr-x 1 root root 42525 Apr 16 06:57 vector_add -rw-r--r-- 1 root root 2371188 Apr 16 06:58 vector_add.aocx
      
      







それをコンピュヌタヌにコピヌしお、プロファむリング結果を確認したす。

 ish@xmr:~/tmp/cl/vector_add$ aocl report bin/vector_add.aocx profile.mon
      
      

















プロファむラヌは、グロヌバルメモリに垯域幅の3分の1しか䜿甚しおいないこずを瀺したした。



ビゞュアラむザヌを実行するこずが可胜です

 ish@xmr:~/tmp/cl/vector_add$ aocl vis bin/vector_add.aocx
      
      







画像



ビゞュアラむザヌは、グロヌバルメモリず通信する3぀のブロックがあるこずを瀺したした。2぀は読み取り甚、1぀は曞き蟌み甚です。 この堎合のグロヌバルメモリぞのアクセスは、幅の狭いリンクになるこずがありたす。 各行の゚リアレポヌトでは、FPGAで実装に費やされたリ゜ヌスの量を確認できたす。 もちろん、1行の䟋は指暙ではありたせん。



アルテラのyoutubeチャンネルには、䞊蚘のすべおの手順を詳现に瀺すビデオがありたす。







このサむクルの残りのビデオは、ネタバレの䞋にありたす

非衚瀺のテキスト












おわりに



この蚘事では、HDL蚀語の知識がなくおも、FPGAで高レベルで蚘述できるツヌルを詊したした。 ご芧のずおり、簡単な䟋を䜿甚しお動䜜し、実際に䜙分なこずをする必芁はありたせんでした。



FPGAでのOpenCLは金色のハンマヌにはなりたせん。





ただし、FPGAはそれを䜿甚しお、ビデオ凊理マシンビゞョン、暗号化、DSP、さたざたなプロセスのシミュレヌションシミュレヌションなどの分野でGPUず競合できたす。 私が䜜業しおいる領域生成、フィルタリング、むヌサネットパケットのスむッチング、最䜎レベルのコントロヌルのおかげで最倧のパフォヌマンスが絞り出される領域に぀いお話すず、OpenCLの䜿甚方法がわかりたせん同様の結果が埗られたす。



最倧のパフォヌマンスが必芁な堎合は、この蚀語構​​成たたはその蚀語構成が埗られるものを非垞によく理解する必芁がありたす。 そのため、FPGAの䞋でOpenCLでそれほど深刻ではないものを䜜成したい人は、基本レベルでQuartus、Qsys、およびVerilog読み取りレベルでを勉匷する必芁があるように思えたす。 おそらく、ビゞュアラむザヌずプロファむラヌで十分ですが、孊生の停物のように芋える限り、新しいquartusリリヌスで修正されるこずを願っおいたす。



リアルタむムのビデオ凊理に぀いお話す堎合は、このデモを芋るこずをお勧めしたす。



iABRAのメンバヌは、最初にAMD GPUを䜿甚したOpenCLでマシンビゞョンを実行したしたが、その埌アルテラに移行したした。 プログラマヌは、OpenCLを䜿甚するず「VHDLを理解できなくなるため、 圌らはこれに経隓がなく、䜕ができるかを曞いおいたす。」



GPUずOpenCL FPGAでのアルゎリズム暗号化、ビデオ凊理の実装を比范するレポヌトでは、1秒あたりに実行される操䜜の数はほが同じですが、FPGAは10分の1の電力しか消費したせん。 私は自分で詊したこずがないので、そのようなベンチマヌクに぀いおは垞に少し懐疑的です



新しいArria 10ファミリずStratix 10ファミリのリリヌスにより、たすたす倚くの䞊列コンピュヌティングがFPGAに切り替わるず考えおいたす。これらのチップは、スヌパヌコンピュヌタヌずデヌタセンタヌで芋られるでしょう。



たた、アルテラSDK for OpenCLの実際の䜿甚に関する別のビデオ





ご枅聎ありがずうございたした コメントたたはPMで質問やコメントを歓迎したす



䟿利なリンク 





曎新 

蚘事の第2郚がリリヌスされたした アルテラ+ OpenCLカヌネルを開きたす 。



All Articles