Skip to content

kthvalue() cannot be used with complex or bool type of a 1D or more D tensor but kthvalue() can be used with complex or bool type of a 0D tensor #126658

Open
@hyperkai

Description

@hyperkai

🐛 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    module: edge casesAdversarial inputs unlikely to occur in practicetriagedThis issue has been looked at a team member, and triaged and prioritized into an appropriate module

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions