所以就嘗試了一下如何安裝
因為板子還沒來,所以(一)就是軟體模擬的部份(使用官網的 14.1 範例)
希望會有 (二)跟 (三)之類的
因為自己的電腦是 Linux Mint 17.1
他的檔案應該是為了 CentOS 提供的
而且自己是用 zsh
加上這個版本 bash completion 似乎有點問題?
所以會講解這個設定下需要的修改
以下這次的大綱
- 安裝 driver
- 環境變數設定
- 編譯主機端程式 (host code)
- 執行模擬
- zsh 的 script
安裝 driver
理論上來說,用 root 執行這個指令應該就可以安裝 driver 了aocl install但是因為環境不同,所以會出一些問題
不同 Linux 版本下路徑設定的問題
因為 CentOS 放資料的路徑不同,所以要這樣作
好像要先安裝 debian 下 kernel-devel 的對應套件?
但是我以前裝過了,所以也不知道叫啥
請注意核心版本號
cd /usr/src
mkdir kernels && cd kernels
ln -s ../linux-headers-3.13.0-37-generic headers-3.13.0-37-generic
事後移除,甚至無視這個錯誤訊息好像也沒關係
mkdir -p /etc/sysconfig/modules/
編譯器以及核心版本問題
因為核心API改變,所以有一些地方會編譯錯誤
不需要這兩個 macro 了
改名了
aclpci_cmd.c
aclpci.c
#define __devinit
#define __devexit
aclpci_cmd.c
pci_dev->aer_firmware_first ⇒ pci_dev->__aer_firmware_first
腦袋有洞的 code?
或許以前真的會回傳值吧aclpci_cmd.c
result = pci_restore_state(aclpci->pci_dev);
⇒ pci_restore_state(aclpci->pci_dev);
驗證安裝
應該有東西輸出
lsmod | grep aclpci_drv裝上或是卸載驅動程式(*.ko 的位置是固定的嗎?)
insmod /lib/modules/3.13.0-37-generic/misc/aclpci_drv.ko
rmmod aclpci_drv
環境變數設定
大約是這樣,自己改就好了
不過預設沒有 DE5 的 board package,自己去 Terasic 抓
要注意的是,「可能」要把 Altera OpenCL 跟 Quartus 裝在一個目錄下
License 自己處理
QUARTUS_ROOT=/opt/altera/14.1
AOCL_ROOT=/opt/altera/14.1/hld
export PATH=${PATH}:${QUARTUS_ROOT}/bin:${AOCL_ROOT}/bin
export QUARTUS_ROOTDIR=$QUARTUS_ROOT
export QUARTUS_64BIT=1
export ALTERAOCLSDKROOT=$AOCL_ROOT
export AOCL_BOARD_PACKAGE_ROOT=$AOCL_ROOT/board/terasic/de5net
source $AOCL_ROOT/init_opencl.sh
編譯主機端程式 (host code)
這時候把範例的 Makefile 直接拿來編譯應該就會編譯成功了。
make VERBOST=1 DEBUG=1
Makefile 裡面用到了 aocl(有類似 pkg-config 的功能)。執行模擬
官方文件上面寫這樣就能產生模擬需要的 aocx 檔案
aoc -march=emulator vector_add.cl
把 aocx 複製到執行檔同一個目錄下
輸入這樣就能執行了
CL_CONTEXT_EMULATOR_DEVICE_ALTERA=1 ./vector_add
Initializing OpenCL
Emulator runtime library missing in host program.
Please relink host with -lacl_emulator_kernel_rt
可是剛剛編譯參數明明有這個啊?
原來某個版本之後的 linker 不會把沒用到的 *.so 檔加入執行檔內
所以要在 Makefile 改這行
AOCL_LINK_CONFIG := $(shell aocl link-config)
⇒ AOCL_LINK_CONFIG := -Wl,--no-as-needed $(shell aocl link-config)
之後執行應該就會過了
Initializing OpenCL
Platform: Altera SDK for OpenCL
Using 1 device(s)
EmulatorDevice : Emulated Device
Using AOCX: vector_add.aocx
Launching for device 0 (1000000 elements)
Time: 8985.262 ms
Kernel time (device 0): 8982.419 ms
Verification: PASS
zsh 的 script
init_opencl.sh 裡面有一些語法不相容 zsh,所以需要的話要改一下
前幾行有用 BASH_SOURCE 去決定這個檔案是不是被 source
zsh 的字串相等是用 = 而不是 ==,要改
結論
這邊講解了怎麼讓 DE5 OpenCL DE5 的範例 (14.1) 在 Linux Mint 17.1 動起來
使用了 Altera OpenCL 的模擬模式
如果可以的話也想研究範例程式怎麼動的
另外,希望等板子來了以後會有後續
沒有留言:
張貼留言