{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "Блог Артёма Агасиева: заметки с тегом CUDA",
    "_rss_description": "Telegram: @aagasiev",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/agasiev.com\/tags\/cuda\/",
    "feed_url": "https:\/\/agasiev.com\/tags\/cuda\/json\/",
    "icon": "https:\/\/agasiev.com\/user\/userpic@2x.jpg?1529202066",
    "author": {
        "name": "Артём Агасиев",
        "url": "https:\/\/agasiev.com\/",
        "avatar": "https:\/\/agasiev.com\/user\/userpic@2x.jpg?1529202066"
    },
    "items": [
        {
            "id": "80",
            "url": "https:\/\/agasiev.com\/all\/oshibka-pri-rabote-s-bibliotekoy-implicit-na-gpu\/",
            "title": "Ошибка при работе с библиотекой implicit на GPU",
            "content_html": "<p>Работаю тут с библиотекой implicit для питона, настроил всю инфраструктуру CUDA, прописал все пути, но все равно ловил странное исключение, при попытке использования ALS на GPU:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">No CUDA extension has been built, can't train on GPU<\/code><\/pre><p>Чтож, идем читать исходники <a href=\"https:\/\/github.com\/benfred\/implicit\/blob\/master\/implicit\/gpu\/als.py\">als.py<\/a>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"python\">\r\nif not implicit.gpu.HAS_CUDA:\r\n    raise ValueError(\"No CUDA extension has been built, can't train on GPU.\")\r\n<\/code>\n<\/pre>\n<p>Очевидно, HAS_CUDA == False, но с чего это вдруг? Находим инициализацию этой переменной в <a href=\"https:\/\/github.com\/benfred\/implicit\/blob\/master\/implicit\/gpu\/__init__.py\">__init__.py<\/a>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"python\">\r\ntry:\r\n    import cupy  # noqa\r\n\r\n    from ._cuda import *  # noqa\r\n\r\n    HAS_CUDA = True\r\nexcept ImportError:\r\n    HAS_CUDA = False\r\n<\/code>\n<\/pre>\n<p>Файл _cuda — локальный, значит остается только проверить наличие <a href=\"https:\/\/docs.cupy.dev\">cupy<\/a> на рабочей машине. И правда, все дело было именно в её отсутствии. Ну хоть сообщить то об этом нормально можно было? :(<\/p>\n<p>Устанавливаем по  <a href=\"https:\/\/docs.cupy.dev\/en\/stable\/install.html\">инструкции<\/a>, запускаем fit на ALS и вуаля, все работает. На RTX 3090 прирост скорости обучения, по сравнению с Xeon W-2265, у меня был примерно в 20 раз, на разреженной матрице размерности 300000х100000.<\/p>\n",
            "date_published": "2021-05-03T01:50:50+03:00",
            "date_modified": "2021-05-03T01:50:39+03:00",
            "_date_published_rfc2822": "Mon, 03 May 2021 01:50:50 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "80",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "76",
            "url": "https:\/\/agasiev.com\/all\/unknown-option-enable-cuda-sdk\/",
            "title": "Unknown option «-​-enable-cuda-sdk».",
            "content_html": "<p>Забавная опечатка в <a href=\"https:\/\/docs.nvidia.com\/video-technologies\/video-codec-sdk\/ffmpeg-with-nvidia-gpu\/\">официальной инструкции Nvidia<\/a> по сборке ffmpeg для работы с CUDA.<\/p>\n<p>Пишут, что для конфигурации надо сделать:<\/p>\n<pre class=\"e2-text-code\"><code class=\"shell\">.\/configure --enable-nonfree -–enable-cuda-sdk –enable-libnpp --extra-cflags=-I\/usr\/local\/cuda\/include --extra-ldflags=-L\/usr\/local\/cuda\/lib64<\/code>\n<\/pre>\n<p>Если это нагло скопипастить и выполнить, то получим такую вот ошибку:<\/p>\n<pre class=\"e2-text-code\"><code class=\"shell\">Unknown option \"-–enable-cuda-sdk\".<\/code>\n<\/pre>\n<p>Молодцы они эдакие, в своем копипастном примере взяли и поменяли знак минуса на дефис. Я почти уверен, что текст верстали под macOS, она любит такие автозамены проворачивать.<\/p>\n<p>Надо вот так:<\/p>\n<pre class=\"e2-text-code\"><code class=\"shell\">.\/configure --enable-nonfree --enable-cuda-sdk --enable-libnpp --extra-cflags=-I\/usr\/local\/cuda\/include --extra-ldflags=-L\/usr\/local\/cuda\/lib64<\/code>\n<\/pre>\n<p>А если получим варнинг:<\/p>\n<pre class=\"e2-text-code\"><code class=\"shell\">WARNING: Option --enable-cuda-sdk is deprecated. Use --enable-cuda-nvcc instead.<\/code>\n<\/pre>\n<p>То вообще вот так:<\/p>\n<pre class=\"e2-text-code\"><code class=\"shell\">.\/configure --enable-nonfree --enable-cuda-nvcc --enable-libnpp --extra-cflags=-I\/usr\/local\/cuda\/include --extra-ldflags=-L\/usr\/local\/cuda\/lib64<\/code>\n<\/pre>\n<p>Ну все, теперь можно компилить и пользоваться.<\/p>\n<p>P.S. Забавно, движок блога Эгея тоже сливает два минуса в дефис, если они находятся вне тэга «код», поэтому в заголовке я их разделил <a href=\"https:\/\/unicode-table.com\/en\/200B\/\">пробелом нулевой длины<\/a>.<\/p>\n",
            "date_published": "2020-12-14T14:23:45+03:00",
            "date_modified": "2020-12-15T17:24:08+03:00",
            "_date_published_rfc2822": "Mon, 14 Dec 2020 14:23:45 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "76",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        }
    ],
    "_e2_version": 3576,
    "_e2_ua_string": "E2 (v3576; Aegea)"
}