here 문서를 사용하여 AMD Southern Island GPU의 어셈블리 언어를 읽는 데 문제가 있습니다.AMD ISA 코드 읽는 데 문제가 있습니다.
1 shader main
2 asic(SI_ASIC)
3 type(CS)
4
5 s_buffer_load_dword s0, s[8:11], 0x00 // what is the purpose of s[8:11] ?
6 s_waitcnt lgkmcnt(0)
7 v_add_i32 v1, vcc, s0, v0 // I guess v0 initially contains the local IDs ?
8 v_add_i32 v0, vcc, s0, v0 // wouldn't a v_mov v0, v1 performs better ?
9 buffer_load_ubyte v2, v1, s[4:7], 0 offen // s[4:7] ?
10 buffer_load_ubyte v0, v0, s[4:7], 0 offen offset:256
11 s_waitcnt vmcnt(0)
12 v_max_u32 v0, v2, v0
13 buffer_store_byte v0, v1, s[4:7], 0 offen glc
14 s_endpgm
15 end
- 내가 이해할 수없는 것은 내가 가지고 수있는 방법입니다 :
1 __attribute__((reqd_work_group_size(256, 1, 1))) 2 void kernel foo(global uchar* data) { 3 const uint block_size = get_local_size(0); 4 const uint lid = get_local_id(0); 5 6 data[lid] = max(data[lid], data[lid + block_size]); 7 }
그리고 (DIS) 어셈블리 AMD의 컴파일러에 의해 생성 : 여기
샘플 인 OpenCL 코드 예를 들어, ISA 설명서 (12.6 벡터 메모리 버퍼 명령어 참조) 만있는 * buffer_load_ubyte * 명령어를 작성했습니다. - 마이크로 코드 정보를 어떻게 읽어야합니까? (예 : * v_add_i32 * 명령어의 경우 161 페이지)
- 프로세서 아키텍처를 명시하는 표준 방법이 있습니까?
감사합니다.
시는 : 어셈블리 코드는 세계 여기이 게시
's [8:11]에 관한 내 생각은 SGPR의 하위 집합을 나타내는 것입니다 (이 경우's8, s9, s10, s11'). 그리고 비슷하게's [4 : 7]. – Michael
네, 제가 결론을 내 렸습니다.하지만이 논문의 지시에 무엇이 사용 되었습니까? – Simon