在Windows使用Android Studio, 開啟模擬器時, 可能會遇到底下的錯誤訊息.
Cannot launch AVD in emulator.
Output:
emulator: ERROR: x86 emulation currently requires hardware acceleration!
Please ensure Intel HAXM is properly installed and usable.
CPU acceleration status: HAX kernel module is not installed!
這個可能是因為你在建立Virtual Device時, 選用x86 或是x86_64所造成的結果.
你應該也可以使用ARM的方式去執行模擬器, 這樣子就不用安裝intel硬體加速器套件了.
當你在Windows的環境下, 建議使用x86或x86_64的方式去建立, 因為再加上intel的硬體加速功能後, 模擬器的模擬速度會快很多, 操作起來會比較不會卡卡的.
而上面遇到的錯誤訊息就是告訴你, 你沒有裝x86硬體加速功能, 因此無法啟動模擬器.
所以我們要把intel hardware acceleration安裝起來.
首先第一件事情, 要先下載intel hardware acceleration套件
(1)
點選Android Studio裏->Tools->Android->SDK Manager
然後找到下圖所在位置, 有個紅色框起來的"Intel x86 Emulator Accelerator"這個把它打勾.
打勾後, 按下OK或是Apply它就會自已抓下來了(但沒有自動安裝).
在剛剛勾選"Intel x86 Emulator Accelerator"那個視窗, 最上面有個"Android SDK Location"的路徑, 每個人其安裝路徑會不同. 如下圖綠色框起來的地方.
我們要去找到"Intel x86 Emulator Accelerator"的安裝地方, 因此需要SDK的路徑.
開啟檔案總管後, 先進入SDK安裝的目錄, 如下圖
由SDK路徑找出->extras->intel->Hardware_Accelerated_Execution_Mnager->intelhaxm-android.exe
然後執行intelhaxm-android.exe, 就會開始安裝這個套件的流程.
需注意: 你的電腦需要開啟intel virtualization technology功能.
安裝完intel hardware acceleration, 你就可以再回到Android Studio執行看看你的模擬器了!
2015年11月21日 星期六
2015年5月14日 星期四
SystemC Tutorial
台灣大學的的SystemC教學影片
SystemC Tutorial I
http://www.camdemy.com/media/12892
SystemC Tutorial II
http://www.camdemy.com/media/13154/
SystemC Tutorial I
http://www.camdemy.com/media/12892
SystemC Tutorial II
http://www.camdemy.com/media/13154/
2013年12月2日 星期一
Open Virtual Platforms - the source of Fast Processor Models & Platforms
Open Virtual Platforms - the source of Fast Processor Models & Platforms
Welcome to one of the most exciting open source software developments in the embedded software world since GNU created GDB. OVP: Fast Simulation, Free open source models, Public APIs: Open Virtual Platforms.
If you are developing embedded software then virtual platforms will be increasingly important to you - especially if you are working on designs with more than one processor - then this portal will become an important resource for you.
Different between QEMU
Both of then are free, but great for multiprocessor platforms with arbitrary shared and local memory configurations.
Simulation of processors with virtual memory with almost no performance penalty.
Peripheral Simulation Engine (PSE)
Fast
Welcome to one of the most exciting open source software developments in the embedded software world since GNU created GDB. OVP: Fast Simulation, Free open source models, Public APIs: Open Virtual Platforms.
If you are developing embedded software then virtual platforms will be increasingly important to you - especially if you are working on designs with more than one processor - then this portal will become an important resource for you.
Different between QEMU
Both of then are free, but great for multiprocessor platforms with arbitrary shared and local memory configurations.
Simulation of processors with virtual memory with almost no performance penalty.
Peripheral Simulation Engine (PSE)
Fast
2013年10月11日 星期五
VIM顯示trailing white space
筆記一下, 這個還蠻不錯用的
" Highlight spaces at eol or before tab or after tab
" Highlight spaces at eol or before tab or after tab
highlight RedundantSpaces term=standout ctermbg=Grey guibg=#ffddcc
match RedundantSpaces /\s\+$\| \+\ze\t/
2013年8月21日 星期三
MPI基本函式介紹
MPI_Init (ierr)
啟動 MPI,所有 MPI 指令之前要有這個初始化指令,唯一個引數是必須宣告成整數的 ierr,如果初始化成功,則 ierr 的傳回值是零。
MPI_Finalize (ierr)
關閉 MPI,結束多個 CPU 協同工作的狀態。正常關閉的話則整數 ierr 的回傳值是零。
MPI_Comm_rank (communicator, my_rank, ierr)
獲得此 CPU 在全體多 CPU 中的排行順序,排名的編號會存在整數變數 my_rank 裏(從零開始),每個參與的 CPU 都會分到一個連號但不重覆的數字(像到郵局辦事領號碼牌那樣)。communicator 是在選通訊裝置,一般都是用預設的 MPI_COMM_WORLD 不用自己改(參見範例),至於 ierr 則是和前面一種作為錯誤或正常的旗標。
MPI_Comm_size (communicator, nproc, ierr)
獲得全體有多少個 CPU 的數目(通常用於切割工作份量的基礎),整數變數 nproc 回傳給每一個 CPU 同樣的數值,即共有多少個 CPU 正在一起工作。ierr 是錯誤回傳檢查用,communicator 的定義與用法跟前面的定義一樣。
MPI_Send (buf, count, datatype, dest, tag, communicator, ierr)
送出(由現在這個 CPU 送出一串資料給另一個 CPU),buf 是指要傳送的那一串資料變數的名稱(也就是第一筆資的位址),count 是資料的長度(從前面定的起點開始算起),datatype 是要被傳送之資料的數值型態,只有幾種常見的固定類型,如 MPI_REAL、MPI_INTEGER 等;整數 dest 是要傳的目的地 CPU 的 rank 編號,至於 整數 tag 則是寫程式的人自已設定的標籤。標籤的功能在這裏可以說明一下,當來源端 CPU 發送資料時,送出來的資料未必會被目的地 CPU 收到相同名稱的變數裏,有可能不止送一包資料,也有可能到達的先後順序會打亂,因此一定要利用標簽來設定每一包資料串有精準被接收到。
MPI_Send 指令是一個阻擋性 (blocking) 的指令,也就是說它要等到收到它在等待的東西才會釋放控制權給主程式去執行下一個指令。
MPI_Recv (buf, count, datatype, source, tag, communicator, status, ierr)
接收。其中前三個引數 buf、count、datatype 與前面定義一樣,souce 是來源 CPU 的編號,tag 則是要與送方指令相同的整數值,作為接收的認證。隨後的 communicator 與 ierr 與前面同。值得注意是 status ,它是用來表示接收的狀態。接收與送出有一點點不同,送出是可以立即動作的,然而接收就並不是下了接收指令就可以馬上進行完成,因為總是要等待資料到達。
MPI_Bcast(buf,n,mpi_datatype,i_src_node,MPI_COMM_WORLD,ierr)
廣播 (Broadcast),意指一個 CPU 放送資料出來,其他 CPU 接收,共同取得該比資料的內容。欲傳送資料的啟始位置是 buf 、長度(資料筆數)是 n 、 i_src_node 是 發送源 之 CPU 編號,其他 mpi_datatype 、MPI_COMM_WORLD、ierr 則是與前面的定義的一樣
MPI_Reduce(buf,result,n,mpi_datatype,mpi_op_type,i_trgt_node, MPI_COMM_WORLD,ierr)
收集各個 CPU 上的結果。其中 mpi_op_type 可以是 MPI_SUM 或 MPI_PRODUCT, 而結果則收集到 i_trgt_node 的 result 變數上(並不是每個 node 的 result 都更新)。
MPI_Get_processor_name (nodename,nchar,ierr)
nodename 是字串變數,它會回傳該 CPU 所在的機器名稱; nchar 是整數,回傳 nodename 內含的字元數
啟動 MPI,所有 MPI 指令之前要有這個初始化指令,唯一個引數是必須宣告成整數的 ierr,如果初始化成功,則 ierr 的傳回值是零。
MPI_Finalize (ierr)
關閉 MPI,結束多個 CPU 協同工作的狀態。正常關閉的話則整數 ierr 的回傳值是零。
MPI_Comm_rank (communicator, my_rank, ierr)
獲得此 CPU 在全體多 CPU 中的排行順序,排名的編號會存在整數變數 my_rank 裏(從零開始),每個參與的 CPU 都會分到一個連號但不重覆的數字(像到郵局辦事領號碼牌那樣)。communicator 是在選通訊裝置,一般都是用預設的 MPI_COMM_WORLD 不用自己改(參見範例),至於 ierr 則是和前面一種作為錯誤或正常的旗標。
MPI_Comm_size (communicator, nproc, ierr)
獲得全體有多少個 CPU 的數目(通常用於切割工作份量的基礎),整數變數 nproc 回傳給每一個 CPU 同樣的數值,即共有多少個 CPU 正在一起工作。ierr 是錯誤回傳檢查用,communicator 的定義與用法跟前面的定義一樣。
MPI_Send (buf, count, datatype, dest, tag, communicator, ierr)
送出(由現在這個 CPU 送出一串資料給另一個 CPU),buf 是指要傳送的那一串資料變數的名稱(也就是第一筆資的位址),count 是資料的長度(從前面定的起點開始算起),datatype 是要被傳送之資料的數值型態,只有幾種常見的固定類型,如 MPI_REAL、MPI_INTEGER 等;整數 dest 是要傳的目的地 CPU 的 rank 編號,至於 整數 tag 則是寫程式的人自已設定的標籤。標籤的功能在這裏可以說明一下,當來源端 CPU 發送資料時,送出來的資料未必會被目的地 CPU 收到相同名稱的變數裏,有可能不止送一包資料,也有可能到達的先後順序會打亂,因此一定要利用標簽來設定每一包資料串有精準被接收到。
MPI_Send 指令是一個阻擋性 (blocking) 的指令,也就是說它要等到收到它在等待的東西才會釋放控制權給主程式去執行下一個指令。
MPI_Recv (buf, count, datatype, source, tag, communicator, status, ierr)
接收。其中前三個引數 buf、count、datatype 與前面定義一樣,souce 是來源 CPU 的編號,tag 則是要與送方指令相同的整數值,作為接收的認證。隨後的 communicator 與 ierr 與前面同。值得注意是 status ,它是用來表示接收的狀態。接收與送出有一點點不同,送出是可以立即動作的,然而接收就並不是下了接收指令就可以馬上進行完成,因為總是要等待資料到達。
MPI_Bcast(buf,n,mpi_datatype,i_src_node,MPI_COMM_WORLD,ierr)
廣播 (Broadcast),意指一個 CPU 放送資料出來,其他 CPU 接收,共同取得該比資料的內容。欲傳送資料的啟始位置是 buf 、長度(資料筆數)是 n 、 i_src_node 是 發送源 之 CPU 編號,其他 mpi_datatype 、MPI_COMM_WORLD、ierr 則是與前面的定義的一樣
MPI_Reduce(buf,result,n,mpi_datatype,mpi_op_type,i_trgt_node, MPI_COMM_WORLD,ierr)
收集各個 CPU 上的結果。其中 mpi_op_type 可以是 MPI_SUM 或 MPI_PRODUCT, 而結果則收集到 i_trgt_node 的 result 變數上(並不是每個 node 的 result 都更新)。
MPI_Get_processor_name (nodename,nchar,ierr)
nodename 是字串變數,它會回傳該 CPU 所在的機器名稱; nchar 是整數,回傳 nodename 內含的字元數
資料來源:
2013年8月19日 星期一
Message Passing Interface
Message Passing Interface (MPI) is a standardized and portable message-passing system designed by a group of researchers from academia and industry to function on a wide variety of parallel computers. The standard defines the syntax and semantics of a core of library routines useful to a wide range of users writing portable message-passing programs. We can use it for creating programmes for distributed computing systems (parallel computing).
MPI特點:
1. 所有的節點(node,為一台電腦)串接在一起,各自有獨立的記憶體及CPU。
2. 各節點間會透過互相傳遞訊息來了解彼此的進度。
3. MPI是利用C語言或Fortran等程式的命令,達到節點間的接收訊息與傳達訊息。
Install MPI environment for you ubuntu
sudo apt-get install libcr-dev mpich2 mpich2-doc
MPI Hello Wrold example
不過有點奇怪, 我目前在我的ubuntu上跑這個code, size回傳居然是1@@
這個部份要再研究一下.
MPI tutorial
資料來源:
http://jetcracker.wordpress.com/2012/03/01/how-to-install-mpi-in-ubuntu/
MPI特點:
1. 所有的節點(node,為一台電腦)串接在一起,各自有獨立的記憶體及CPU。
2. 各節點間會透過互相傳遞訊息來了解彼此的進度。
3. MPI是利用C語言或Fortran等程式的命令,達到節點間的接收訊息與傳達訊息。
Install MPI environment for you ubuntu
sudo apt-get install libcr-dev mpich2 mpich2-doc
MPI Hello Wrold example
/* C Example */
#include <mpi.h>
#include <stdio.h>
int main (int argc, char* argv[])
{
int rank, size;
MPI_Init (&argc, &argv); /* starts MPI */
MPI_Comm_rank (MPI_COMM_WORLD, &rank); /* get current process id */
MPI_Comm_size (MPI_COMM_WORLD, &size); /* get number of processes */
printf( "Hello world from process %d of %d\n", rank, size );
MPI_Finalize();
return 0;
}
mpicc mpi_hello.c -o hello
mpirun -np 2 ./hello
不過有點奇怪, 我目前在我的ubuntu上跑這個code, size回傳居然是1@@
這個部份要再研究一下.
MPI tutorial
資料來源:
http://jetcracker.wordpress.com/2012/03/01/how-to-install-mpi-in-ubuntu/
2013年8月6日 星期二
化學元素週期表
我是氫,我最輕,火箭靠我運衛星;
我是氦,我無賴,得失電子我最菜;
我是鋰,密度低,遇水遇酸把泡起;
我是鈹,耍賴皮,雖是金屬難電離;
我是硼,有點紅,論起電子我很窮;
我是碳,反應慢,既能成鏈又成環;
我是氮,我阻燃,加氫可以合成氨;
我是氧,不用想,離開我就憋得慌;
我是氟,最惡毒,搶個電子就滿足;
我是氖,也不賴,通電紅光放出來;
我是鈉,脾氣大,遇酸遇水就火大;
我是鎂,最愛美,攝影煙花放光輝;
我是鋁,常溫裡,濃硫酸裡把澡洗;
我是硅,色黑灰,信息元件把我堆;
我是磷,害人精,劇毒列表有我名;
我是硫,來歷久,沉澱金屬最拿手;
我是氯,色黃綠,金屬電子我搶去;
我是氬,活性差,霓虹紫光我來發;
我是鉀,把火加,超氧化物來當家;
我是鈣,身體愛,骨頭牙齒我都在;
我是鈦,過渡來,航天飛機我來蓋;
我是鉻,正六鉻,酒精過來變綠色;
我是錳,價態多,七氧化物爆炸猛;
我是鐵,用途廣,不鏽鋼喊我叫爺;
我是銅,色紫紅,投入硝酸氣棕紅;
我是砷,顏色深,三價元素奪你魂;
我是溴,揮發臭,液態非金我來秀;
我是銣,鹼金屬,沾水煙花鉀不如;
我是碘,昇華煙,遇到澱粉藍點點;
我是銫,金黃色,入水爆炸容器破;
我是鎢,高溫度,其他金屬早嗚呼;
我是金,很穩定,扔進王水影無形;
我是汞,有劇毒,液態金屬我為獨;
我是鈾,濃縮後,造原子彈我最牛;
我是鎵,易融化,沸點很高難蒸發;
我是銦,軟如金,輕微放射宜小心;
我是鉈,能脫髮,投毒出名看清華;
我是鍺,可晶格,紅外窗口能當殼;
我是硒,補人體,口服液裡有玄機;
我是鉛,能儲電,子彈頭裡也出現;
我不知道來源, 有人知道的話麻煩跟我說一聲!
訂閱:
文章 (Atom)
-
昨天差點昏倒, 因為Chrome Browser一開啟後居然一片白畫面. 雖然還有IE可以用, 但就是習慣Chrome了啊, 然後開始Google別人如何解決, 不過看起來不少人遇到相同的問題, 但都沒什麼解決方法. 什麼掃毒啦, 重新安裝Chrome啦, 砍掉Default啦....
-
股市之神是川銀藏 從30歲的70日元開始投資,到成為叱吒風雲的日本股神,是川銀藏僅小學畢業,卻憑著在股市的驚人業績設立「是川經濟研究所」,登上大學教壇。他以「只吃八分飽」、「烏龜三原則」與「股票投資五原則」的簡單哲學屢創股市奇蹟。 只吃八分飽 是川認為,投資股票賣出比買進要難得多...
-
I/O mapped I/O(port-mapped I/O或Direct I/O) I/O與memory均擁有自己的記憶體空間 需要特別的指令來處理I/O 好處是完全不用考慮記憶體空間被I/O佔用,缺點需要額外的指令專門處理I/O存取。 Memory Mapped I/O I/...
一個小故事讓我們明白資金流通的意義
“又是炎熱小鎮慵懶的一天。太陽高掛,街道無人,每個人都債台高築,靠信用度日。這時,從外地來了一位有錢的旅客,他進了一家旅館,拿出一張1000 元鈔票放在櫃檯,說想先看看房間,挑一間合適的過夜,就在此人上樓的時候---- 店主抓了這張1000 元鈔,跑到隔壁屠戶那裡支付了他欠的肉錢...







