이 문서에서는 Julia로 작성된 유체 시뮬레이터인 WaterLily.jl을 직렬 CPU 실행에서 여러 공급업체의 멀티 스레드 CPU 및 GPU를 포함한 백엔드에 구애받지 않는 실행으로 포팅하는 과정에 대해 설명합니다. 이 포팅 프로세스는 CUDA, ROCm, oneAPI 및 Metal 백엔드에서 작동할 수 있는 KernelAbstractions.jl을 사용하여 가능했습니다. 이 문서에서는 KA의 @kernel 매크로가 함수 정의를 가져와서 특정 백엔드에 특화된 커널로 변환하는 방법을 설명합니다. 이 문서에서는 n차원 배열을 반복하는 for 루프 생성을 자동화하는 @loop 매크로도 소개합니다. 이 글은 BenchmarkTools.jl을 사용하여 직렬 실행과 비교하여 KA가 달성한 속도 향상을 벤치마킹하..