처음에는 뭐에 쓰는지 잘 모르는것도... 실력이 좀 늘어야 보이는 것이 많더군요.
do-while 같은 "loop의 처음 한 번은 꼭 실행되야 하지만 그 다음부터는 조건에 따라 반복되야 한다," 같은... 처음에는 어디 써먹어야 할 지 모르겠는것도 요즘은 필요하면 곧잘씁니다.
특히 가장 체감되는건 assert나 cat-try(except)같은 예외처리문. 예전에는 except 조건이 뭐 이리 많아 주늑들거나 애초에 exception이 어디서 발생할지, 무엇을 고려해야 할 지 몰랐다면, 지금은 미리 애매하면 try 하게 되더군요.
이렇게 꼼수 아닌 꼼수는 많이 늘었더라죠.
다만....예전 학부 1학년 때 반복문으로 별찍기 같은건 어렵지 않게 했던 기억인데, 요즘 CUDA나 OpenCL같은 GPGPU프로그래밍 에서 명시적 1개 loop index -> 1개 CUDA Thread로 바뀌었을 뿐인데, index 따라가기가 벅차네요. 1년이 넘었는데 Work Group내에서 shared 메모리 채우는거 따라가려면 아직도 크기 줄이고 하나씩 봐야 합니다(....)
뭔가 지금까지의 1차원적인 사고 -> 3차원 GPU thread 공간 -> 수십차원 DNN Matrix으로 이루어지는 확장에 뇌가 못 따라가는듯....
P.s 퀄컴은 정말 shit입니다. 나사 하나 빠진 개발보드도 개발보드지만, S/W SDK를 공개하는 수준이나 피드백 해주는게...이걸 정말 써먹으라고 냈는지 의문이 드는 수준이네요. 3주 전, 어째서 라이브러리 버전 지원이 안 되는지 물은 질문에 아직도 확인하고 있다고만 하고...정확한 답이 없습니다. (거기에 관련 문서를 txt 파일로 제공하는 패기를 보여줍니다....;;) 아무리 토르발즈옹이 fuck-you를 날렸더라도 방대한 문서랑 개발자 서포트는 업계에서 엔비디아만한곳이 없네요. (그나마 비슷한 수준을 꼽으라면 인텔...?? 정도...)