TGViewer
GPGPU Russia GPGPU Russia @gpgpu_ru · 520 subscribers
Post #372 1.82K
Пост о том, что такое CUDA Tile, который зарелизили в CUDA 13.3:
https://developer.nvidia.com/blog/develop-high-performance-gpu-kernels-in-cpp-with-nvidia-cuda-tile/

Если кратко, то они ввели новый вид кернелов: __tile_global__, в которых вообще не указываешь работу для отдельных потоков, а пишешь кода для обработки на уровне тайлов, а компилятор уже сам определяет, как там потоки работают между собой.
Для этого есть пространство имён cuda::tiles.
В нём живут:
tensor_span (аналог std::mdspan), его растаскивают на весь буфер при помощи extents{m, n},
и обёртка partition_view, которая нарезает буфер на те самые тайлы при помощи функции load().

Получается, примерно, такой кернел для сложения массивов:
#include "cuda_tile.h"
__tile_global__ void vectorAdd(float* a, float* b, float* out, size_t n) {
 
/* set up the namespace */
  namespace ct = cuda::tiles;
  using namespace ct::literals;
 
/* attach shape to raw pointers */
  auto aSpan = ct::tensor_span{a,   ct::extents{n}};
  auto bSpan = ct::tensor_span{b,   ct::extents{n}};
  auto oSpan = ct::tensor_span{out, ct::extents{n}};
 
/* partition each span into tiles of size 8 */
  auto aView = ct::partition_view{aSpan, ct::shape{8_ic}};
  auto bView = ct::partition_view{bSpan, ct::shape{8_ic}};
  auto oView = ct::partition_view{oSpan, ct::shape{8_ic}};
 
/* load the a and b tiles from global memory */
  int bx = ct::bid().x;
  auto aTile = aView.load(bx);          // load bx-th tile
  auto bTile = bView.load(bx);
 
/* add the two tiles together, elementwise */
  auto oTile = aTile + bTile;
 
/* store the result tile to the output partition. */
  oView.store(oTile, bx);
}


Конкретно для такой задачи он намного сложнее обычного кода, но в нём не надо думать о переполнении памяти, гонках и так далее.

#CUDA #GPU #GPGPU
NVIDIA Technical Blog Develop High-Performance GPU Kernels in C++ with NVIDIA CUDA Tile Developers can now use NVIDIA CUDA Tile programming within large existing C++ GPU codebases to develop highly optimized GPU kernels using tile-based abstractions. NVIDIA CUDA Tile…
  • 👍 8
  • 🔥 2
More from @gpgpu_ru
  1. Sep 18, 2026Для тех, кто не едет в Москву вкусно покушать и выиграть подарки послушать крутые доклады,…
  2. Sep 18, 202623 и 24 сентября в Москве и онлайн будет проходить конференция SmartData. В этом году это…
  3. Sep 17, 2026Проект Кирилла Колодяжного Adept появился в PyPi: https://pypi.org/project/adept-platform/…
  4. Sep 16, 2026Теперь это и для меня самое запоминающееся место. Исходник драйвера #Linux #offtopic
  5. Sep 13, 2026Поздравляем всех программистов с Днём Программиста! 🎉 А всех непрограммистов с Днём Танки…
  6. Sep 10, 2026Коллеги из YADRO запускают email-проект о работе с легаси-кодом на C++. Среди авторов — Ко…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →