안녕하세요. Teus입니다. 이번 포스팅은 Flask 2.0에서 지원되는 Async함수에 대해서 이야기 합니다.1. Flask 2.0아마 처음에 Flask의 비동기 함수를 보고 Flask에서 비동기함수라니, 뭔 멍멍이같은 소리여😒 하실 수 있습니다. 하지만, Flask가 2.0으로 버전업이 되면서 Async함수를 쓸 수 있게 되었습니다.Flask Async Official Docs Using async and await — Flask Documentation (2.3.x)Using async and await Changelog Routes, error handlers, before request, after request, and teardown functions can all be coroutine ..
안녕하세요. Teus입니다. 이번 포스팅은 FastAPI에서 기본적으로 사용하는 WebServer인 Uvicorn의 workers가 어떤 의미를 갖는지 알아봅니다. 그리고 일반적으로 알기 어려운 WebServer의 역할을 Python코드를 통해서 알아봅니다.0. Gunicorn일반적으로 Web서버의 구성은 아래처럼 구성 됩니다.client WebServer WebApplicationServer(WAS) DBSpringboot같은 경우 Webserver의 역할을 Tomcat이나 Apache 서버가 해줍니다. 하지만 Python같은 경우 Gunicorn이라는 패키지를 통해서 Client의 Requests를 받고, 이를 WAS(=Django, FastAPI Application)로 넘겨줍니다. 그래서 이..
안녕하세요. Teus입니다. 이번 포스팅은 SIMD(Single Instrunction Multi Data)를 다룹니다. 이번에는 AVX를 Array로 사용하지않고, Pointer를 사용하는 패턴을 보도록 하겠습니다.1. _aligned_malloc_aligned_malloc(size_t data_size, size_t alignemnet_size)aligned_malloc은 기본적인 malloc과 다르게 alignement_size 만큼 Data끼리의 간격을 보장해주는 Malloc을 의미합니다. 일반적으로 16byte, 32byte씩 Data를 띄워주면 SIMD의 Data처리 효율이 증가한다고 알려져 있습니다.__m256d* arr1 = (__m256d*)_aligned_malloc(sizeof(dou..
안녕하세요. Teus입니다. 이번 포스팅은 SIMD(Single Instrunction Multi Data)를 다룹니다. 이번에는 AVX2의 기본 연산 중 쓸만한 함수 중 Permuting and Shuffling 을 다룹니다.1. PermutingPermuting은 사용자가 원하는 Order를 주고, 해당 Order를 기준으로 rearranged Vector를 구할 수 있는 방법입니다.Data TypeDescription_mm/mm256_permute_ps/pdSelect elements from the input vector based on an 8-bit control value_mm256_permute4x64_pd/epi64Select 64-bit elements from the input vec..
안녕하세요. Teus입니다. 이번 포스팅은 SIMD(Single Instrunction Multi Data)를 다룹니다. 이번에는 AVX2의 기본 연산 중 쓸만한 함수 중 FMA연산을 정리합니다.1. FMAFMA는 Fused Multiply and Add 연산 입니다. 영단어에서 알 수 있듯 곱셈과 동시에 덧셈을 하는 연산입니다. 가장 간단하게 표현하면ret = a*b + c 위 연산을 SIMD로 연산하는 명령어 입니다. 그럼 위 연산은 위해서 3개의 Vector가 필요하게 됩니다.TMI한번에 add와 mul연산을 동시에 할 수 있기 때문에, 한번에 2flops연산을 할 수가 있습니다.(한 cycle에 연산된다는 가정) 그래서 GPU에서는 core의 개수 * clock * 2flops로 성능이 측정됩니다..
안녕하세요. Teus입니다. 이번 포스팅은 SIMD(Single Instrunction Multi Data)를 다룹니다. 이번에는 AVX2의 기본 연산 중 쓸만한 함수 중 add/sub연산을 정리합니다.1. MulMul 연산도 add나 sub과 유사하게 사용할 수 있으면 좋겠지만 mul같은 경우 bit단위 연산을 고려해야 합니다.TMI32bit과 32bit을 연산할 경우 최대 64bit의 연산 결과가 발생합니다. 이러한 문제점이 있기 때문에 Multiply를 진행 할때는 단순하게 연산하는것이 아니라, 64bit의 상위 32bit을 쓰는 등과같이 bit단위로 선택적으로 data를 취득해서 사용하게 되어있습니다.Data TypeDescription_mm256_mul_ps/pdMultiply two float..
- Total
- Today
- Yesterday
- 알고리즘
- 이분탐색
- 사칙연산
- 컴퓨터그래픽스
- GDC
- 분할정복
- Sort알고리즘
- 완전탐색 알고리즘
- AVX
- prime number
- stack
- Greedy알고리즘
- 프로그래머스
- hash
- heap
- 동적계획법
- 자료구조
- SIMD
- Search알고리즘
- 코딩테스트
- git
- 병렬처리
- C++
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |