triton-lang/triton

Vague CompilationError

Open

#1,137 opened on Feb 1, 2023

 (3 comments) (0 reactions) (0 assignees)MLIR (3,126 forks)github user discovery
help wanted

Repository metrics

Stars
 (19,982 stars)
PR merge metrics
 (Avg merge 2d 18h) (185 merged PRs in 30d)

Description

Working on a kernel I got a CompilationError when trying to launch it, and while the CompilationError message points to the "problem" it doesn't specify what the problem is. I eventually figured out that it doesn't like when you call load with other set but mask set to None. I don't mind that restriction, but it would be nice if the CompilationError message said something to that effect. I didn't see any specifics in the error message. Perhaps it's buried in the traceback, but the trackback gets truncated in Jupyter notebooks because it's so exceedingly long.

Triton version 2.0.0.dev20221202

The kernel:

@triton.jit
def _clip_embed_fused(
	A,         # *Pointer* to first input vector (257xN).
	Out,       # *Pointer* to output vector (257xN).
	Position,  # *Pointer* position vector (257xN).
	Weight,    # *Pointer* weight vector (N).
	Bias,      # *Pointer* bias vector (N).
	eps: tl.constexpr,
):
	# position of elements processed by this program
	row = tl.program_id(0)
	Out += row * 1024
	A += row * 1024
	Position += row * 1024

	# loads
	cols = tl.arange(0, 1024)
	mask = cols < 1024
	a = tl.load(A + cols, other=0.).to(tl.float32)
	weight = tl.load(Weight + cols)
	bias = tl.load(Bias + cols)
	position = tl.load(Position + cols, other=0.).to(tl.float32)

	# position embedding
	a += position

	# compute mean
	mean = tl.sum(a, axis=0) / 1024

	# compute variance
	var = tl.sum((a - mean) * (a - mean), axis=0) / 1024
	rstd = 1 / tl.sqrt(var + eps)

	# multiply by weight and add bias
	a_hat = (a - mean) * rstd
	out = a_hat * weight + bias

	# write-back
	tl.store(Out + cols, out)

The error:

{
	"name": "CompilationError",
	"message": "at 18:17:\ndef _clip_embed_fused(\n\tA,         # *Pointer* to first input vector (257xN).\n\tOut,       # *Pointer* to output vector (257xN).\n\tPosition,  # *Pointer* position vector (257xN).\n\tWeight,    # *Pointer* weight vector (N).\n\tBias,      # *Pointer* bias vector (N).\n\teps: tl.constexpr,\n):\n\t# position of elements processed by this program\n\trow = tl.program_id(0)\n\tOut += row * 1024\n\tA += row * 1024\n\tPosition += row * 1024\n\n\t# loads\n\tcols = tl.arange(0, 1024)\n\tmask = cols < 1024\n\ta = tl.load(A + cols, other=0.).to(tl.float32)\n                 ^",
	"stack": "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mKeyError\u001b[0m                                  Traceback (most recent call last)\nFile \u001b[0;32m<string>:21\u001b[0m, in \u001b[0;36m_clip_embed_fused\u001b[0;34m(A, Out, Position, Weight, Bias, eps, grid, num_warps, num_stages, extern_libs, stream, warmup)\u001b[0m\n\n\u001b[0;31mKeyError\u001b[0m: ('2-.-0-.-0-d82511111ad128294e9d31a6ac684238-2b0c5161c53c71b37ae20a9996ee4bb8-c1f92808b4e4644c1732e8338187ac87-d962222789c30252d492a16cca3bf467-12f7ac1ca211e037f62a7c0c323d9990-5c5e32ff210f3b7f56c98ca29917c25e-06f0df2d61979d629033f4a22eff5198-0dd03b0bd512a184b3512b278d9dfa59-d35ab04ae841e2714a253c523530b071', (torch.float32, torch.float32, torch.float32, torch.float32, torch.float32), (1e-05,), (True, True, True, True, True))\n\nDuring handling of the above exception, another exception occurred:\n\n\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/compiler.py:838\u001b[0m, in \u001b[0;36mmake_triton_ir\u001b[0;34m(fn, signature, specialization, constants)\u001b[0m\n\u001b[1;32m    837\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 838\u001b[0m     generator\u001b[39m.\u001b[39;49mvisit(fn\u001b[39m.\u001b[39;49mparse())\n\u001b[1;32m    839\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mException\u001b[39;00m \u001b[39mas\u001b[39;00m e:\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/compiler.py:771\u001b[0m, in \u001b[0;36mCodeGenerator.visit\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m    770\u001b[0m warnings\u001b[39m.\u001b[39msimplefilter(\u001b[39m\"\u001b[39m\u001b[39mignore\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39mPendingDeprecationWarning\u001b[39;00m)  \u001b[39m# python 3.8\u001b[39;00m\n\u001b[0;32m--> 771\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39msuper\u001b[39;49m()\u001b[39m.\u001b[39;49mvisit(node)\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/ast.py:418\u001b[0m, in \u001b[0;36mNodeVisitor.visit\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m    417\u001b[0m visitor \u001b[39m=\u001b[39m \u001b[39mgetattr\u001b[39m(\u001b[39mself\u001b[39m, method, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mgeneric_visit)\n\u001b[0;32m--> 418\u001b[0m \u001b[39mreturn\u001b[39;00m visitor(node)\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/compiler.py:260\u001b[0m, in \u001b[0;36mCodeGenerator.visit_Module\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m    259\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mvisit_Module\u001b[39m(\u001b[39mself\u001b[39m, node):\n\u001b[0;32m--> 260\u001b[0m     ast\u001b[39m.\u001b[39;49mNodeVisitor\u001b[39m.\u001b[39;49mgeneric_visit(\u001b[39mself\u001b[39;49m, node)\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/ast.py:426\u001b[0m, in \u001b[0;36mNodeVisitor.generic_visit\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m    425\u001b[0m         \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(item, AST):\n\u001b[0;32m--> 426\u001b[0m             \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mvisit(item)\n\u001b[1;32m    427\u001b[0m \u001b[39melif\u001b[39;00m \u001b[39misinstance\u001b[39m(value, AST):\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/compiler.py:771\u001b[0m, in \u001b[0;36mCodeGenerator.visit\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m    770\u001b[0m warnings\u001b[39m.\u001b[39msimplefilter(\u001b[39m\"\u001b[39m\u001b[39mignore\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39mPendingDeprecationWarning\u001b[39;00m)  \u001b[39m# python 3.8\u001b[39;00m\n\u001b[0;32m--> 771\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39msuper\u001b[39;49m()\u001b[39m.\u001b[39;49mvisit(node)\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/ast.py:418\u001b[0m, in \u001b[0;36mNodeVisitor.visit\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m    417\u001b[0m visitor \u001b[39m=\u001b[39m \u001b[39mgetattr\u001b[39m(\u001b[39mself\u001b[39m, method, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mgeneric_visit)\n\u001b[0;32m--> 418\u001b[0m \u001b[39mreturn\u001b[39;00m visitor(node)\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/compiler.py:320\u001b[0m, in \u001b[0;36mCodeGenerator.visit_FunctionDef\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m    319\u001b[0m \u001b[39m# visit function body\u001b[39;00m\n\u001b[0;32m--> 320\u001b[0m has_ret \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mvisit_compound_statement(node\u001b[39m.\u001b[39;49mbody)\n\u001b[1;32m    321\u001b[0m \u001b[39m# finalize\u001b[39;00m\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/compiler.py:254\u001b[0m, in \u001b[0;36mCodeGenerator.visit_compound_statement\u001b[0;34m(self, stmts)\u001b[0m\n\u001b[1;32m    253\u001b[0m \u001b[39mfor\u001b[39;00m stmt \u001b[39min\u001b[39;00m stmts:\n\u001b[0;32m--> 254\u001b[0m     \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mlast_ret \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mvisit(stmt)\n\u001b[1;32m    255\u001b[0m     \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(stmt, ast\u001b[39m.\u001b[39mReturn):\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/compiler.py:771\u001b[0m, in \u001b[0;36mCodeGenerator.visit\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m    770\u001b[0m warnings\u001b[39m.\u001b[39msimplefilter(\u001b[39m\"\u001b[39m\u001b[39mignore\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39mPendingDeprecationWarning\u001b[39;00m)  \u001b[39m# python 3.8\u001b[39;00m\n\u001b[0;32m--> 771\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39msuper\u001b[39;49m()\u001b[39m.\u001b[39;49mvisit(node)\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/ast.py:418\u001b[0m, in \u001b[0;36mNodeVisitor.visit\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m    417\u001b[0m visitor \u001b[39m=\u001b[39m \u001b[39mgetattr\u001b[39m(\u001b[39mself\u001b[39m, method, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mgeneric_visit)\n\u001b[0;32m--> 418\u001b[0m \u001b[39mreturn\u001b[39;00m visitor(node)\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/compiler.py:367\u001b[0m, in \u001b[0;36mCodeGenerator.visit_Assign\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m    366\u001b[0m names \u001b[39m=\u001b[39m _names[\u001b[39m0\u001b[39m]\n\u001b[0;32m--> 367\u001b[0m values \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mvisit(node\u001b[39m.\u001b[39;49mvalue)\n\u001b[1;32m    368\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39misinstance\u001b[39m(names, \u001b[39mtuple\u001b[39m):\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/compiler.py:771\u001b[0m, in \u001b[0;36mCodeGenerator.visit\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m    770\u001b[0m warnings\u001b[39m.\u001b[39msimplefilter(\u001b[39m\"\u001b[39m\u001b[39mignore\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39mPendingDeprecationWarning\u001b[39;00m)  \u001b[39m# python 3.8\u001b[39;00m\n\u001b[0;32m--> 771\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39msuper\u001b[39;49m()\u001b[39m.\u001b[39;49mvisit(node)\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/ast.py:418\u001b[0m, in \u001b[0;36mNodeVisitor.visit\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m    417\u001b[0m visitor \u001b[39m=\u001b[39m \u001b[39mgetattr\u001b[39m(\u001b[39mself\u001b[39m, method, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mgeneric_visit)\n\u001b[0;32m--> 418\u001b[0m \u001b[39mreturn\u001b[39;00m visitor(node)\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/compiler.py:673\u001b[0m, in \u001b[0;36mCodeGenerator.visit_Call\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m    672\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mvisit_Call\u001b[39m(\u001b[39mself\u001b[39m, node):\n\u001b[0;32m--> 673\u001b[0m     fn \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mvisit(node\u001b[39m.\u001b[39;49mfunc)\n\u001b[1;32m    674\u001b[0m     \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(fn, triton\u001b[39m.\u001b[39mlanguage\u001b[39m.\u001b[39mconstexpr):\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/compiler.py:771\u001b[0m, in \u001b[0;36mCodeGenerator.visit\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m    770\u001b[0m warnings\u001b[39m.\u001b[39msimplefilter(\u001b[39m\"\u001b[39m\u001b[39mignore\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39mPendingDeprecationWarning\u001b[39;00m)  \u001b[39m# python 3.8\u001b[39;00m\n\u001b[0;32m--> 771\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39msuper\u001b[39;49m()\u001b[39m.\u001b[39;49mvisit(node)\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/ast.py:418\u001b[0m, in \u001b[0;36mNodeVisitor.visit\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m    417\u001b[0m visitor \u001b[39m=\u001b[39m \u001b[39mgetattr\u001b[39m(\u001b[39mself\u001b[39m, method, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mgeneric_visit)\n\u001b[0;32m--> 418\u001b[0m \u001b[39mreturn\u001b[39;00m visitor(node)\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/compiler.py:754\u001b[0m, in \u001b[0;36mCodeGenerator.visit_Attribute\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m    753\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mvisit_Attribute\u001b[39m(\u001b[39mself\u001b[39m, node):\n\u001b[0;32m--> 754\u001b[0m     lhs \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mvisit(node\u001b[39m.\u001b[39;49mvalue)\n\u001b[1;32m    755\u001b[0m     \u001b[39mreturn\u001b[39;00m \u001b[39mgetattr\u001b[39m(lhs, node\u001b[39m.\u001b[39mattr)\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/compiler.py:771\u001b[0m, in \u001b[0;36mCodeGenerator.visit\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m    770\u001b[0m warnings\u001b[39m.\u001b[39msimplefilter(\u001b[39m\"\u001b[39m\u001b[39mignore\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39mPendingDeprecationWarning\u001b[39;00m)  \u001b[39m# python 3.8\u001b[39;00m\n\u001b[0;32m--> 771\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39msuper\u001b[39;49m()\u001b[39m.\u001b[39;49mvisit(node)\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/ast.py:418\u001b[0m, in \u001b[0;36mNodeVisitor.visit\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m    417\u001b[0m visitor \u001b[39m=\u001b[39m \u001b[39mgetattr\u001b[39m(\u001b[39mself\u001b[39m, method, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mgeneric_visit)\n\u001b[0;32m--> 418\u001b[0m \u001b[39mreturn\u001b[39;00m visitor(node)\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/compiler.py:710\u001b[0m, in \u001b[0;36mCodeGenerator.visit_Call\u001b[0;34m(self, node)\u001b[0m\n\u001b[1;32m    709\u001b[0m \u001b[39mif\u001b[39;00m sys\u001b[39m.\u001b[39mmodules[fn\u001b[39m.\u001b[39m\u001b[39m__module__\u001b[39m] \u001b[39mis\u001b[39;00m triton\u001b[39m.\u001b[39mlanguage\u001b[39m.\u001b[39mcore \u001b[39mor\u001b[39;00m \u001b[39misinstance\u001b[39m(fn, triton\u001b[39m.\u001b[39mlanguage\u001b[39m.\u001b[39mextern\u001b[39m.\u001b[39mExternalFunction):\n\u001b[0;32m--> 710\u001b[0m     ret \u001b[39m=\u001b[39m fn(\u001b[39m*\u001b[39;49margs, _builder\u001b[39m=\u001b[39;49m\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mbuilder, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkws)\n\u001b[1;32m    711\u001b[0m \u001b[39mif\u001b[39;00m fn \u001b[39min\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mvalue_constructor\u001b[39m.\u001b[39mbuiltins\u001b[39m.\u001b[39mvalues():\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/language/core.py:46\u001b[0m, in \u001b[0;36mbuiltin.<locals>.wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m     45\u001b[0m     \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\u001b[39m\"\u001b[39m\u001b[39mDid you forget to add @triton.jit ? (`_builder` argument must be provided outside of JIT functions.)\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m---> 46\u001b[0m \u001b[39mreturn\u001b[39;00m fn(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/language/core.py:813\u001b[0m, in \u001b[0;36mload\u001b[0;34m(pointer, mask, other, cache_modifier, eviction_policy, volatile, _builder)\u001b[0m\n\u001b[1;32m    812\u001b[0m volatile \u001b[39m=\u001b[39m _constexpr_to_value(volatile)\n\u001b[0;32m--> 813\u001b[0m \u001b[39mreturn\u001b[39;00m semantic\u001b[39m.\u001b[39;49mload(pointer, mask, other, cache_modifier, eviction_policy, volatile, _builder)\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/language/semantic.py:759\u001b[0m, in \u001b[0;36mload\u001b[0;34m(ptr, mask, other, cache_modifier, eviction_policy, is_volatile, builder)\u001b[0m\n\u001b[1;32m    758\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m mask:\n\u001b[0;32m--> 759\u001b[0m     \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\u001b[39m\"\u001b[39m\u001b[39m`other` cannot be provided without `mask`\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m    761\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m other:\n\n\u001b[0;31mValueError\u001b[0m: `other` cannot be provided without `mask`\n\nThe above exception was the direct cause of the following exception:\n\n\u001b[0;31mCompilationError\u001b[0m                          Traceback (most recent call last)\nCell \u001b[0;32mIn[78], line 11\u001b[0m\n\u001b[1;32m      8\u001b[0m clip \u001b[39m=\u001b[39m CLIPVisionEmbeddings()\u001b[39m.\u001b[39mto(\u001b[39m'\u001b[39m\u001b[39mcuda\u001b[39m\u001b[39m'\u001b[39m)\n\u001b[1;32m     10\u001b[0m \u001b[39m# forward pass\u001b[39;00m\n\u001b[0;32m---> 11\u001b[0m y_fus1 \u001b[39m=\u001b[39m fast_clip_vision_embeddings(x, clip\u001b[39m.\u001b[39;49mclass_embedding, clip\u001b[39m.\u001b[39;49mpatch_embedding\u001b[39m.\u001b[39;49mweight, clip\u001b[39m.\u001b[39;49mposition_embedding\u001b[39m.\u001b[39;49mweight, weight, bias, eps\u001b[39m=\u001b[39;49m\u001b[39m1e-5\u001b[39;49m)\n\u001b[1;32m     12\u001b[0m y_ref2 \u001b[39m=\u001b[39m clip_vision_embeddings2(x, clip\u001b[39m.\u001b[39mclass_embedding, clip\u001b[39m.\u001b[39mpatch_embedding\u001b[39m.\u001b[39mweight, clip\u001b[39m.\u001b[39mposition_embedding\u001b[39m.\u001b[39mweight, weight, bias, eps\u001b[39m=\u001b[39m\u001b[39m1e-5\u001b[39m)\n\u001b[1;32m     13\u001b[0m y_ref \u001b[39m=\u001b[39m clip_vision_embeddings(x, clip\u001b[39m.\u001b[39mclass_embedding, clip\u001b[39m.\u001b[39mpatch_embedding\u001b[39m.\u001b[39mweight, clip\u001b[39m.\u001b[39mposition_embedding\u001b[39m.\u001b[39mweight, weight, bias, eps\u001b[39m=\u001b[39m\u001b[39m1e-5\u001b[39m)\n\nCell \u001b[0;32mIn[77], line 144\u001b[0m, in \u001b[0;36mfast_clip_vision_embeddings\u001b[0;34m(pixel_values, class_embedding, patch_embedding, position_embedding, ln_weight, ln_bias, eps)\u001b[0m\n\u001b[1;32m    142\u001b[0m embeddings \u001b[39m=\u001b[39m torch\u001b[39m.\u001b[39mcat([class_embeds, patch_embeds], dim\u001b[39m=\u001b[39m\u001b[39m1\u001b[39m)  \u001b[39m# shape = [*, 257, 1024]\u001b[39;00m\n\u001b[1;32m    143\u001b[0m \u001b[39massert\u001b[39;00m embeddings\u001b[39m.\u001b[39mis_contiguous()\n\u001b[0;32m--> 144\u001b[0m embeddings \u001b[39m=\u001b[39m clip_positions_and_layernorm(embeddings, position_embedding, ln_weight, ln_bias, eps)\n\u001b[1;32m    146\u001b[0m \u001b[39mreturn\u001b[39;00m embeddings\n\nCell \u001b[0;32mIn[77], line 125\u001b[0m, in \u001b[0;36mclip_positions_and_layernorm\u001b[0;34m(x, positions, weight, bias, eps)\u001b[0m\n\u001b[1;32m    123\u001b[0m num_warps \u001b[39m=\u001b[39m \u001b[39mmin\u001b[39m(\u001b[39mmax\u001b[39m(\u001b[39m1024\u001b[39m \u001b[39m/\u001b[39m\u001b[39m/\u001b[39m \u001b[39m256\u001b[39m, \u001b[39m1\u001b[39m), \u001b[39m8\u001b[39m)\n\u001b[1;32m    124\u001b[0m \u001b[39m# enqueue kernel\u001b[39;00m\n\u001b[0;32m--> 125\u001b[0m _clip_embed_fused[(M,)](x_arg, y, positions, weight, bias,\n\u001b[1;32m    126\u001b[0m \t\t\t\t\t\t\teps, num_warps\u001b[39m=\u001b[39;49mnum_warps)\n\u001b[1;32m    128\u001b[0m \u001b[39mreturn\u001b[39;00m y\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/runtime/jit.py:106\u001b[0m, in \u001b[0;36mKernelInterface.__getitem__.<locals>.launcher\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m    105\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mlauncher\u001b[39m(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs):\n\u001b[0;32m--> 106\u001b[0m     \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mrun(\u001b[39m*\u001b[39;49margs, grid\u001b[39m=\u001b[39;49mgrid, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\nFile \u001b[0;32m<string>:41\u001b[0m, in \u001b[0;36m_clip_embed_fused\u001b[0;34m(A, Out, Position, Weight, Bias, eps, grid, num_warps, num_stages, extern_libs, stream, warmup)\u001b[0m\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/compiler.py:1256\u001b[0m, in \u001b[0;36mcompile\u001b[0;34m(fn, signature, device, constants, num_warps, num_stages, extern_libs, configs, cc, warm_cache_only)\u001b[0m\n\u001b[1;32m   1250\u001b[0m llir_name \u001b[39m=\u001b[39m \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m{\u001b[39;00mname\u001b[39m}\u001b[39;00m\u001b[39m.llir\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m   1251\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m fn_cache_manager\u001b[39m.\u001b[39mhas_file(cubin_name) \u001b[39mor\u001b[39;00m \\\n\u001b[1;32m   1252\u001b[0m    \u001b[39mnot\u001b[39;00m fn_cache_manager\u001b[39m.\u001b[39mhas_file(data_name) \u001b[39mor\u001b[39;00m \\\n\u001b[1;32m   1253\u001b[0m    \u001b[39mnot\u001b[39;00m fn_cache_manager\u001b[39m.\u001b[39mhas_file(ptx_name) \u001b[39mor\u001b[39;00m \\\n\u001b[1;32m   1254\u001b[0m    \u001b[39mnot\u001b[39;00m fn_cache_manager\u001b[39m.\u001b[39mhas_file(ttir_name) \u001b[39mor\u001b[39;00m \\\n\u001b[1;32m   1255\u001b[0m    \u001b[39mnot\u001b[39;00m fn_cache_manager\u001b[39m.\u001b[39mhas_file(llir_name):\n\u001b[0;32m-> 1256\u001b[0m     asm, shared, kernel_name \u001b[39m=\u001b[39m _compile(fn, signature, device, constants, configs[\u001b[39m0\u001b[39;49m], num_warps, num_stages,\n\u001b[1;32m   1257\u001b[0m                                         extern_libs, \u001b[39m\"\u001b[39;49m\u001b[39mcubin\u001b[39;49m\u001b[39m\"\u001b[39;49m, cc)\n\u001b[1;32m   1258\u001b[0m     metadata \u001b[39m=\u001b[39m {\u001b[39m\"\u001b[39m\u001b[39mname\u001b[39m\u001b[39m\"\u001b[39m: kernel_name, \u001b[39m\"\u001b[39m\u001b[39mshared\u001b[39m\u001b[39m\"\u001b[39m: shared, \u001b[39m\"\u001b[39m\u001b[39mnum_warps\u001b[39m\u001b[39m\"\u001b[39m: num_warps, \u001b[39m\"\u001b[39m\u001b[39mnum_stages\u001b[39m\u001b[39m\"\u001b[39m: num_stages}\n\u001b[1;32m   1259\u001b[0m     fn_cache_manager\u001b[39m.\u001b[39mput(asm[\u001b[39m\"\u001b[39m\u001b[39mcubin\u001b[39m\u001b[39m\"\u001b[39m], cubin_name)\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/compiler.py:892\u001b[0m, in \u001b[0;36m_compile\u001b[0;34m(fn, signature, device, constants, specialization, num_warps, num_stages, extern_libs, output, cc)\u001b[0m\n\u001b[1;32m    889\u001b[0m \u001b[39massert\u001b[39;00m output \u001b[39min\u001b[39;00m valid_outputs, \u001b[39m\"\u001b[39m\u001b[39moutput should be one of [\u001b[39m\u001b[39m%s\u001b[39;00m\u001b[39m], but get \u001b[39m\u001b[39m\\\"\u001b[39;00m\u001b[39m%s\u001b[39;00m\u001b[39m\\\"\u001b[39;00m\u001b[39m\"\u001b[39m \u001b[39m%\u001b[39m (\u001b[39m'\u001b[39m\u001b[39m,\u001b[39m\u001b[39m'\u001b[39m\u001b[39m.\u001b[39mjoin(valid_outputs), output)\n\u001b[1;32m    891\u001b[0m \u001b[39m# triton-ir\u001b[39;00m\n\u001b[0;32m--> 892\u001b[0m module, _ \u001b[39m=\u001b[39m make_triton_ir(fn, signature, specialization, constants)\n\u001b[1;32m    893\u001b[0m \u001b[39mif\u001b[39;00m output \u001b[39m==\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mttir\u001b[39m\u001b[39m\"\u001b[39m:\n\u001b[1;32m    894\u001b[0m     \u001b[39mreturn\u001b[39;00m module\n\nFile \u001b[0;32m~/anaconda3/envs/tmpenv2/lib/python3.10/site-packages/triton/compiler.py:843\u001b[0m, in \u001b[0;36mmake_triton_ir\u001b[0;34m(fn, signature, specialization, constants)\u001b[0m\n\u001b[1;32m    841\u001b[0m     \u001b[39mif\u001b[39;00m node \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39mor\u001b[39;00m \u001b[39misinstance\u001b[39m(e, (\u001b[39mNotImplementedError\u001b[39;00m, CompilationError)):\n\u001b[1;32m    842\u001b[0m         \u001b[39mraise\u001b[39;00m e\n\u001b[0;32m--> 843\u001b[0m     \u001b[39mraise\u001b[39;00m CompilationError(fn\u001b[39m.\u001b[39msrc, node) \u001b[39mfrom\u001b[39;00m \u001b[39me\u001b[39;00m\n\u001b[1;32m    844\u001b[0m ret \u001b[39m=\u001b[39m generator\u001b[39m.\u001b[39mmodule\n\u001b[1;32m    845\u001b[0m \u001b[39m# module takes ownership of the context\u001b[39;00m\n\n\u001b[0;31mCompilationError\u001b[0m: at 18:17:\ndef _clip_embed_fused(\n\tA,         # *Pointer* to first input vector (257xN).\n\tOut,       # *Pointer* to output vector (257xN).\n\tPosition,  # *Pointer* position vector (257xN).\n\tWeight,    # *Pointer* weight vector (N).\n\tBias,      # *Pointer* bias vector (N).\n\teps: tl.constexpr,\n):\n\t# position of elements processed by this program\n\trow = tl.program_id(0)\n\tOut += row * 1024\n\tA += row * 1024\n\tPosition += row * 1024\n\n\t# loads\n\tcols = tl.arange(0, 1024)\n\tmask = cols < 1024\n\ta = tl.load(A + cols, other=0.).to(tl.float32)\n                 ^"
}

Contributor guide