CINXE.COM
Performance overhead of tensorflow custom ops - General Discussion - Build with Google AI
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Performance overhead of tensorflow custom ops - General Discussion - Build with Google AI</title> <meta name="description" content="Hi all – I have written some tensorflow custom ops that replace stock tensorflow kernels. When benchmarking the kernels in isolation in a C++ test bench my kernels have comparable performance with tensorflow kernels. How&hellip;"> <meta name="generator" content="Discourse 3.4.0.beta3-dev - https://github.com/discourse/discourse version d880db3b7b748901366d0c94f58dada9096f967f"> <link rel="icon" type="image/png" href="https://canada1.discourse-cdn.com/googleaitrial/optimized/2X/8/8bfe64fc593eb7baba8df149ebba4457c16ca1f9_2_32x32.png"> <link rel="apple-touch-icon" type="image/png" href="https://canada1.discourse-cdn.com/googleaitrial/optimized/2X/8/8bfe64fc593eb7baba8df149ebba4457c16ca1f9_2_180x180.png"> <meta name="theme-color" media="all" content="#1f1f1f"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, user-scalable=yes, viewport-fit=cover"> <link rel="canonical" href="https://discuss.ai.google.dev/t/performance-overhead-of-tensorflow-custom-ops/29208" /> <link rel="search" type="application/opensearchdescription+xml" href="https://discuss.ai.google.dev/opensearch.xml" title="Build with Google AI Search"> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/color_definitions_google-ai-for-developers_8_2_9664c403088a1d589ded99d7cdbbd8f338343719.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" class="light-scheme"/> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/desktop_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="desktop" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/checklist_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="checklist" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/discourse-ai_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="discourse-ai" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/discourse-akismet_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="discourse-akismet" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/discourse-cakeday_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="discourse-cakeday" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/discourse-data-explorer_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="discourse-data-explorer" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/discourse-details_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="discourse-details" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/discourse-lazy-videos_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="discourse-lazy-videos" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/discourse-local-dates_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="discourse-local-dates" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/discourse-narrative-bot_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="discourse-narrative-bot" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/discourse-policy_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="discourse-policy" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/discourse-presence_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="discourse-presence" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/discourse-reactions_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="discourse-reactions" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/discourse-solved_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="discourse-solved" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/discourse-templates_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="discourse-templates" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/discourse-topic-voting_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="discourse-topic-voting" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/footnote_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="footnote" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/hosted-site_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="hosted-site" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/poll_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="poll" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/spoiler-alert_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="spoiler-alert" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/discourse-ai_desktop_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="discourse-ai_desktop" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/discourse-reactions_desktop_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="discourse-reactions_desktop" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/discourse-topic-voting_desktop_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="discourse-topic-voting_desktop" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/poll_desktop_5a2434b361468bc0f0245e49d5dee554eebac4e3.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="poll_desktop" /> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/desktop_theme_4_7896a10e11b78b3457576dae80aa6a4f54f8c407.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="4" data-theme-name="discourse header search"/> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/desktop_theme_3_8fbb151033f3941d27908950c0e87f8fb39a38a6.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="3" data-theme-name="discourse-material-icons"/> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/desktop_theme_9_f0575d150ab7e99c44052a5015695044e12c5b03.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="9" data-theme-name="global notice custom css"/> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/desktop_theme_8_afb04a60a9c25410f7b14d8fa0f3ae4ed9169b51.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="8" data-theme-name="temp nav fixes"/> <link href="https://yyz1.discourse-cdn.com/googleaitrial/stylesheets/desktop_theme_2_6b14ef109bd30716a9d1b973997ba1349dda629b.css?__ws=discuss.ai.google.dev" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="2" data-theme-name="google ai"/> <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..400,0..1,0&family=Roboto+Mono:ital,wght@0,100..700;1,100..700&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap" rel="stylesheet"> <link rel="alternate nofollow" type="application/rss+xml" title="RSS feed of 'Performance overhead of tensorflow custom ops'" href="https://discuss.ai.google.dev/t/performance-overhead-of-tensorflow-custom-ops/29208.rss" /> <meta property="og:site_name" content="Build with Google AI" /> <meta property="og:type" content="website" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:image" content="https://canada1.discourse-cdn.com/googleaitrial/original/2X/8/8bfe64fc593eb7baba8df149ebba4457c16ca1f9.png" /> <meta property="og:image" content="https://canada1.discourse-cdn.com/googleaitrial/original/2X/8/8bfe64fc593eb7baba8df149ebba4457c16ca1f9.png" /> <meta property="og:url" content="https://discuss.ai.google.dev/t/performance-overhead-of-tensorflow-custom-ops/29208" /> <meta name="twitter:url" content="https://discuss.ai.google.dev/t/performance-overhead-of-tensorflow-custom-ops/29208" /> <meta property="og:title" content="Performance overhead of tensorflow custom ops" /> <meta name="twitter:title" content="Performance overhead of tensorflow custom ops" /> <meta property="og:description" content="Hi all – I have written some tensorflow custom ops that replace stock tensorflow kernels. When benchmarking the kernels in isolation in a C++ test bench my kernels have comparable performance with tensorflow kernels. However when I use the custom op framework to use my kernels in tensorflow serving, it becomes a lot slower. Does anybody here have any ideas why this could be?" /> <meta name="twitter:description" content="Hi all – I have written some tensorflow custom ops that replace stock tensorflow kernels. When benchmarking the kernels in isolation in a C++ test bench my kernels have comparable performance with tensorflow kernels. However when I use the custom op framework to use my kernels in tensorflow serving, it becomes a lot slower. Does anybody here have any ideas why this could be?" /> <meta property="og:article:section" content="TensorFlow" /> <meta property="og:article:section:color" content="f66f00" /> <meta property="og:article:section" content="General Discussion" /> <meta property="og:article:section:color" content="f2a346" /> <meta property="og:article:tag" content="tfcore" /> <meta property="og:article:tag" content="serving" /> <meta property="og:article:tag" content="help_request" /> <meta property="article:published_time" content="2021-10-29T04:17:58+00:00" /> <meta property="og:ignore_canonical" content="true" /> </head> <body class="crawler browser-update"> <header> <a href="/"> Build with Google AI </a> </header> <div id="main-outlet" class="wrap" role="main"> <div id="topic-title"> <h1> <a href="/t/performance-overhead-of-tensorflow-custom-ops/29208">Performance overhead of tensorflow custom ops</a> </h1> <div class="topic-category" itemscope itemtype="http://schema.org/BreadcrumbList"> <span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> <a href="/c/tensorflow/general-discussion-6/37" class="badge-wrapper bullet" itemprop="item"> <span class='badge-category-bg' style='background-color: #f66f00'></span> <span class='badge-category clear-badge'> <span class='category-name' itemprop='name'>TensorFlow</span> </span> </a> <meta itemprop="position" content="1" /> </span> <span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> <a href="/c/tensorflow/general-discussion-6/37" class="badge-wrapper bullet" itemprop="item"> <span class='badge-category-bg' style='background-color: #f2a346'></span> <span class='badge-category clear-badge'> <span class='category-name' itemprop='name'>General Discussion</span> </span> </a> <meta itemprop="position" content="2" /> </span> </div> <div class="topic-category"> <div class='discourse-tags list-tags'> <a href='https://discuss.ai.google.dev/tag/tfcore' class='discourse-tag' rel="tag">tfcore</a>, <a href='https://discuss.ai.google.dev/tag/serving' class='discourse-tag' rel="tag">serving</a>, <a href='https://discuss.ai.google.dev/tag/help_request' class='discourse-tag' rel="tag">help_request</a> </div> </div> </div> <div itemscope itemtype='http://schema.org/DiscussionForumPosting'> <meta itemprop='headline' content='Performance overhead of tensorflow custom ops'> <link itemprop='url' href='https://discuss.ai.google.dev/t/performance-overhead-of-tensorflow-custom-ops/29208'> <meta itemprop='datePublished' content='2021-10-29T04:17:57Z'> <meta itemprop='articleSection' content='General Discussion'> <meta itemprop='keywords' content='tfcore, serving, help_request'> <div itemprop='publisher' itemscope itemtype="http://schema.org/Organization"> <meta itemprop='name' content='Build with Google AI'> <div itemprop='logo' itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop='url' content='https://canada1.discourse-cdn.com/googleaitrial/original/1X/9c9b743566b5ef0d0701ebba72bf83038f42ea0b.png'> </div> </div> <div id='post_1' class='topic-body crawler-post'> <div class='crawler-post-meta'> <span class="creator" itemprop="author" itemscope itemtype="http://schema.org/Person"> <a itemprop="url" href='https://discuss.ai.google.dev/u/Tony_Wang'><span itemprop='name'>Tony_Wang</span></a> </span> <link itemprop="mainEntityOfPage" href="https://discuss.ai.google.dev/t/performance-overhead-of-tensorflow-custom-ops/29208"> <span class="crawler-post-infos"> <time datetime='2021-10-29T04:17:58Z' class='post-time'> October 29, 2021, 4:17am </time> <meta itemprop='dateModified' content='2021-10-29T09:36:09Z'> <span itemprop='position'>1</span> </span> </div> <div class='post' itemprop='text'> <p>Hi all – I have written some tensorflow custom ops that replace stock tensorflow kernels. When benchmarking the kernels in isolation in a C++ test bench my kernels have comparable performance with tensorflow kernels. However when I use the custom op framework to use my kernels in tensorflow serving, it becomes a lot slower. Does anybody here have any ideas why this could be?</p> </div> <div itemprop="interactionStatistic" itemscope itemtype="http://schema.org/InteractionCounter"> <meta itemprop="interactionType" content="http://schema.org/LikeAction"/> <meta itemprop="userInteractionCount" content="0" /> <span class='post-likes'></span> </div> </div> <div id='post_3' itemprop='comment' itemscope itemtype='http://schema.org/Comment' class='topic-body crawler-post'> <div class='crawler-post-meta'> <span class="creator" itemprop="author" itemscope itemtype="http://schema.org/Person"> <a itemprop="url" href='https://discuss.ai.google.dev/u/Bhack'><span itemprop='name'>Bhack</span></a> </span> <span class="crawler-post-infos"> <time itemprop='datePublished' datetime='2021-10-29T09:36:17Z' class='post-time'> October 29, 2021, 9:36am </time> <meta itemprop='dateModified' content='2021-10-29T09:36:17Z'> <span itemprop='position'>3</span> </span> </div> <div class='post' itemprop='text'> <p>Have you benchmarked your kernel in isolation also on TF serving or in a model?</p> </div> <div itemprop="interactionStatistic" itemscope itemtype="http://schema.org/InteractionCounter"> <meta itemprop="interactionType" content="http://schema.org/LikeAction"/> <meta itemprop="userInteractionCount" content="0" /> <span class='post-likes'></span> </div> </div> </div> <div id="related-topics" class="more-topics__list " role="complementary" aria-labelledby="related-topics-title"> <h3 id="related-topics-title" class="more-topics__list-title"> Related topics </h3> <div class="topic-list-container" itemscope itemtype='http://schema.org/ItemList'> <meta itemprop='itemListOrder' content='http://schema.org/ItemListOrderDescending'> <table class='topic-list'> <thead> <tr> <th>Topic</th> <th></th> <th class="replies">Replies</th> <th class="views">Views</th> <th>Activity</th> </tr> </thead> <tbody> <tr class="topic-list-item" id="topic-list-item-22478"> <td class="main-link" itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'> <meta itemprop='position' content='1'> <span class="link-top-line"> <a itemprop='url' href='https://discuss.ai.google.dev/t/could-custom-ops-be-as-nice-as-core-ops/22478' class='title raw-link raw-topic-link'>Could Custom Ops be as nice as core ops?</a> </span> <div class="link-bottom-line"> <a href='/c/tensorflow/special-interest-groups/tfjs/56' class='badge-wrapper bullet'> <span class='badge-category-bg' style='background-color: #AF93E4'></span> <span class='badge-category clear-badge'> <span class='category-name'>TF.js</span> </span> </a> <div class="discourse-tags"> <a href='https://discuss.ai.google.dev/tag/tfjs' class='discourse-tag'>tfjs</a> , <a href='https://discuss.ai.google.dev/tag/help_research' class='discourse-tag'>help_research</a> </div> </div> </td> <td class="replies"> <span class='posts' title='posts'>1</span> </td> <td class="views"> <span class='views' title='views'>1613</span> </td> <td> March 14, 2022 </td> </tr> <tr class="topic-list-item" id="topic-list-item-31200"> <td class="main-link" itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'> <meta itemprop='position' content='2'> <span class="link-top-line"> <a itemprop='url' href='https://discuss.ai.google.dev/t/weights-in-a-tf-custom-op/31200' class='title raw-link raw-topic-link'>Weights in a TF custom op</a> </span> <div class="link-bottom-line"> <a href='/c/tensorflow/general-discussion-6/37' class='badge-wrapper bullet'> <span class='badge-category-bg' style='background-color: #f2a346'></span> <span class='badge-category clear-badge'> <span class='category-name'>General Discussion</span> </span> </a> <div class="discourse-tags"> <a href='https://discuss.ai.google.dev/tag/help_request' class='discourse-tag'>help_request</a> , <a href='https://discuss.ai.google.dev/tag/tfcore' class='discourse-tag'>tfcore</a> </div> </div> </td> <td class="replies"> <span class='posts' title='posts'>1</span> </td> <td class="views"> <span class='views' title='views'>491</span> </td> <td> November 22, 2024 </td> </tr> <tr class="topic-list-item" id="topic-list-item-32546"> <td class="main-link" itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'> <meta itemprop='position' content='3'> <span class="link-top-line"> <a itemprop='url' href='https://discuss.ai.google.dev/t/deformable-convolution-and-other-custom-ops/32546' class='title raw-link raw-topic-link'>Deformable convolution and other custom ops</a> </span> <div class="link-bottom-line"> <a href='/c/tensorflow/special-interest-groups/mlir/57' class='badge-wrapper bullet'> <span class='badge-category-bg' style='background-color: #AF93E4'></span> <span class='badge-category clear-badge'> <span class='category-name'>MLIR</span> </span> </a> <div class="discourse-tags"> <a href='https://discuss.ai.google.dev/tag/contributing' class='discourse-tag'>contributing</a> , <a href='https://discuss.ai.google.dev/tag/sig_keras' class='discourse-tag'>sig_keras</a> , <a href='https://discuss.ai.google.dev/tag/help_dev' class='discourse-tag'>help_dev</a> , <a href='https://discuss.ai.google.dev/tag/sig_addons' class='discourse-tag'>sig_addons</a> , <a href='https://discuss.ai.google.dev/tag/xla' class='discourse-tag'>xla</a> </div> </div> </td> <td class="replies"> <span class='posts' title='posts'>26</span> </td> <td class="views"> <span class='views' title='views'>6199</span> </td> <td> October 8, 2022 </td> </tr> <tr class="topic-list-item" id="topic-list-item-24566"> <td class="main-link" itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'> <meta itemprop='position' content='4'> <span class="link-top-line"> <a itemprop='url' href='https://discuss.ai.google.dev/t/tfr-compositional-ops/24566' class='title raw-link raw-topic-link'>TFR compositional ops</a> </span> <div class="link-bottom-line"> <a href='/c/tensorflow/general-discussion-6/37' class='badge-wrapper bullet'> <span class='badge-category-bg' style='background-color: #f2a346'></span> <span class='badge-category clear-badge'> <span class='category-name'>General Discussion</span> </span> </a> <div class="discourse-tags"> <a href='https://discuss.ai.google.dev/tag/tfcore' class='discourse-tag'>tfcore</a> </div> </div> </td> <td class="replies"> <span class='posts' title='posts'>2</span> </td> <td class="views"> <span class='views' title='views'>1123</span> </td> <td> July 7, 2022 </td> </tr> <tr class="topic-list-item" id="topic-list-item-29374"> <td class="main-link" itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'> <meta itemprop='position' content='5'> <span class="link-top-line"> <a itemprop='url' href='https://discuss.ai.google.dev/t/performance-speed-improvements-between-versions/29374' class='title raw-link raw-topic-link'>Performance/speed improvements between versions</a> </span> <div class="link-bottom-line"> <a href='/c/tensorflow/general-discussion-6/37' class='badge-wrapper bullet'> <span class='badge-category-bg' style='background-color: #f2a346'></span> <span class='badge-category clear-badge'> <span class='category-name'>General Discussion</span> </span> </a> <div class="discourse-tags"> <a href='https://discuss.ai.google.dev/tag/build' class='discourse-tag'>build</a> , <a href='https://discuss.ai.google.dev/tag/sig_build' class='discourse-tag'>sig_build</a> , <a href='https://discuss.ai.google.dev/tag/tfcore' class='discourse-tag'>tfcore</a> </div> </div> </td> <td class="replies"> <span class='posts' title='posts'>1</span> </td> <td class="views"> <span class='views' title='views'>1679</span> </td> <td> August 4, 2021 </td> </tr> </tbody> </table> </div> </div> </div> <footer class="container wrap"> <nav class='crawler-nav'> <ul> <li itemscope itemtype='http://schema.org/SiteNavigationElement'> <span itemprop='name'> <a href='/' itemprop="url">Home </a> </span> </li> <li itemscope itemtype='http://schema.org/SiteNavigationElement'> <span itemprop='name'> <a href='/categories' itemprop="url">Categories </a> </span> </li> <li itemscope itemtype='http://schema.org/SiteNavigationElement'> <span itemprop='name'> <a href='/guidelines' itemprop="url">Guidelines </a> </span> </li> <li itemscope itemtype='http://schema.org/SiteNavigationElement'> <span itemprop='name'> <a href='https://policies.google.com/terms' itemprop="url">Terms of Service </a> </span> </li> <li itemscope itemtype='http://schema.org/SiteNavigationElement'> <span itemprop='name'> <a href='https://policies.google.com/privacy' itemprop="url">Privacy Policy </a> </span> </li> </ul> </nav> <p class='powered-by-link'>Powered by <a href="https://www.discourse.org">Discourse</a>, best viewed with JavaScript enabled</p> </footer> <div class="buorg"><div>Unfortunately, <a href="https://www.discourse.org/faq/#browser">your browser is unsupported</a>. Please <a href="https://browsehappy.com">switch to a supported browser</a> to view rich content, log in and reply.</div></div> </body> </html>