상세 컨텐츠

본문 제목

JPEG-TURBO #2 - CPU 상태 조회

병렬처리/SIMD

by cepiloth 2018. 12. 24. 17:12

본문

728x90
반응형


개요


Windows 환경에서 SIMD 명령을 사용 하려면 현재 CPU 가 SIMD 명령을 지원하는지 확인 해야 한다. 실제 SIMD 지원하는 CPU 이지만 CHIP SET 및 드라이버가 잘못 설치 되어 있는 경우에는 오동작을 하기 때문에 현재 CPU 가 SSE 를 지원 하는지 확인 하는 코드가 필요하다. 


칩셋 및 드라이버 설치 잘못 되어 있는 컴퓨터에 동작하면 무조건 CRASH 다. 정말 암 걸린다.



상태 체크 방안(1)


1
2
3
4
5
6
7
8
9
#include <intrin.h>    // header 추가 
 
#define cpuid(info, x)    __cpuidex(info, x, 0)
 
int main() {
    int info[4];
    cpuid(info, 4);
    return 0;
}
cs


간단 하게는 위 코드 처럼 CPU 의 정보를 얻는 방법이 있다.



상태 체크 방안(2)


https://github.com/Mysticial/FeatureDetector 이동 하면 현재 CPU 의 정보를 얻는 코드가 잘 정리 되어 있다.

코드는 아래처럼 간단 하다 소스가 정리가 잘되어 있어 그대로 사용 하도록 한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/* Main.cpp
 * 
 * Author           : Alexander J. Yee
 * Date Created     : 04/17/2015
 * Last Modified    : 04/17/2015
 * 
 */
 
#include <iostream>
using std::cout;
using std::endl;
 
#include "x86/cpu_x86.h"
using namespace FeatureDetector;
 
int main(){
 
    cout << "CPU Vendor String: " << cpu_x86::get_vendor_string() << endl;
    cout << endl;
 
    cpu_x86::print_host();
 
#if _WIN32
    system("pause");
#endif
}
 
cs



출력 결과


아래 출력 결과를 보게 되면 CPU 밴더, OS 환경 시스템, 지원 가능한 모든 명령 조회 가능 하다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
CPU Vendor String: Genuine Intel
 
CPU Vendor:
    AMD         = No
    Intel       = Yes
 
OS Features:
    64-bit      = Yes
    OS AVX      = Yes
    OS AVX512   = No
 
Hardware Features:
    MMX         = Yes
    x64         = Yes
    ABM         = Yes
    RDRAND      = Yes
    BMI1        = Yes
    BMI2        = Yes
    ADX         = No
    MPX         = No
    PREFETCHWT1 = No
 
SIMD: 128-bit
    SSE         = Yes
    SSE2        = Yes
    SSE3        = Yes
    SSSE3       = Yes
    SSE4a       = No
    SSE4.     = Yes
    SSE4.     = Yes
    AES-NI      = Yes
    SHA         = No
 
SIMD: 256-bit
    AVX         = Yes
    XOP         = No
    FMA3        = Yes
    FMA4        = No
    AVX2        = Yes
 
SIMD: 512-bit
    AVX512-F    = No
    AVX512-CD   = No
    AVX512-PF   = No
    AVX512-ER   = No
    AVX512-VL   = No
    AVX512-BW   = No
    AVX512-DQ   = No
    AVX512-IFMA = No
    AVX512-VBMI = No
 
Summary:
    Safe to use AVX:     Yes
    Safe to use AVX512:  No
cs


728x90
반응형

'병렬처리 > SIMD' 카테고리의 다른 글

JPEG-TURBO #3 - 스마트 스케일러 사용 및 성능 측정  (0) 2018.12.28
JPEG-TURBO #1 - 설치  (0) 2018.12.24
NEON 과 SSE 간에 변환  (0) 2018.12.17

관련글 더보기

댓글 영역