Open
Description
🐛 Describe the bug
It seems like kthvalue() cannot be used with complex
type of a 1D or more D tensor according to the errors as shown below:
complex
type of a 1D tensor:
import torch
my_tensor = torch.tensor([0.+0.j, 1.+0.j, 2.+0.j], device='cpu')
torch.kthvalue(input=my_tensor, k=2) # RuntimeError: "kthvalue_cpu" not implemented for 'ComplexFloat'
my_tensor = torch.tensor([0.+0.j, 1.+0.j, 2.+0.j], device='cuda:0')
torch.kthvalue(input=my_tensor, k=2) # RuntimeError: "kthvalue_cuda" not implemented for 'ComplexFloat'
bool
type of a 1D tensor:
import torch
my_tensor = torch.tensor([True, False, True], device='cpu')
torch.kthvalue(input=my_tensor, k=2) # RuntimeError: "kthvalue_cpu" not implemented for 'Bool'
my_tensor = torch.tensor([True, False, True], device='cuda:0')
torch.kthvalue(input=my_tensor, k=2) # RuntimeError: "kthvalue_cuda" not implemented for 'Bool'
complex
type of a 2D tensor:
import torch
my_tensor = torch.tensor([[0.+0.j, 1.+0.j], [2.+0.j, 3.+0.j]], device='cpu')
torch.kthvalue(input=my_tensor, k=2) # RuntimeError: "kthvalue_cpu" not implemented for 'ComplexFloat'
my_tensor = torch.tensor([[0.+0.j, 1.+0.j], [2.+0.j, 3.+0.j]], device='cuda:0')
torch.kthvalue(input=my_tensor, k=2) # RuntimeError: "kthvalue_cuda" not implemented for 'ComplexFloat'
bool
type of a 2D tensor:
import torch
my_tensor = torch.tensor([[True, False], [False, True]], device='cpu')
torch.kthvalue(input=my_tensor, k=2) # RuntimeError: "kthvalue_cpu" not implemented for 'Bool'
my_tensor = torch.tensor([[True, False], [False, True]], device='cuda:0')
torch.kthvalue(input=my_tensor, k=2) # RuntimeError: "kthvalue_cuda" not implemented for 'Bool'
But kthvalue() can be used with complex
or bool
type of a 0D tensor as shown below:
complex
type of a 0D tensor:
import torch
my_tensor = torch.tensor(0.+0.j, device='cpu')
torch.kthvalue(input=my_tensor, k=1)
# torch.return_types.kthvalue(
# values=tensor(0.+0.j),
# indices=tensor(0))
my_tensor = torch.tensor(0.+0.j, device='cuda:0')
torch.kthvalue(input=my_tensor, k=1)
# torch.return_types.kthvalue(
# values=tensor(0.+0.j, device='cuda:0'),
# indices=tensor(0, device='cuda:0'))
bool
type of a 0D tensor:
import torch
my_tensor = torch.tensor(True, device='cpu')
torch.kthvalue(input=my_tensor, k=1)
# torch.return_types.kthvalue(
# values=tensor(True),
# indices=tensor(0))
my_tensor = torch.tensor(True, device='cuda:0')
torch.kthvalue(input=my_tensor, k=1)
# torch.return_types.kthvalue(
# values=tensor(True),
# indices=tensor(0))
Versions
import torch
torch.__version__ # 2.2.1+cu121